場景描述:
????????由于SSD系統盤損壞,更換硬盤后重裝了操作系統,Oracle數據庫之前安裝在D盤(另一個硬盤),更換硬盤多添加一個盤符重裝系統后盤符從D變成E,也就是之前的D:/app/... 變成了現在的 E:/app/...,重新安裝Oracle 11g(11.2.0.4)數據庫到D:/app 目錄下后,然后停止所有Oracle開頭的服務準備數據恢復。
數據文件恢復:
? ①表空間數據恢復:
1.先備份 %Oracle_HOME%/oradata 下的同名文件夾,我的是orcl 根據實際實例名(SID)確定。
2.將E盤?%Oracle_HOME%/oradata 下的orcl 拷貝到 D盤的同路徑下。
?本例:?E:\app\admin\oradata\orcl? -->? ?D:\app\admin\oradata\orcl
?②數據庫啟動配置恢復:
1.先備份?D:\app\admin\product\11.2.0\dbhome_1\database 為 database_bak
2.拷貝 E:\app\admin\product\11.2.0\dbhome_1\ 目錄下的 database 文件夾 ??到?D:\app\admin\product\11.2.0\dbhome_1\ 目錄
3.檢查 database 文件夾里(非常重要)
? ? ?initorcl.ora 和 spfileorcl.ora? 兩個文件里
? ? ?*.local_listener='(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)? (HOST=localhost)))'
是否匹配 如果host 是計算機名或不匹配當前新系統將導致服務啟動后提示連接到空閑的實例,startup命令時會報:
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
ORA-00130: invalid listener address '(ADDRESS=(PROTOCOL=TCP)(HOST=UFO)(PORT=1521))'
③數據庫監聽NETWORK恢復?
1.備份?D:\app\admin\product\11.2.0\dbhome_1\NETWORK\ADMIN 文件夾
2.將 E:\app\admin\product\11.2.0\dbhome_1\NETWORK\ADMIN 拷貝 到?D:\app\admin\product\11.2.0\dbhome_1\NETWORK\ADMIN
3.檢查?listener.ora 和??tnsnames.ora 配置是否正確
④控制文件恢復
1.在D:\app\admin\product\11.2.0\dbhome_1\database 下查看? control_files 配置指向
2.然后備份?D:\app\admin\fast_recovery_area\orcl 下的 control*.ctl 文件 本例為 control02.ctl
3.將E盤同目錄下的 ctl文件拷貝到當前目錄即可。
測試:
1.重啟 OracleOraDb11g_home1TNSListener、OracleServiceORCL 服務。
2.命令行登錄重裝系統前存在的用戶并測試表是否存在。
3.使用plsql測試下表數據是否正常。
一切OK,恢復成功!