Mam zadanie stworzyć tabele na użytkowniku hr robię create table tabela zrobiona wszystko jest. Nastepnie robię backup connect system as sys dba wykonuje polecenia SHUTDOWN IMMEDIATE;
STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN; nastepnie wchodzę w rmana $RMAN connect target hr i BACKUP DATABASE; Po skonczonym backupie kasuje tabele drop table i chce ją przywrócić z kopi zapasowej wiec znow connect system as sys $RMAN connect target hr i robię coś takiego:
RUN{
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN;
}
pisze ze wszystko się udało po czym wchodzę w developera tabeli nadal nie ma. Gdzie popełniłem błąd pomoże ktoś ? wersja oracle 11 a developera 18.3

- Rejestracja:około 6 lat
- Ostatnio:prawie 6 lat
- Postów:5
- Rejestracja:prawie 10 lat
- Ostatnio:około 3 godziny
- Postów:2368
Jak się zastanowisz, to jest to logiczne. Przywracasz bazę z backupu i wykonujesz jej recovery, tj. odtwarzasz pliki z backupu i aplikujesz archive oraz redo logi. A że w redo logach masz "DROP TABLE", to recovery uwzględnia również tę operację ;-)
Jeśli masz włączoną funkcjonalność "RECYCLEBIN", to wystarczy:
FLASHBACK TABLE FOO.BAR TO BEFORE DROP;
Jeśli nie masz, to RMAN może odtworzyć bazę do momentu sprzed dropu. Zauważ, że w ten sposób, przez jedną tabelę cofasz stan całej bazy. Nie zawsze o to chodzi. Czasem stan innych tabel powinien zostać nieruszony. Możesz się posiłkować pomocniczą instancją bazy, odtworzyć tam tabelę na moment przed usunięciem, wyeksportować tabelę i zaimportować do "naprawianej bazy".

- Rejestracja:około 6 lat
- Ostatnio:prawie 6 lat
- Postów:5
okej dzięki za wyjaśnienie :) a w jaki sposób w RMANIE odtworzyć baze z przed dropu bo patrzę w tą dokumentację oraclową ale ciężko znaleźć czy to by było coś takiego ? FLASHBACK DATABASE
TO RESTORE POINT BEFORE_CHANGES;
- Rejestracja:prawie 10 lat
- Ostatnio:około 3 godziny
- Postów:2368
O ile masz utworzony RESTORE POINT o nazwie "BEFORE_CHANGES" ;)
Jeśli nie, to masz wybór jak dokumentacja sugeruje: https://docs.oracle.com/cd/B28359_01/server.111/b28286/img_text/flashback_database.htm
Dla RECOVER DATABASE masz podobną składnię, tj. możliwość odtworzenia do TIME/CHANGE/CANCEL.
https://docs.oracle.com/cd/E18283_01/server.112/e16604/ch_twelve033.htm
W praktyce albo użytkownik mówi Ci, że pomylił się o 12:07 i znasz orientacyjnie czas, albo jesteś w stanie wydłubać z bazy, że dane polecenie zostało wykonane o określonej porze, czy wydłubać numer zmiany.
Przydatne tabelki:
- DBA_RECYCLEBIN
- FLASHBACK_TRANSACTION_QUERY (potrzebne jest wcześniejsze włączenie czegoś co nazywa się "supplemental logging")
- Rejestracja:około 6 lat
- Ostatnio:7 miesięcy
- Postów:216
Jeśli chodzi o odzyskanie jednej tabeli to nie robisz niepełnego odtwarzania całej bazy bo stracisz inne dane.
Wystarczy w SQL: FLASHBACK TABLE nazwa TO BEFORE DROP;
RMAN nie ma tu nic do roboty.
W bardziej zaawansowanych scenariuszach trzeba użyć tzw. TSPITR - odtwarzanie przestrzeni tabel do wybranego punktu w czasie.
Generalna zasada to odtwarzanie tylko tego co trzeba, bo to kosztowna operacja. Usunąłeś tabelę - przywróć ją z kosza. Usunąłeś plik danych - przywróć go (restore) i zrób recovery. Usunąłeś plik przestrzeni tabel SYSTEM - no tu akurat trzeba odtworzyć całą bazę, bo się instancja zatrzyma :)

- Rejestracja:około 6 lat
- Ostatnio:prawie 6 lat
- Postów:5
Z kosza najłatwiej chyba ale niestety w szkole dostałem zadanie żeby to zrobić za pomocą RMAN'a -.-
- Rejestracja:około 6 lat
- Ostatnio:7 miesięcy
- Postów:216
W takim razie odtwarzanie do punktu w czasie sprzed usunięcia.

- Rejestracja:około 6 lat
- Ostatnio:prawie 6 lat
- Postów:5
Tak też zrobiłem. Dzięki za pomoc