ORACLE_SID를 변경하는 방법 (SID 를 RC817UT에서 RC817NEW로 변경)
1. 먼저 변경하고자 하는 SID를 v$thread 로 확인한다.
SQL> select instance from v$thread;
INSTANCE
----------------
RC817UT
1 row selected.
2. DB를 shutdown한다. (shutdown normal or immediate)
3. Full backup을 받는다.(All control, redo, data files backup)
1) datafiles
SQL> select file_name from dba_data_files;
FILE_NAME
----------------------------------------------------
/mnt2/data/RC817UT/oradata/system01.dbf
/mnt2/data/RC817UT/oradata/rbs01.dbf
/mnt2/data/RC817UT/oradata/tools01.dbf
/mnt2/data/RC817UT/oradata/users01.dbf
/mnt2/data/RC817UT/oradata/temp01.dbf
2) redo log files
SQL> select group#, member from v$logfile;
GROUP# MEMBER
---------- -----------------------------------------
1 /mnt2/data/RC817UT/oradata/redoRC817UT01.log
2 /mnt2/data/RC817UT/oradata/redoRC817UT02.log
3 /mnt2/data/RC817UT/oradata/redoRC817UT03.log
3 rows selected.
3) control files
SQL> select name from v$controlfile;
NAME
----------------------------------------------------
/mnt2/data/RC817UT/oradata/control01.ctl
/mnt2/data/RC817UT/oradata/control02.ctl
/mnt2/data/RC817UT/oradata/control03.ctl
3 rows selected.
4) full backup
SQL> ! cp /mnt2/data/RC817UT/oradata/* /mnt3/rctest8i/backup
4. .profile, .cshrc, .login, oratab, tnsnames.ora 파일에
ORACLE_SID가 설정되어있다면 이를 모두 새로운 ORACLE_SID명으로 변경시킨다.
OLD ORACLE_SID : RC817UT
NEW ORACLE_SID: RC817NEW
5. $ORACLE_HOME/dbs directory에서 새로운 SID명을 사용하기 위해 다음 파일을 수정한다.
1) initSID.ora 를 새로운 initSID.ora로 rename한다.
initRC817UT.ora -> initRC817NEW.ora
6. 옵션.....
-> 기존의 SID명을 가진 data file이나 redo log file을 이용시 6번은 skip해도 된다.
만약 ORACLE_SID를 변경하면서 datafile이나 redo log file 이름도 새로운
SID명으로 함께 변경하려면 새로운 SID명의 디렉토리를 생성하여 mv로 기존 datafile과
redo log file을 모두 옮긴뒤 alter 문으로 rename한다.
기존의 /mnt2/data/RC817UT 에 있는 datafile과 redo log file을 새로운 SID명인
RC817NEW 디렉토리로 unix command 'mv'를 이용하여 모두 이동시킨다.
$mnt2/data/RC817UT> cd..
$mnt2/data> mkdir RC817NEW
$mv mnt2/data/RC817UT/redo* /mnt2/data/RC817NEW
$mv mnt2/data/RC817UT/system01.dbf /mnt2/data/RC817NEW
$mv mnt2/data/RC817UT/rbs01.dbf /mnt2/data/RC817NEW
$mv mnt2/data/RC817UT/tools01.dbf /mnt2/data/RC817NEW
$mv mnt2/data/RC817UT/users01.dbf /mnt2/data/RC817NEW
$mv mnt2/data/RC817UT/temp01.dbf /mnt2/data/RC817NEW
$SQL>
SQL> startup mount
SQL>alter database rename file '/mnt2/data/RC817UT/redoRC817UT01.log' to '/mnt2/data/RC817NEW/redoRC817NEW01.log'
7. $ORACLE_HOME/dbs 밑에 orapw<OLD_SID> 가 있으면 새로운 password file로 rename 작업을 수행한다.
만약 orapw<OLD_SID>가 없으면 8번은 넘어간다.
그리고 새로운 orapw<NEW_SID>를 생성하고 싶으면 아래 COMMAND를 이용한다.
orapwd file=orapw<NEWSID password=?? entries=<number of user to be
granted permission to start the database instance>
8. db를 startup하고 shutdown한 다음 full backup을 수행한다.
(backup control, redo, data f iles)
9. 변경된 .profile을 적용하기 위해 다음을 수행한다.
$. ./.profile 을 실행하거나 (source .cshrc)
$export ORACLE_SID=RC817NEW
command를 수행한다.
10. db를 startup 한다.
11. select instance from v$thread;
로 변경된 ORACLE_SID를 확인한다.
SQL> select instance from v$thread;
INSTANCE
----------------
RC817NEW
1 row selected.
12. 기존에 SID명이 기록되어있는 파일들을 수정한다.
$ORACLE_HOME/network/admin/listener.ora 의 SID를 RC817NEW 로 수정
$ORACLE_HOME/network/admin/tnsnames.ora의 SID를 RC817NEW 로 수정