================================================================
1. Shutdown instance
2. Backup all control, redo and data files.
3. Go thru the .profile, .cshrc, .login, oratab, tnsnames.ora(for net v2)
, and redefine the environment variable ORACLE_SID to a new value.
ie search thru disks and do a grep ORACLE_SID *
4. cd $ORACLE_HOME/dbs and rename the following files:
o init<sid>.ora (or use pfile to point to the init file.)
o control file(s) This is optional if you don't rename any of
the controlfiles, and the control_files parameter is used.
control_files would be set in the initSID.ora file or in a file
it references with the ifile parameter. Make sure control_files
doesn't point to any old file names, if you renamed them.
o crdb<sid>.sql & crdb2<sid>.sql This is optional. These are
only used at database creation.
5. cd $ORACLE_HOME/rdbms/admin and rename the file:
o startup<sid>.sql This is optional.
(On some platforms, this file may be in $ORACLE_HOME/rdbms/install.)
Make sure the contents of this file do not reference old initSID.ora
files that have been renamed. This file simplifies the process to
"startup exclusive" your database.
6. To rename the database files and redo log files, you would follow
the instructions in the bulletin: 98863.723.
7. Change the ORACLE_SID environment variable to the new value.
8. start up database and verify it works. Once you have done this,
shutdown the database and take a final backup of all control, redo
and data files.
9. When the instance is started, the control file gets updated with
the current ORACLE_SID.
Changing the dbname for a database
----------------------------------
1. sqldba
2. connect internal
3. alter database backup controlfile to trace;
This will write in a trace file, the CREATE CONTROLFILE command that
would recreate the controlfile as it currently exists.
4. Exit and go to the directory where your trace files are located.
They are usually in the $ORACLE_HOME/rdbms/log directory.
If user_dump_dest is set in the initSID.ora, then go to the directory
listed in the user_dump_dest variable.
The trace file will have the form "ora_NNNN.trc with NNNN being a
number.
5. Get the CREATE CONTROLFILE command from the trace file and put it in
a new file called something like ccf.sql.
6. Edit the ccf.sql file and modify the CREATE CONTROLFILE command.
Just change the word "REUSE" to "SET",and "NORESETLOGS" to
"RESETLOGS", and modify the dbname.
Old line:
CREATE CONTROLFILE REUSE DATABASE "olddbname" NORESETLOGS ...
New line:
CREATE CONTROLFILE set DATABASE "newdbname" RESETLOGS ...
Then save the ccf.sql file.
7. Rename the old control files for backup purposes and so they are not
in the way of creating the new ones.
8. Edit initSID.ora so that db_name="newdbname".
9. sqldba
10. connect internal
11. startup nomount
12. @ccf
13. alter database open resetlogs;
14. Make sure the database is working. Shutdown and backup the database.
Reference Documents
-------------------
<Note:15390.1>
========================================================================================
# UNIX 환경
# 단순 SID 변경은 .profile 변경 및 dbs 의 init<원한는SID> 로만 변경 하면 된다.
# 결과적으로 단순 SID 변경은 Process 만 변경 된다.
# 간만에 SID 변경할 일이 있어서 테스트 한번 해봤음 ㅇ_ㅇ;
# 늘 그렇지만 엄청 새롭다.
TESTTG ==> TESTTGB 로 변경한다고 가정
1. vi .profile 에서 ORACLE_SID 를 원하는 SID 로 변경
export ORACLE_SID=TESTTGB
2. dbs 에서 init<SID>.ora 을 init<원하는SID>.ora 로 copy 한다.
cd /app/oracle/product/10.2.0/dbs
cp initTESTTG.ora initTESTTGB.ora
# 작업 하시 편하게 pfile 환경에서 한다. pfile 생성은
SQL> create pfile from spfile ;
3. 2번에서 생성한, initTESTTGB.ora 에서 db_name 을 수정한다.
*.db_name='TESTTGB'
주의 사항 :
1.Control File Path 에 주의 하자 ( 원래 DB 가 떠 있는 동일 Machine 에서 하면 Overwrite 된다 ㅇ_ㅇ;)
#*.control_files='/an01/TEST/TESTTG/control01.ctl' -- 원본
*.control_files='/an01/TEST/TESTTG/TESTTGB_control01.ctl' -- 테스트
2. SGA , PGA 를 적당히 Edit 하자
3. 필요하다면 필요한 Tablespace 의 Datafile 만 선택 하자 Control file 을 생성하자.
4. Archive Dest 를 Edit 하자 ( Mount 이후에 alter system 으로 변경 가능하다 )
4. controlfile 재생성 ( 아래와 같이 )
화일 생성을 아래와 같이 TRACE 떨군 후에 Editing
SQL> alter database backup controlfile to trace ;
Database altered.
STARTUP NOMOUNT
CREATE CONTROLFILE SET DATABASE "TESTTGB" RESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/an01/TEST/TESTTG/redo01.log' SIZE 10M,
GROUP 2 '/an01/TEST/TESTTG/redo02.log' SIZE 10M,
GROUP 3 '/an01/TEST/TESTTG/redo03.log' SIZE 10M
-- STANDBY LOGFILE
DATAFILE
'/an01/TEST/TESTTG/system01.dbf',
'/an01/TEST/TESTTG/undotbs01.dbf',
'/an01/TEST/TESTTG/sysaux01.dbf',
'/an01/TEST/TESTTG/users01.dbf'
CHARACTER SET UTF8
;
5. controlfile 재성성 후 Recover Database 진행
( 새로 생성한 control file 을 통한 복구이기 때문에 using backup control 사용
테스트용이라 until cancel 로 하고 바로 cancel 적용
SID 변경 후 recovery 도 되고, recovery 후 SID 변경이 가능하다.
개인적으로, 작업 하기 쉬운건 Recovery 후 SID 변경 을 더 편하다
아주 가끔 백업 본이 이상하던지, archive file 이상해서, 복구가 안되는 케이스가 발생한다. )
SQL> RECOVER DATABASE using backup controlfile until cancel ;
ORA-00279: change 9151408584711 generated at 11/19/2009 23:56:21 needed for
thread 1
ORA-00289: suggestion : /app/oracle/product/10.2.0/dbs/arch1_12_703375834.dbf
ORA-00280: change 9151408584711 for thread 1 is in sequence #12
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
Cancel
Media recovery cancelled.
6. RESETLOGS 로 OPEN 한다.
SQL> alter database open resetlogs ;
Database altered.
7. DB NAME 변경된것을 확인 한다.
SQL> select dbid,name, to_char(created,'YYYY/MM/DD HH24:MI:SS') from v$database ;
DBID NAME TO_CHAR(CREATED,'YY
---------- --------- -------------------
3876231960 TESTTGB 2009/11/20 00:26:00
8. Local Listenr 변경 및 Remote tnsnames.ora 에서 TESTTG ==> TESTTGB 로 변경
EM 은 SID 변경에 따라서 당근 재생성 해야 한다.
단순 SID 만 변경해도, EM CONFIG정보는 HOSTNAME_SID 라는 디렉토리에 저장된다.
[출처] SID 변경(DB NAME 변경)|작성자 타락천사
'ORACLE > ADMIN' 카테고리의 다른 글
DICTIONARY(DICT) 뷰 (0) | 2008.12.03 |
---|---|
oracle유저 이외의 유저가 sqlplus등을 사용하는 방법 (0) | 2008.11.27 |
Oracle 10.2.0.1에서 10.2.0.3으로 rman백업을 이용한 업그레이드 메모 (0) | 2008.11.21 |
[Oracle] Datafile Size 변경하기 (0) | 2008.11.19 |
sqlplus 사용법 (ORACLE) (0) | 2008.11.04 |