본문 바로가기

IT관련

Oracle RAC ASM 에서 외부 파라메타파일을 spfile 로 넣는 방법 (create spfile from pfile)

Oracle DB 파라메타파일인 init<SID>.ora 파일을 spfile 로 바꾸고 싶은 경우, ASM 을 사용하지 않는 환경에서는 그냥 create spfile from pfile; 커맨드만 실행하면 알아서 spfile 을 생성해줬습니다.

하지만, ASM 을 사용하는 RAC 환경에서는 반드시 DB를 Startup(Mount) 해준 후에 커맨드를 실행해야 합니다. DB Mount 안한 상태에서 커맨드를 날리면 아래와 같은 에러들을 만나게 됩니다.

 

SQL> create spfile='+DATA/ORA19/PARAMETERFILE/spfile.275.1122335907' from pfile;
create spfile='+DATA/ORA19/PARAMETERFILE/spfile.275.1122335907' from pfile
*
ERROR at line 1:
ORA-17502: ksfdcre:4 Failed to create file +DATA/ORA19/PARAMETERFILE/spfile.275.1122335907
ORA-15046: ASM file name '+DATA/ORA19/PARAMETERFILE/spfile.275.1122335907' is not in single-file
creation form

SQL> create spfile='+DATA/ORA19/PARAMETERFILE/spfile' from pfile;
create spfile='+DATA/ORA19/PARAMETERFILE/spfile' from pfile
*
ERROR at line 1:
ORA-17502: ksfdcre:4 Failed to create file +DATA/ORA19/PARAMETERFILE/spfile
ORA-15056: additional error message
ORA-06512: at line 4
ORA-17502: ksfdcre:4 Failed to create file +DATA/ORA19/PARAMETERFILE/spfile
ORA-15173: entry 'PARAMETERFILE' does not exist in directory 'ORA19'
ORA-06512: at "SYS.X$DBMS_DISKGROUP", line 449
ORA-06512: at line 2

 

아래와 같이 pfile 옵션을 사용해서 startup mount 해 준 다음에 create spfile from pfile; 커맨드를 실행하면

에러없이 ASM 의 PARAMETERFILE 폴더에 spfile 이 생성됩니다.

 

$ cd $ORACLE_HOME/dbs
$ sqlplus / as sysdba
SQL>
SQL> startup mount pfile=initORA191.ora
ORACLE instance started.

Total System Global Area 1.0737E+10 bytes
Fixed Size                  8923248 bytes
Variable Size            1291845632 bytes
Database Buffers         6207569920 bytes
Redo Buffers                7852032 bytes
In-Memory Area           3221225472 bytes
Database mounted.
Database opened.
SQL>
SQL>
SQL> create spfile from pfile;
File created.

 

이제는 spfile 이 ASM 스토리지에 생성되었으니, 한쪽 노드에만 기동한 DB를 shutdown 해주고,

srvctl start database ... 커맨드로 모든 노드에 다시 RAC DB 를 기동해주면 됩니다.

 

SQL> shutdown immediate
ORA-01109: database not open
SQL> exit
$
srvctl start database -d ora19