프린트 하기

OS 환경 : Oracle Linux 8.7 (64bit)

 

DB 환경 : Oracle Database 19.27.0.0

 

에러 : ORA-16032: parameter LOG_ARCHIVE_DEST destination string cannot be translated

rac환경에서 아카이브로그 모드로 변경하려할때 발생한 에러

 

 

log_archive_~ 파라미터 수정 후 db 종료

1
2
3
SQL> alter system set log_archive_dest = 'location=/oracle/app/oracle/arch' scope=spfile;
SQL> alter system set log_archive_format = 'ORA19DB_%t_%s_%r.arc' scope=spfile;
$ srvctl stop database -d ORA19DB

 

 

db mount로 기동

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ srvctl start database -d ORA19DB -o mount
PRCD-1332 : failed to start database ORA19DB
PRCR-1079 : Failed to start resource ora.ora19db.db
CRS-5017: The resource action "ora.ora19db.db start" encountered the following error:
ORA-16032: parameter LOG_ARCHIVE_DEST destination string cannot be translated
ORA-07286: sksagdi: cannot obtain device information.
Linux-x86_64 Error: 2: No such file or directory
. For details refer to "(:CLSN00107:)" in "/oracle/app/oracle/diag/crs/ora19rac2/crs/trace/crsd_oraagent_oracle.trc".
 
CRS-5017: The resource action "ora.ora19db.db start" encountered the following error:
ORA-16032: parameter LOG_ARCHIVE_DEST destination string cannot be translated
ORA-07286: sksagdi: cannot obtain device information.
Linux-x86_64 Error: 2: No such file or directory
. For details refer to "(:CLSN00107:)" in "/oracle/app/oracle/diag/crs/ora19rac1/crs/trace/crsd_oraagent_oracle.trc".
 
CRS-2674: Start of 'ora.ora19db.db' on 'ora19rac2' failed
CRS-2632: There are no more servers to try to place resource 'ora.ora19db.db' on that would satisfy its placement policy
CRS-2674: Start of 'ora.ora19db.db' on 'ora19rac1' failed

에러 발생

 

해결 방법 : pfile 생성 후 아카이브 파라미터 설정시 log_archive_dest를 ''(null)로 같이 설정 및 log_archive_dest_1 설정

pfile 생성 후 아카이브 파라미터 설정시 log_archive_dest를 ''(null)로 같이 설정 및 log_archive_dest_1 설정

 

 

spfile 경로 확인

1
2
$ srvctl config database -d ora19db | grep spfile
Spfile: +DATA/ORA19DB/PARAMETERFILE/spfile.282.1201189699

 

 

spfile을 바로 수정할수 없기때문에 pfile 생성

1
2
3
SQL> create pfile='?/dbs/initORA19DB1.ora' from spfile='+data/ora19db/PARAMETERFILE/spfile.282.1201189699';
 
File created.

 

 

pfile 수정

1
2
3
4
$ vi $ORACLE_HOME/dbs/initORA19DB1.ora
*.log_archive_dest = ''
*.log_archive_dest_1 = 'location=/oracle/app/oracle/arch'
*.log_archive_format = 'ORA19DB_%t_%s_%r.arc'

 

 

pfile로 기동 잘되는지 확인

1
2
3
4
5
6
7
8
9
SQL> startup mount pfile='initORA19DB1.ora';
ORACLE instance started.
 
Total System Global Area 3137338240 bytes
Fixed Size                  8944512 bytes
Variable Size             704643072 bytes
Database Buffers         2415919104 bytes
Redo Buffers                7831552 bytes
Database mounted.

잘올라감

 

 

spfile 생성

1
2
3
SQL> create spfile='+DATA' from pfile='initORA19DB1.ora';
 
File created.

 

 

이후 재기동

1
2
$ srvctl stop database -d ORA19DB
$ srvctl start database -d ORA19DB -o mount

 

 

archivelog 모드 설정(양쪽 노드)

1
2
3
SQL> alter database archivelog;
 
Database altered.

 

 

db 오픈(양쪽 노드)

1
2
3
SQL> alter database open;
 
Database altered.

정상적으로 기동됨

 

 

원인 : 초기 아카이브로그 설정시 log_archive_dest_1이 아닌 log_archive_dest만 설정한뒤 기동하여 발생한 문제

초기 아카이브로그 설정시 아래와 같이 log_archive_dest_1이 아닌 log_archive_dest만 설정한뒤 기동하여 발생한 문제

1
2
SQL> alter system set log_archive_dest = 'location=/oracle/app/oracle/arch' scope=spfile;
SQL> alter system set log_archive_format = 'ORA19DB_%t_%s_%r.arc' scope=spfile;

 

 

재기동

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ srvctl stop database -d ORA19DB
$ srvctl start database -d ORA19DB -o mount
PRCD-1332 : failed to start database ORA19DB
PRCR-1079 : Failed to start resource ora.ora19db.db
CRS-5017: The resource action "ora.ora19db.db start" encountered the following error:
ORA-16032: parameter LOG_ARCHIVE_DEST destination string cannot be translated
ORA-07286: sksagdi: cannot obtain device information.
Linux-x86_64 Error: 2: No such file or directory
. For details refer to "(:CLSN00107:)" in "/oracle/app/oracle/diag/crs/ora19rac2/crs/trace/crsd_oraagent_oracle.trc".
 
CRS-5017: The resource action "ora.ora19db.db start" encountered the following error:
ORA-16032: parameter LOG_ARCHIVE_DEST destination string cannot be translated
ORA-07286: sksagdi: cannot obtain device information.
Linux-x86_64 Error: 2: No such file or directory
. For details refer to "(:CLSN00107:)" in "/oracle/app/oracle/diag/crs/ora19rac1/crs/trace/crsd_oraagent_oracle.trc".
 
CRS-2674: Start of 'ora.ora19db.db' on 'ora19rac2' failed
CRS-2632: There are no more servers to try to place resource 'ora.ora19db.db' on that would satisfy its placement policy
CRS-2674: Start of 'ora.ora19db.db' on 'ora19rac1' failed

에러 발생

 

 

처음부터 log_archive_dest가 아닌 log_archive_dest_1로 설정했다면 재기동이 잘되었겠지만
나의 경우 실수로 log_archive_dest를 사용했기때문에 에러가 발생함
참고로 테스트중 log_archive_dest 파라미터를 pfile에서 지우고 log_archive_dest_1을 설정했을때도 db가 정상적으로 기동되지 않았음

1
2
3
4
5
6
7
8
9
10
SQL> startup pfile='?/dbs/initORA19DB1.ora' mount;
ORA-10997: another startup/shutdown operation of this instance inprogress
ORA-09968: unable to lock file
Linux-x86_64 Error: 11: Resource temporarily unavailable
Additional information: 1592749
또는
SQL> startup pfile='?/dbs/initORA19DB1.ora' mount;
ORA-16032: parameter LOG_ARCHIVE_DEST destination string cannot be translated
ORA-07286: sksagdi: cannot obtain device information.
Linux-x86_64 Error: 2: No such file or directory

원래라면 이렇게 해도 잘올라와야 정상이지만 log_archive_dest를 null로 설정하면서 동시에 log_archive_dest_1을 설정해야 정상적으로 동작했음
이론상 말이안되긴 하지만 증상을 봤을때는 파라미터파일에는 해당정보가 없지만 어딘가에서 log_archive_dest를 설정했던 정보를 기억하고 가져오는게 아닐까 싶음

 

 

참조 :