Oracle/Admin

[Admin] ORA-00600[4193] 장애 해결 방안

알 수 없는 사용자 2017. 3. 16. 16:47

1. 문제 발생

  - Alert.log에 다음과 같은 에러 발생

ORA-00600: internal error code, arguments: [4193], [], [], [], [], [], [], [], [], [], [], []



2. 문제 확인

  - Alert.log에 적힌 trace파일을(예. [SID]_smon_3124_ORA_00600.trc) 확인하면 REDO의 seq와 UNDO의 seq가 다른 것을 확인할 수 있음.

    - 주로 정상적으로 Oracle이 종료되지 않았을 때 발생함.


Error 600 in redo application callback

Dump of change vector:

TYP:0 CLS:26 AFN:3 DBA:0x00c021c0 OBJ:4294967295 SCN:0x0001.e1a4aac5 SEQ:2 OP:5.1 ENC:0 RBL:0

ktudb redo: siz: 80 spc: 6620 flg: 0x0010 seq: 0x43af rec: 0x0c

            xid:  0x0005.018.0004a852  

ktubl redo: slt: 24 rci: 0 opc: 5.7 [objn: 0 objd: 0 tsn: 0]

Undo type:  Regular undo        Begin trans    Last buffer split:  No 

Temp Object:  No 

Tablespace Undo:  No 

             0x00000000  prev ctl uba: 0x00c021c0.43af.0a 

prev ctl max cmt scn:  0x0001.e1a655f1  prev tx cmt scn:  0x0001.e1a6560a 

txn start scn:  0xffff.ffffffff  logon user: 0  prev brb: 12591550  prev bcl: 0 BuExt idx: 0 flg2: 0

Block after image is corrupt: 

buffer rdba: 0x00c021c0

scn: 0x0001.e1a4aac5 seq: 0x02 flg: 0x04 tail: 0xaac50202

frmt: 0x02 chkval: 0xac21 type: 0x02=KTU UNDO BLOCK

Hex dump of block: st=0, typ_found=1

Dump of memory from 0x000007FF10444000 to 0x000007FF10446000


********************************************************************************

UNDO BLK:  

xid: 0x0005.021.0004a7b8  seq: 0x43ab cnt: 0x3f  irb: 0x3f  icl: 0x0   flg: 0x0000


3. 해결 방안

  - UNDO 테이블스페이스 재구성

-- UNDO 확인
SQL> show parameter undo

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     900
undo_tablespace                      string      UNDOTBS1

-- DB MOUNT 상태로 변경
SQL> shutdown immediate
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.

SQL> startup mount
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area  208769024 bytes
Fixed Size                  2253776 bytes
Variable Size             134220848 bytes
Database Buffers           67108864 bytes
Redo Buffers                5185536 bytes
데이터베이스가 마운트되었습니다.

-- UNDO 관리방법을 수동으로 변경
SQL> alter system set undo_management='MANUAL' scope=spfile;

시스템이 변경되었습니다.

-- DB 재시작
SQL> shutdown immediate;
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다

SQL> startup
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area  208769024 bytes
Fixed Size                  2253776 bytes
Variable Size             134220848 bytes
Database Buffers           67108864 bytes
Redo Buffers                5185536 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.


-- UNDO 관리방법 변경 확인
SQL> show parameter undo

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      MANUAL
undo_retention                       integer     900
undo_tablespace                      string      UNDOTBS1

-- 새로운 UNDO 테이블스페이스 생성
SQL> create undo tablespace UNDOTBS_02 datafile 'C:\app\Administrator\oradata\[SID]\UNDOTBS02.DBF' SIZE 500M;

테이블스페이스가 생성되었습니다.

-- 새로운 UNDO 테이블스페이스로 변경
SQL> alter system set undo_tablespace='UNDOTBS_02' scope=spfile;

시스템이 변경되었습니다.

-- UNDO 관리 방법을 자동으로 변경
SQL> alter system set undo_management='AUTO' scope=spfile;


-- DB 재시작
시스템이 변경되었습니다.
SQL> shutdown immediate
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.

SQL> startup
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area  208769024 bytes
Fixed Size                  2253776 bytes
Variable Size             134220848 bytes
Database Buffers           67108864 bytes
Redo Buffers                5185536 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.

-- 기존 UNDO 테이블스페이스 삭제
SQL> drop tablespace UNDOTBS1 including contents and datafiles;

테이블스페이스가 삭제되었습니다.