一、需求分析
服務器A中的數據庫實例被刪除,幸好dbf文件還在,遂准備由dbf文件恢復數據到服務器B續命,待恢復的數據庫實例名為 orcl1
服務器B中的數據庫為新安裝,已經初始化好 orcl 實例,首先對比兩個實例的dbf文件
↑ 服務器A中待恢復的 orcl1 實例dbf文件 ↑
↑ 服務器B中的 orcl 實例dbf文件 ↑
對比可知新增的dbf文件是PORTAL.DBF、SDE.DBF、WZYZT.DBF,猜測各自對應三個同名用戶
思路就出來了:
1、新建orcl1實例
2、新增三個表空間文件
3、新增三個同名用戶,分別授權
4、恢復數據查看校驗
二、創建orcl1實例
1、打開 “開始 - 所有程序 - Oracle - OraDb11g_home1 - 配置和移植工具 - Database Configuration Assistant”
步驟 1:默認
步驟 2:默認
步驟 3:全局數據庫名:orcl1,SID:orcl1
步驟 4:默認
步驟 5 填寫管理員賬戶的密碼
后面全部默認
確認開始創建orcl1實例
done,使用 PL/SQL 進行連接測試
三、恢復dbf
1、使用 PL/SQL 連接到orcl1實例,創建表空間及用戶,對用戶授權
create tablespace portal datafile 'C:\app\Administrator\oradata\orcl1\portal.dbf' size 1024M; create tablespace sde datafile 'C:\app\Administrator\oradata\orcl1\sde.dbf' size 1024M; create tablespace wzyzt datafile 'C:\app\Administrator\oradata\orcl1\wzyzt.dbf' size 1024M; create user portal identified by portal default tablespace portal; create user sde identified by sde default tablespace sde; create user wzyzt identified by wzyzt default tablespace wzyzt; grant connect,dba,resource to portal; grant connect,dba,resource to sde; grant connect,dba,resource to wzyzt;
2、使用 sqlplus 以 sysdba 身份登錄,對控制文件進行備份;
sqlplus /nolog(此處不能加分號,否則黑屏窗口會一閃而過)
conn /as sysdba 登錄
執行 alter database backup controlfile to trace; 備份控件文件到trace文件
找到oracle的安裝目錄,如:C:\app\Administrator,按修改時間降序,找到最近的trace文件(orcl1_ora_xxx.trc)備份好(建議使用Everything)
3、shutdown immediate 停止數據庫實例
4、備份C:\app\Administrator\oradata目錄下的該實例文件夾(例如:orcl),接着將該實例文件夾刪除,必須是全部刪除,在oradata文件夾下新建orcl1文件夾把需恢復的dbf拷貝到orcl1目錄下。
5、執行 startup nomount,把數據庫啟動到nomount狀態
6、從第2步備份出來trace文件中拷貝CREATE CONTROLFILE部分語句來重建控制文件:
紅框 1 改為ARCHIVELOG
紅框 2 因為前面是根據恢復的dbf創建了對應表空間,所以這里不用改,但還是需要確認一下
執行修改后的sql
CREATE CONTROLFILE REUSE DATABASE "ORCL1" NORESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 292 LOGFILE GROUP 1 'C:\APP\ADMINISTRATOR\ORADATA\ORCL1\REDO01.LOG' SIZE 50M BLOCKSIZE 512, GROUP 2 'C:\APP\ADMINISTRATOR\ORADATA\ORCL1\REDO02.LOG' SIZE 50M BLOCKSIZE 512, GROUP 3 'C:\APP\ADMINISTRATOR\ORADATA\ORCL1\REDO03.LOG' SIZE 50M BLOCKSIZE 512 -- STANDBY LOGFILE DATAFILE 'C:\APP\ADMINISTRATOR\ORADATA\ORCL1\SYSTEM01.DBF', 'C:\APP\ADMINISTRATOR\ORADATA\ORCL1\SYSAUX01.DBF', 'C:\APP\ADMINISTRATOR\ORADATA\ORCL1\UNDOTBS01.DBF', 'C:\APP\ADMINISTRATOR\ORADATA\ORCL1\USERS01.DBF', 'C:\APP\ADMINISTRATOR\ORADATA\ORCL1\PORTAL.DBF', 'C:\APP\ADMINISTRATOR\ORADATA\ORCL1\SDE.DBF', 'C:\APP\ADMINISTRATOR\ORADATA\ORCL1\WZYZT.DBF' CHARACTER SET ZHS16GBK ;
7、執行 recover database,這兩個報錯直接無視
8、執行 alter database open;
恢復完成,登錄數據庫進行驗證
參考鏈接:http://blog.sina.com.cn/s/blog_a59b6d310102vat0.html