Wednesday, December 17, 2014

Putty - session time out


Putty je odličan program koji administratorima omogućava remote (SSH) pristup serverima radi administracije. Ja ga često koristim. Jedina mana putty-a je što program kida sve neaktivne sesije između radne stanice i servera koje traju duže od jedan sat. To ponekad može biti problem ako se, pomoći putty-a, izvršavaju procedure koje traju duže od sat vremena. Kada se sesija sa serverom prekine nemoguće je utvrditi do kog stepena je završena pokrenuta procedura, iako ona na serveru i dalje radi, sve dok se sama procedura ne završi.

Ovaj se problem može riješiti podešavanjem samog putty-a:

1. U lijevom panelu odabrati menu Connection:


2. U polje nakon labele Seconds between keepalives unijeti broj veći od 0 (od 1 do 1800) i čekirati check box Enable TCP keepalives:


3. Odabrati menu Session (u lijevom panelu), zatim odabrati Default settings u desnom panelu:


4. Na kraju kliknuti na dugme Save.

Od sada sve SSH sesije koje se pokrenu sa ovim putty-e nemaju time-out ograničenje.



Wednesday, December 3, 2014

ORA-00600: internal error code, arguments: [4194], [11], [8], [], [],


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.