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 mount
2. 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.LOG
3. 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
startup
6. 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
startup
10. 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.