본문 바로가기

DB/__Oracle & Scripts & Log

ORACLE_SID를 변경하는 방법

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 로 수정