在Oracle9i中測(cè)試通過(guò)
案例: 舊數(shù)據(jù)庫(kù)([color=blue:f74257d0fd]OLDDB[/color:f74257d0fd])
文件存放(data files,redo files,control files,temp files, undo files)目錄是([color=blue:f74257d0fd]/u01/OLDDB[/color:f74257d0fd])
dump文件目錄是[color=blue:f74257d0fd](/u01/dump[/color:f74257d0fd])
新數(shù)據(jù)庫(kù)([color=red:f74257d0fd]NEWDB[/color:f74257d0fd])
文件存放(data files,redo files,control files,temp files, undo files)目錄是([color=red:f74257d0fd]/u02/NEWDB[/color:f74257d0fd])
dump文件目錄是([color=red:f74257d0fd]/u02/dump[/color:f74257d0fd])
1. 生成舊數(shù)據(jù)庫(kù)初始化參數(shù)文件(init{SID}.ora)和文本格式的控制文件(control.txt)
alter database backup controlfile to trace as '/tmp/control.txt'
create pfile from spfile
2. 關(guān)閉舊數(shù)據(jù)庫(kù)
3. 將舊數(shù)據(jù)庫(kù)存放文件和dump的目錄移動(dòng)到新數(shù)據(jù)庫(kù)存放文件和dump的目錄(假如不更改存放的目錄可以不執(zhí)行該步驟)
mv [color=blue:f74257d0fd]/u01/OLDDB[/color:f74257d0fd] [color=red:f74257d0fd]/u02/NEWDB[/color:f74257d0fd]
mv [color=blue:f74257d0fd]/u01/dump[/color:f74257d0fd] [color=red:f74257d0fd]/u02/dump[/color:f74257d0fd]
4. 進(jìn)入$ORACLE_HOME/dbs目錄,拷貝OLDDB的pfile成NEWDB的pfile,同時(shí)修改NEWDB的pfile文件.
cd $ORACLE_HOME/dbs
cp initOLDDB.ora initNEWDB.ora
修改initNEWDB.ora文件
a. db_name和instance_name參數(shù)更改成新數(shù)據(jù)庫(kù)的名稱(NEWDB)
b. background_dump_desc,core_dump_desc和user_dump_desc參數(shù)所指定存放新數(shù)據(jù)庫(kù)存放dump信息的目錄(/u02/dump)
c. control_files參數(shù)所指定存放新數(shù)據(jù)庫(kù)的控制文件目錄及名稱('/u02/NEWDB/control01.ctl','/u02/NEWDB/control02.ctl')
5. 編輯control.txt文件,新生成newdb.sql和newdb1.sql文件
拷貝control.txt文件中以下行到/tmp/newdb.sql文件中
---------------
CREATE CONTROLFILE [color=blue:f74257d0fd]REUSE[/color:f74257d0fd] DATABASE "[color=blue:f74257d0fd]OLDDB[/color:f74257d0fd]" RESETLOGS NOARCHIVELOG
-- SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES 5
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 453
LOGFILE
GROUP 1 '/[color=blue:f74257d0fd]u01/OLDDB[/color:f74257d0fd]/redo01.log' SIZE 10M,
GROUP 2 '/[color=blue:f74257d0fd]u01/OLDDB[/color:f74257d0fd]/redo02.log' SIZE 10M,
...
GROUP n '/[color=blue:f74257d0fd]u01/OLDDB[/color:f74257d0fd]/redo0n.log' SIZE 10M
-- STANDBY LOGFILE
DATAFILE
'/[color=blue:f74257d0fd]u01/OLDDB[/color:f74257d0fd]/system01.dbf',
'/[color=blue:f74257d0fd]u01/OLDDB[/color:f74257d0fd]/undotbs01.dbf',
'/[color=blue:f74257d0fd]u01/OLDDB[/color:f74257d0fd]/indx01.dbf',
'/[color=blue:f74257d0fd]u01/OLDDB[/color:f74257d0fd]/tools01.dbf',
'/[color=blue:f74257d0fd]u01/OLDDB[/color:f74257d0fd]/users01.dbf',
'/[color=blue:f74257d0fd]u01/OLDDB[/color:f74257d0fd]/xdb01.dbf',
...
'/[color=blue:f74257d0fd]u01/OLDDB[/color:f74257d0fd]/filename.dbf'
CHARACTER SET ZHS16GBK
;
-------------
并修改/tmp/newdb.sql文件
a. REUSE -> SET
b. OLDDB -> NEWDB
c. 存放目錄 /u01/OLDDB -> /u02/NEWDB(假如不更改存放的目錄可以不執(zhí)行該步驟)
更改后/tmp/newdb.sql文件內(nèi)容如下
---------------
CREATE CONTROLFILE [color=red:f74257d0fd]SET[/color:f74257d0fd] DATABASE "[color=red:f74257d0fd]NEWDB[/color:f74257d0fd]" RESETLOGS NOARCHIVELOG
-- SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES 5
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 453
LOGFILE
GROUP 1 '/[color=red:f74257d0fd]u02/NEWDB[/color:f74257d0fd]/redo01.log' SIZE 10M,
GROUP 2 '/[color=red:f74257d0fd]u02/NEWDB[/color:f74257d0fd]/redo02.log' SIZE 10M,
...
GROUP n '/[color=red:f74257d0fd]u02/NEWDB[/color:f74257d0fd]/redo0n.log' SIZE 10M
-- STANDBY LOGFILE
DATAFILE
'/[color=red:f74257d0fd]u02/NEWDB[/color:f74257d0fd]/system01.dbf',
'/[color=red:f74257d0fd]u02/NEWDB[/color:f74257d0fd]/undotbs01.dbf',
'/[color=red:f74257d0fd]u02/NEWDB[/color:f74257d0fd]/indx01.dbf',
'/[color=red:f74257d0fd]u02/NEWDB[/color:f74257d0fd]/tools01.dbf',
'/[color=red:f74257d0fd]u02/NEWDB[/color:f74257d0fd]/users01.dbf',
'/[color=red:f74257d0fd]u02/NEWDB[/color:f74257d0fd]/xdb01.dbf',
...
'/[color=red:f74257d0fd]u02/NEWDB[/color:f74257d0fd]/filename.dbf'
CHARACTER SET ZHS16GBK
;
-------------
拷貝control.txt文件中以下行到/tmp/newdb1.sql文件中
-------------
ALTER TABLESPACE TEMP ADD TEMPFILE '/[color=blue:f74257d0fd]u01/OLDDB[/color:f74257d0fd]/temp01.dbf'
SIZE 524288000 REUSE AUTOEXTEND ON NEXT 8192 MAXSIZE 32767M;
...
ALTER TABLESPACE TEMPn ADD TEMPFILE '/[color=blue:f74257d0fd]u01/OLDDB[/color:f74257d0fd]/tempn.dbf'
SIZE 524288000 REUSE AUTOEXTEND ON NEXT 8192 MAXSIZE 32767M;
-------------
并修改/tmp/newdb.sql文件
a. 存放目錄 /u01/OLDDB -> /u02/NEWDB(假如不更改存放的目錄可以不執(zhí)行該步驟)
更改后/tmp/newdb1.sql文件內(nèi)容如下
-------------
ALTER TABLESPACE TEMP ADD TEMPFILE '/[color=red:f74257d0fd]u02/NEWDB[/color:f74257d0fd]/temp01.dbf'
SIZE 524288000 REUSE AUTOEXTEND ON NEXT 8192 MAXSIZE 32767M;
...
ALTER TABLESPACE TEMPn ADD TEMPFILE '/[color=red:f74257d0fd]u02/NEWDB[/color:f74257d0fd]/tempn.dbf'
SIZE 524288000 REUSE AUTOEXTEND ON NEXT 8192 MAXSIZE 32767M;
-------------
6. 刪除新數(shù)據(jù)庫(kù)pfile文件(initNEWDB.ora)中control_files參數(shù)所指定的控制文件.
rm /u02/NEWDB/*.ctl
7. 啟動(dòng)新數(shù)據(jù)庫(kù)(NEWDB)到nomount狀態(tài),使用initNEWDB.ora參數(shù)文件
startup nomount pfile=?/dbs/initNEWDB.ora
8. 執(zhí)行/tmp/newdb.sql文件,重建控制文件
@/tmp/newdb.sql
9. 使用resetlogs選項(xiàng)打開(kāi)新數(shù)據(jù)庫(kù)(NEWDB)
alter database open resetlogs
10. 執(zhí)行/tmp/newdb1.sql文件,重建臨時(shí)表空間
@/tmp/newdb2.sql
11.
查看v$database和v$instance視圖,是不是數(shù)據(jù)庫(kù)名稱已更改