U slučaju da ne možete startovati Oracle bazu podataka, tj. komandom startup baza se samo za trenutak "podigne" i nakon toga se ponovo "obori", pregledajte bazni alert.log fajl. Ako u njemu nađete grešku oblika:
ORA-00600: internal error code, arguments: [4194], [11], [8], [], [],
Uz dodatne informacije kao što su:
Wed Dec 03 09:29:15 2014
Completed: ALTER DATABASE OPEN
Wed Dec 03 09:29:16 2014
Doing block recovery for file 5 block 1079
Block recovery from logseq 2548, block 70 to scn 70388340
Wed Dec 03 09:29:16 2014
Recovery of Online Redo Log: Thread 1 Group 1 Seq 2548 Reading mem 0
Mem# 0: E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE_SID\REDO01.LOG
Block recovery completed at rba 2548.80.16, scn 0.70388342
Znači da vam je UNDO tablespace u nekonzistentnom stanju jer je jedan REDO LOG fajl (u ovom slučaju REDO01.LOG) oštećen - informacije u tom LOG fajlu se ne slažu sa informacijama u UNDO tablespace-u. Problem je što u ovom slučaju baza ulazi u loop pokušavajući da odradi recovery UNDO tablespace-a iz kojeg ne može da "izađe".
Nastali problem se može riješiti na dva metoda:
1. Ukoliko baza radi u ARCHIVELOG mode-u i ukoliko postoji validan backup baze dovoljno je uraditi RESTORE&RECOVERY proceduru do trenutka prije nego što je došlo do problema na bazi.
2. Drugi metod se primjenjuje ukoliko ne postoji validan backup baze ili baza ne radi u ARCHIVELOG mode-u. To je procedura kojim se trenutni UNDO tablespace proglašava za nepotrebnim i kreira se novi UNDO tablespace (naravno uz gubitak podataka koji se u trenutku nastanka problema nisu upisali iz RAM memorije u REDO LOG fajl).
Ja ći opisati ovaj drugi metod rešavanja nastalog problema.
Procedura je sledeća:
1. Startovati bazu u MOUNT modu:
startup mount2. Provjeriti stanje REDO LOG-ova:
SQL> set lin 1000 SQL> select * from v$logfile; GROUP# STATUS TYPE MEMBER IS_ ---------- ------- ------- ----------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ------------------------------------------------------------ --- 3 STALE ONLINE E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE_SID\REDO03.LOG NO 2 STALE ONLINE E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE_SID\REDO02.LOG NO 1 ONLINE E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE_SID\REDO01.LOG3. Provjeriti UNDO parametre:
SQL> show parameter undo NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_management string AUTO undo_retention integer 900 undo_tablespace string UNDOTBS
-- Default-ni UNDO tablespace je: UNDOTBS
4. Promijeniti UNDO_MANAGMENT parametar baze na MANUAL:
alter system set undo_management='MANUAL' scope=spfile;5. Resetovati bazu:
shutdown immediate startup6. Kreirati novi UNDO tablespace:
create undo tablespace UNDOTBS2 datafile 'E:\oracle\product\10.2.0\oradata\ORACLE_SID\undotbs02.dbf' size 1G autoextend on;7. Podesiti da novi UNDO tablespace bude default-ni bazni UNDO tablespace:
alter system set undo_tablespace='UNDOTBS2' scope=spfile;8. Promijeniti UNDO_MANAGMENT parametar baze na AUTO:
alter system set undo_management='AUTO' scope=spfile;9. Resetovati bazu:
shutdown immediate startup10. Provjeriti UNDO parametre:
SQL> show parameter undo NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_management string AUTO undo_retention integer 900 undo_tablespace string UNDOTBS2
Problem riješen.