본문 바로가기
Dev/Oracle

[Oracle] Database shutdown Hang이 걸렸을 때 / shutdown abort 후 ORA-00265

by 흰바다제비 2022. 8. 28.
728x90

Oracle Database를 NOARCHIVELOG mode → ARCHIVELOG mode 로 변경하기 위해 DB 재기동을 했다.

sqlplus에서 shutdown 명령어를 날렸으나 10분째 반응이 없다..

 

Active process 29056 user 'oracle' program 'oracle@vc7-19', waiting for 'SQL*Net message from client'
Active process 26342 user 'oracle' program 'oracle@vc7-19', waiting for 'SQL*Net message from client'
Active process 22852 user 'oracle' program 'oracle@vc7-19', waiting for 'SQL*Net message from client'
.
.
.
SHUTDOWN: waiting for logins to complete.

기다리다가 로그를 확인해 보니 위와 같은 로그가 발생했다.

기존에 연결된 세션이 있어 정상적으로 종료되지 않는 듯 하다.

 

다른 세션으로 접속해서 shutdown abort 진행.

SQL> conn /as sysdba
Connected to an idle instance.
SQL> shutdown abort;
ORACLE instance shut down.
SQL> startup mount             
ORACLE instance started.

Total System Global Area 1.5032E+10 bytes
Fixed Size		   13632600 bytes
Variable Size		 2650800128 bytes
Database Buffers	 1.2348E+10 bytes
Redo Buffers		   19918848 bytes
Database mounted.
SQL> alter database archivelog;
alter database archivelog
*
ERROR at line 1:
ORA-00265: instance recovery required, cannot set ARCHIVELOG mode

 

ORA-00265 에러 발생..

원인은 shutdown abort 커맨드를 날렸기 때문에, 온라인 로그가 데이터 파일을 복구하는데 충분하지 않을 수 있어 미디어 복구를 할 수 없다고 한다. 

 

※ 원문 : The database either crashed or was shutdown with the ABORT option. Media recovery cannot be enabled because the online logs may not be sufficient to recover the current datafiles.

 

해결 방법데이터베이스 오픈을 하고, shutdown 커맨드를 normal이나 immediate 옵션을 주어 실행한다.

alter database open;
shutdown immediate

 

※ 원문 : Open the database and then enter the SHUTDOWN command with the NORMAL or IMMEDIATE option.

 

 

DB를 열고 다시 잘 닫아준다.

SQL> alter database open;

Database altered.

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area 1.5032E+10 bytes
Fixed Size		   13632600 bytes
Variable Size		 2650800128 bytes
Database Buffers	 1.2348E+10 bytes
Redo Buffers		   19918848 bytes
Database mounted.

 

다시 mount 단계로 startup 해주었다.

이제 아카이브 로그 모드로 변경할 수 있다. (제발)

SQL> alter database archivelog;

Database altered.

SQL> alter database open;

Database altered.

SQL> archive log list
Database log mode	       Archive Mode
Automatic archival	       Enabled
Archive destination	       /ARCH
Oldest online log sequence     3084
Next log sequence to archive   3089
Current log sequence	       3089

변경 완료.

 


정리

shutdown을 하고 DB가 hang이 걸리거나 반응이 없으면 다른 세션으로 접속하여 shutdown abort 를 실행한다.

보통 startup을 하면 문제 없이 DB가 올라오나, 이 경우 복구되지 않은 상태에서 alter로 변경을 하려고 했기 때문에

ORA-00265 에러가 발생한 듯 하다. 다시 DB를 잘 열고 닫은 뒤 안정적인 상태에서 alter를 하자.

 

 

728x90

댓글