문서유형ㅣ기술정보
분야ㅣ백업/복구
문서번호ㅣTBATI029
개요
특정 사유로 DB를 비정상적으로 종료할 시 down 및 로그 포함한 기동 절차에 대해 안내합니다.
방법
1. 모든 DB 접속세션 종료
WAS down 등으로 모든 DB 접속세션을 끊습니다. (jdown, kill -9 [jeus pid])
2. 세션 rollback 예상시간 확인
SQL> select sess_id, start_time, used_blk, EXP_RB_TIME from v$transaction;
SESS_ID START_TIME USED_BLK EXP_RB_TIME
---------- -------------------------------- ---------- -----------
33 2016-04-22 19:35:32 142690 970
1 row selected.
3. DB 강제 종료
rollback 예상시간이 오래 걸려 완료까지 기다릴 수 없을 경우, checkpoint 수행 후 강제로 DB를 종료합니다.
-- checkpoint 수행 SQL> ALTER SYSTEM CHECKPOINT;
4. tbdown abort
5. recovery 수행
다음 tbboot 시 recovery를 진행합니다.
[cache recovery 진행] [ACF][0] 01 tbsvr_mo:166 [0] acquires Instance Recovery lock(MOUNT mode) [ACF][0] 01 tbsvr_mo:230 [0] holding Instance Recovery locks(RECOVERY mode) [CLC][0] 01 tc_recov:1761 [0] TC RECOVERY...PREPARE … [CLC][0] 01 tc_recov:1249 THREAD#0 logfile scanned. flushed=[582.4194386/0000.02c5dd33]. [CLC][0] 01 tc_recov:1271 THREAD#0, Recovery start tsn progress.(0000.02c02bdc => 0000.02c075d6) [CLC][0] 01 tc_recov:1400 THREAD#0 needs REPLAY, from 0000.02c075d6, (5786040 LOG_BLKs) [CLC][0] 01 tc_cf_df:2012 DATAFILES OPEN 0000.02c5dd34 [CLC][0] 01 tc_recov:1990 [0] TC RECOVERY...START. incar no 0 … [CLC][0] 01 tc_rset.:1382 RSET inits claiming bufs 632142 [CLC][0] 01 tc_rset.:1451 no more free bh for recovery [CLC][0] 01 tc_rset.:1485 complete_ir=0 claiming bufs (reco: 204512/632142, cur: 427630, skip: 0) [CLC][0] 01 tc_recov:2065 [0] can perform Partial Instance Recovery [cache recovery 1st pass Done.] [CLC][0] 01 tc_recov:2073 [0] IR 1st Pass Done … [cache recovery 2nd pass Done.] [CLC][0] 01 tc_recov:2018 [0] IR 2nd Pass Done … [cache recovery 완료] [CLC][0] 01 tc_recov:2090 [0] TC RECOVERY...DONE ... [Tx recovery 진행] [CT-][0] 01 tx_recov:1001 TX RECOVERY...PREPARE [CT-][0] 01 tx_recov:1094 TX RECOVERY...START (dead 34) … [DB는 open 되고 Tx recovery는 특정세션에서 계속 진행.] [FRM][0] 01 tbsvr_ma:1496 Server is running at NORMAL mode (bootmode : NORMAL) … [Tx recovery 완료] [CT-][0] 01 tx_recov:696 TX RECOVERY...DONE
참고
세션이 종료되었을 때 진행 중이던 트랜잭션이 있다면, sess_recoverting이 수행됩니다.이때 tbdown immediate 명령으로 종료했을 경우, sess_recoverting 이 완료될 때까지 기다렸다가 DB가 down 되며 tracelog에서는 30초 간격으로 나타나는 메시지를 통해 sess_recoverting 중임을 확인할 수 있습니다.tbsvr_er:063 THROW. ec=ERROR_SERVER_IN_SHUTDOWN(-12039) [ Server instance is shutting down. ] (csr_id:4294967295) [tbsvr_wthr.c:2145:wthr_get_new_cli_con] [30초 간격으로 출력] tbsvr_sh:229 shutdown: waiting for releasing SESS lock (tid=38, thr_status=THR_STAT_WAITING, sess_status=SESS_RECOVERING) tbsvr_sh:229 shutdown: waiting for releasing SESS lock (tid=38, thr_status=THR_STAT_WAITING, sess_status=SESS_RECOVERING) …
주의
cache recovery는 수행하지 않고 건너뛸 수 없습니다.또한, cache recovery 진행 도중 instance 종료 후 재 시작을 하게 된다면 처음부터 다시 시작하게 됩니다.