Chap 5. Control File 관리하기

 

- Control file 은 데이터베이스 전체의 정보를 지니고 있는 Oracle server Instance 를 open 할 때 두번 째 단계인 mount 단계로 가기 위해서 필요한 파일이다.(Instance open 순서: nomount -> mount -> open) 

- Binary file 이라서 사용자가 직접 수정할 수 없고, Server process 에게 변경을 요구하는 SQL 문장이나 DDL 문장을 수행해서 변경 할 수 있다. 


 1. Control file 다중화 하기   

 

1) spfile 일 경우

- 현재 운영중인 control file 의 경로를 확인 한 후, /home/oracle/disk[1-3]/control0[1-3].ctl 이렇게 3개의 파일로 다중화를 해보겠다. 

 

step1) 현재 상태 확인

SYS> select status from v$instance; 

 

STATUS
------------
OPEN 

 

SYS>  show parameter spfile;  

 

NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
spfile                   string  /app/oracle/product/11g/dbs/spfiletestdb.ora

step2) 현재 control file 조회하기

SYS> select name from v$controlfile;

 

NAME
------------------------------------------------------------

/app/oracle/oradata/testdb/control01.ctl

/app/oracle/fast_recovery_area/testdb/control02.ctl

step3) spfile 내용 변경 후 instance 종료

SYS> alter system set control_files='/home/oracle/disk1/control01.ctl', '/home/oracle/disk2/control02.ctl', '/home/oracle/disk3/control03.ctl' scope=spfile;

 

System altered.  

 

SYS> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS>

 

step4) 대상 디렉토리 생성 후 파일 복사

SYS> !
[oracle@my ~]$ cd /home/oracle
[oracle@my ~]$ mkdir disk1 disk2 disk3
[oracle@my ~]$ cp /app/oracle/oradata/testdb/control01.ctl /home/oracle/disk1/control01.ctl
[oracle@my ~]$ cp /app/oracle/oradata/testdb/control01.ctl /home/oracle/disk2/control02.ctl
[oracle@my ~]$ cp /app/oracle/oradata/testdb/control01.ctl /home/oracle/disk3/control03.ctl
[oracle@my ~]$ exit
exit

step5) startup

SYS> startup
ORACLE instance started.  

 

Total System Global Area  422670336 bytes
Fixed Size          1344616 bytes
Variable Size         260049816 bytes
Database Buffers      155189248 bytes
Redo Buffers            6086656 bytes
Database mounted.
Database opened.
SYS> 
SYS> select name from v$controlfile; 

 

NAME
------------------------------------------------------------

/home/oracle/disk1/control01.ctl
/home/oracle/disk2/control02.ctl
/home/oracle/disk3/control03.ctl

2) pfile 일 경우

- 우선 현재 pfile 로 설정이 되어 있지 않을 경우 (show parameter pfile 로 조회 했을 때 value 에 값이 나오는 경우), pfile 을 생성 한 후 spfile 을 삭제하고 instance 를 재시작 한 후 다중화 해보겠다. 그리고 새로운 디렉토리를 disk[4-6] 으로 변경해 보겠다. 

- 아래는 pfile 로의 변경 작업이다.

 

SYS> !ls -l $ORACLE_HOME/dbs/
total 24
-rw-rw---- 1 oracle oinstall 1544 Aug 19 19:47 hc_DBUA0.dat
-rw-rw---- 1 oracle oinstall 1544 Aug 19 20:39 hc_testdb.dat
-rw-r--r-- 1 oracle oinstall 2851 May 15  2009 init.ora
-rw-r----- 1 oracle oinstall   24 Aug 19 19:51 lkTESTDB
-rw-r----- 1 oracle oinstall 1536 Aug 19 19:54 orapwtestdb
-rw-r----- 1 oracle oinstall 2560 Aug 19 20:39 spfiletestdb.ora  

 

SYS> create pfile from spfile;  

 

File created. 

 

SYS> !ls -l $ORACLE_HOME/dbs/
total 28
-rw-rw---- 1 oracle oinstall 1544 Aug 19 19:47 hc_DBUA0.dat
-rw-rw---- 1 oracle oinstall 1544 Aug 19 20:39 hc_testdb.dat
-rw-r--r-- 1 oracle oinstall 2851 May 15  2009 init.ora
-rw-r--r-- 1 oracle oinstall  913 Aug 19 20:41 inittestdb.ora
-rw-r----- 1 oracle oinstall   24 Aug 19 19:51 lkTESTDB
-rw-r----- 1 oracle oinstall 1536 Aug 19 19:54 orapwtestdb
-rw-r----- 1 oracle oinstall 2560 Aug 19 20:39 spfiletestdb.ora  

 

SYS> !rm -f $ORACLE_HOME/dbs/spfiletestdb.ora 

 

SYS> !ls -l $ORACLE_HOME/dbs/
total 24
-rw-rw---- 1 oracle oinstall 1544 Aug 19 19:47 hc_DBUA0.dat
-rw-rw---- 1 oracle oinstall 1544 Aug 19 20:39 hc_testdb.dat
-rw-r--r-- 1 oracle oinstall 2851 May 15  2009 init.ora
-rw-r--r-- 1 oracle oinstall  913 Aug 19 20:41 inittestdb.ora
-rw-r----- 1 oracle oinstall   24 Aug 19 19:51 lkTESTDB
-rw-r----- 1 oracle oinstall 1536 Aug 19 19:54 orapwtestdb  

 

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

 

Total System Global Area  422670336 bytes
Fixed Size          1344616 bytes
Variable Size         260049816 bytes
Database Buffers      155189248 bytes
Redo Buffers            6086656 bytes
Database mounted.
Database opened.
SYS>            
SYS> show parameter pfile;  

NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
spfile                   string
SYS>


 

step1) 현재 사용중인 control file 조회하기

SYS> select name from v$controlfile;

NAME
------------------------------------------------------------
/home/oracle/disk1/control01.ctl
/home/oracle/disk2/control02.ctl
/home/oracle/disk3/control03.ctl

 

step2) instance 종료

SYS> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS>

step3) pfile 에서 control file 의 경로 수정

SYS> !vi $ORACLE_HOME/dbs/inittestdb.ora


*.control_files='/home/oracle/disk4/control01.ctl','/home/oracle/disk5/control02.ctl','/home/oracle/disk6/control03.ctl'

 

step4) 새로운 디렉토리 생성 후 control file 복사

SYS> !
[oracle@my ~]$ cd /home/oracle
[oracle@my ~]$ mkdir disk4 disk5 disk6
[oracle@my ~]$ cp /home/oracle/disk1/control01.ctl /home/oracle/disk4/control01.ctl
[oracle@my ~]$ cp /home/oracle/disk1/control01.ctl /home/oracle/disk5/control02.ctl
[oracle@my ~]$ cp /home/oracle/disk1/control01.ctl /home/oracle/disk6/control03.ctl
[oracle@my ~]$ exit
exit

step5) startup

SYS> startup
ORACLE instance started.  

Total System Global Area  422670336 bytes
Fixed Size          1344616 bytes
Variable Size         260049816 bytes
Database Buffers      155189248 bytes
Redo Buffers            6086656 bytes
Database mounted.
Database opened.
SYS> 
SYS> select name from v$controlfile;

  
NAME
------------------------------------------------------------

/home/oracle/disk4/control01.ctl
/home/oracle/disk5/control02.ctl
/home/oracle/disk6/control03.ctl  

 

SYS>

by 짱구를꼭말려 2013. 9. 9. 20:41