標籤:des style blog color 使用 ar 檔案 資料 art
資料庫版本都為 Oracle10G
- 在A資料庫伺服器操作: 將需要轉移的資料庫A冷備份,冷備份,我很簡單。
- 開始->運行:
sqlplus /as sysdba //使用DBA許可權登陸到資料庫sqlplus>shutdown immediate //關閉資料庫執行個體
- 在提示後ORACLE 常式已經關閉後,將對應A資料庫中的X:\Oracle\oradata\SourDB資料庫目錄全部拷貝出來。
- 我的資料庫目錄內含REDO01.LOG 、REDO02.LOG、 REDO03.LOG,SYSAUX01.DBF,SYSTEM01.DBF,TEMP01.DBF,UNDOTBS01.DBF,USERS01.DBF,TEST.DBF CONTROL01.CTL,CONTROL02.CTL,CONTROL03.CTL
在B資料庫(執行個體DestDB) 我的程式安裝在X:\oracle\product\10.1.0\db_1\ 資料目錄在X:\oracle\database\DestDB(無子目錄)
a、備份資料庫B的控制檔案 開始->運行:
sqlplussqlplus>conn DetDB sys as sysdba //串連到指定的DetDB執行個體上sqlplus>alter database backup controlfile to trace as ‘D:\ctlbak.ctl‘ //備份控制器成檔案sqlplus>show parameter spfile; //顯示spfile路徑sqlplus>create pfile from spfile; //備份資料庫B的控制檔案
產生的檔案在x:\oracle\product\10.1.0\db_1\database\下的 INITDestDB.ORA,備份吧。
b、sqlplus>shutdown immediate \\關閉資料庫執行個體
刪除資料目錄在x:\oracle\database\DestDB的目錄下的資料檔案、控制檔案和記錄檔,反正我是目錄下的都刪除了。
將資料庫A備份的sourDB的*.log、*.DBF複製進去。
刪除資料庫B中的,x:\oracle\product\10.1.0\db_1\database\SPFILEDestDB.ORA控制檔案
修改INITDestDB.ORA檔案,刪除*.control_files對應的字串
c、啟動資料庫B到nomount狀態
開始->運行:
sqlplus /nolog sqlplus>conn DestDB as sysdba sqlplus>startup nomount ORACLE 常式已經啟動。 Total System Global Area 171966464 bytes Fixed Size 787988 bytes Variable Size 144964076 bytes Database Buffers 25165824 bytes Redo Buffers 1048576 bytes
使用下面的語句產生資料庫B的新的控制檔案,將DestDB改掉目錄的資料庫名就行了。 (不要添加暫存資料表空間進控制器)
sql>CREATE CONTROLFILE SET DATABASE "DestDB" RESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 454 LOGFILE GROUP 1 ‘x:\oracle\database\DestDB\REDO01.LOG‘ SIZE 10M, GROUP 2 ‘x:\oracle\database\DestDB\REDO02.LOG‘ SIZE 10M, GROUP 3 ‘x:\oracle\database\DestDB\REDO03.LOG‘ SIZE 10M DATAFILE ‘x:\oracle\database\DestDB\SYSTEM01.DBF‘, ‘x:\oracle\database\DestDB\UNDOTBS01.DBF‘, ‘x:\oracle\database\DestDB\SYSAUX01.DBF‘, ‘x:\oracle\database\DestDB\USERS01.DBF‘, ‘x:\oracle\database\DestDB\ZJTEST.DBF‘ CHARACTER SET ZHS16GBK;
關閉資料庫 sql>shutdown immediate
d、添加(參考備份的initsourDB.ORA) *.control_files=‘x:\oracle\database\DestDB\control01.ctl‘,‘x:\oracle\database\DestDB\control02.ctl‘,‘x:\oracle\database\DestDB\control03.ctl‘ 新的控制檔案,產生到目錄x:\oracle\database\DestDB,修改x:\oracle\product\10.1.0\db_1 \database\下的initsourDB.ORA,我看到我的目錄內產生了3個控制檔案,所以加了3個。
e、指定pfile參數啟動,並產生spfile,完成恢複工作。
sql>startup pfile="x:\oracle\product\10.1.0\db_1\database\initsourDB.ORA"; ORACLE 常式已經啟動。Total System Global Area 171966464 bytes Fixed Size 787988 bytes Variable Size 144964076 bytes Database Buffers 25165824 bytes Redo Buffers 1048576 bytes 資料庫裝載完畢。
ORA-01589: 要開啟資料庫則必須使用 RESETLOGS 或 NORESETLOGS 選項
SQL> alter database open resetlogs; 資料庫已更改。
SQL> create spfile from pfile; 檔案已建立。
SQL> select count(*) from dba_users; COUNT(*) ---------- 30
Oracle 只有資料檔案的恢複