DB/Oracle
[Backup&Recovery] (1) pfile,spfile을 이용한 control file 관리
밍구멍구
2023. 3. 14. 15:53
테스트 시나리오
1) pfile을 사용하여 control file 위치를
- /home/ora12c/disk1/control01.ctl,
- /home/ora12c/disk2/control02.ctl,
- /home/ora12c/disk3/control03.ctl 로 구성
2) spfile을 이용하여
- /home/ora12c/disk4/control01.ctl,
- /home/ora12c/disk5/control02.ctl,
- /home/ora12c/disk6/control03.ctl 로 구성
pfile을 이용하여 contro file 위치 변경 작업
더보기
0. 이중화할 디렉토리 생성
[ora12c@oraclevm ~]$ mkdir disk1
[ora12c@oraclevm ~]$ mkdir disk2
[ora12c@oraclevm ~]$ mkdir disk3
1. 파일 백업 전 DB 기동 중지
(컨트롤파일의 경우 실시간으로 기록되는 내용으로 백업 시점이 다를경우 백업 후 한 작업에 대해선 깨질 수 있음)
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
2. 기존 컨트롤 파일 복사
(컨트롤파일이 없을 경우 DB기동할 때 ORA-00205 에러 발생하여 컨트롤 파일 찾지 못한 채 기동)
[기존 컨트롤파일]
$ORACLE_BASE/oradata/SID 에 위치
[ora12c@oraclevm ORA12C]$ ls -lrt | grep "control*"
-rw-r-----. 1 ora12c dba 10600448 Mar 14 15:35 control01.ctl
-rw-r-----. 1 ora12c dba 10600448 Mar 14 15:35 control02.ctl
-rw-r-----. 1 ora12c dba 10600448 Mar 14 15:35 control03.ctl
[copy를 통해 disk1/disk2/disk3에 컨트롤 파일 copy 진행]
[ora12c@oraclevm ORA12C]$ cp control01.ctl /home/ora12c/disk1/
[ora12c@oraclevm ORA12C]$ cp control02.ctl /home/ora12c/disk2/
[ora12c@oraclevm ORA12C]$ cp control03.ctl /home/ora12c/disk3/
3. pfile 수정
경로 : $ORACLE_HOME/dbs
#*.control_files='/ora_engine/12c/oradata/ORA12C/control01.ctl','/ora_engine/12c/oradata/ORA12C/control02.ctl'
*.control_files='/home/ora12c/disk1/control01.ctl','/home/ora12c/disk2/control02.ctl','/home/ora12c/disk3/control03.ctl'
4. Database 기동 후 control file 확인
SQL> startup
ORACLE instance started.
Total System Global Area 1241513984 bytes
Fixed Size 8620176 bytes
Variable Size 452986736 bytes
Database Buffers 771751936 bytes
Redo Buffers 8155136 bytes
Database mounted.
SQL> show parameter control_files
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /home/ora12c/disk1/control01.ctl, /home/ora12c/disk2/control02.ctl, /home/ora12c/disk3/control03.ctl
SQL> select name
2 from v$controlfile;
NAME
--------------------------------------------------------------------------------
/home/ora12c/disk1/control01.ctl
/home/ora12c/disk2/control02.ctl
/home/ora12c/disk3/control03.ctl
spfile을 이용하여 contro file 위치 변경 작업
더보기
0. 1번예제 바탕으로 생성된 pfile을 이용해서 spfile 생성 및 확인
SQL> create spfile from pfile;
File created.
SQL> ! ls /ora_engine/12c/dbhome_1/dbs
hc_ORA12C.dat init.ora initORA12C.ora lkORA12C orapwORA12C spfileORA12C.ora
1. pfile 삭제 후 기동하여 spfile을 사용하도록 변경
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> !rm -f /ora_engine/12c/dbhome_1/dbs/initORA12C.ora
SQL> ! ls /ora_engine/12c/dbhome_1/dbs
hc_ORA12C.dat init.ora lkORA12C orapwORA12C spfileORA12C.ora
SQL> startup
ORACLE instance started.
Total System Global Area 1241513984 bytes
Fixed Size 8620176 bytes
Variable Size 452986736 bytes
Database Buffers 771751936 bytes
Redo Buffers 8155136 bytes
Database mounted.
Database opened.
SQL> show parameter spfile;
/*value에 출력된다면 현재 spfile이용중*/
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /ora_engine/12c/dbhome_1/dbs/spfileORA12C.ora
2. 설정 값 변경 전 control file 백업 진행
SQL> !cp -av /home/ora12c/disk1/control01.ctl /home/ora12c/disk4/control1.ctl
‘/home/ora12c/disk1/control01.ctl’ -> ‘/home/ora12c/disk4/control1.ctl’
SQL> !cp -av /home/ora12c/disk2/control02.ctl /home/ora12c/disk5/control2.ctl
‘/home/ora12c/disk2/control02.ctl’ -> ‘/home/ora12c/disk5/control2.ctl’
SQL> !cp -av /home/ora12c/disk3/control03.ctl /home/ora12c/disk6/control3.ctl
‘/home/ora12c/disk3/control03.ctl’ -> ‘/home/ora12c/disk6/control3.ctl’
3. 설정 값 변경
SQL> alter system set control_files='/home/ora12c/disk4/control1.ctl','/home/ora12c/disk5/control2.ctl','/home/ora12c/disk6/control3.ctl' scope=spfile;
System altered.
4. DB 재기동
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 1241513984 bytes
Fixed Size 8620176 bytes
Variable Size 452986736 bytes
Database Buffers 771751936 bytes
Redo Buffers 8155136 bytes
Database mounted.
Database opened.
5. controlfile 경로 변경되어있는지 확인
SQL> show parameter control_files;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /home/ora12c/disk4/control1.ctl, /home/ora12c/disk5/control2.ctl, /home/ora12c/disk6/control3.ctl
SQL> select name
2 from v$controlfile;
NAME
--------------------------------------------------------------------------------
/home/ora12c/disk4/control1.ctl
/home/ora12c/disk5/control2.ctl
/home/ora12c/disk6/control3.ctl