2008-12-01

ORACLE SIMPLE RECOVERY

Należy pamiętać że nowa baza mimo że zmienimy nazwę będzie miała taki sam DBID czyli nie możemy jej dopisać do RMAN-a z bazą źródłową, sytucację tę możemy zmienić stosując polecenie NID

1. Na bazie źródłowej w trybie mount wygenerować skrypt tworzący pliki kontrolne:
ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS '[path]'

2. Skopiować:
- wszystkie pliki danych
- plik pfile
- plik haseł
- nie kopiować plików redologs oraz controlfiles (można także pominąć pliki przestrzeni TEMP i UNDO jednak trzeba będzie potem kombinować)

3. Edycja pliku PFILE:
- ścieżki do plików logów
- ścieżki dla plików trace
- nazwa bazy

4. Edycja skryptu tworzącego pliki kontrolne:
- ! usunąć puste linie
- ścieżki plików danych
- ścieżka pliku TEMP
- nazwa bazy
- zamiana lini REUSE DATABASE na SET DATABASE
- usunąć linię RECOVER DATABASE USING BACKUP CONTROLFILE

5. Stworzyć w nowej lokalizacji odpowiednie katalogi zgodne z powyższymi

6. W w$ utworzyć service dla nowej bazy
oradim -new -sid [nowy_sid] -startmode M -pfile [init_file]

7. W razie potrzeby stworzyć nowy plik haseł:
orapwd file=PWD[db_name] password=[pass] entries=[max_liczba_wpisów]

8. Ustawić zmienną ORACLE_HOME i ORACLE_SID

9. wykonać skrypt tworzący nowe pliki kontrolne

10. otworzyć bazę z wyczyszczonymi redologami
ALTER DATABASE OPEN RESETLOGS

W przypadku braku pliku UNDO należy zakomentować w pliku INIT wszelkie zapisy dotyczące UNDO następnie otworzyć bazę z wyczyszczonymi logami, usunąć przestrzeń UNDO i stworzyć ją na nowo poleceniem:
CREATE UNDO TABLESPACE [nazwa z pliku init] DATAFILE '[path]' SIZE [nr]M;

12. ustawić przestrzeń tymczasową
ALTER TABLESPACE TEMP ADD TEMPFILE '[path]' SIZE 41943040 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;

W przypadku gdy była odtwarzana przestrzeń UNDO odkomentować wpisy w INIT

Do zmiany DBID wykonujemy:
1. uruchamiamy bazę w trybie MOUNT
2a. zmiana nazwy bazy i DBID:
nid target=sys/[passwd]@[dbsid] dbname=[newname]
2b. zmiana DBID:
nid target=/
3. zamykamy bazę
4. jeżeli zmienialiśmy nazwę to zmienić w pliku INIT
5. jeżeli zmienialiśmy nazwę to zmienić nazwę pliku haseł

Jeżeli chcemy zmienić tylko nazwę bazy:
nid target=sys/[passwd]@[dbsid] dbname=[newname] setname=yes logfile=log.out