最近由於系統重裝,在還原dmp備份文件時,由於數據原因(用exp命令導出時表沒有導出全部),導致系統不能正常運行。根據網上的信息和個人實際情況,做個記錄,便於后用。
oracle 導出空表方法:
1. 執行下面語句:
select table_name from user_tables where NUM_ROWS=0;
2.假設我們這里有空表TBL_1,TBL_2,TBL_3,TBL_4,則查詢結果如下:
alter table TBL_1 allocate extent; alter table TBL_2 allocate extent; alter table TBL_3 allocate extent; alter table TBL_4 allocate extent;
最后我們把上面的SQL語句執行,再導出就可以了。
下面正式開始
說明:把原來的數據做備份
原oracle安裝目錄,D:\tools\oracle11g\Administrator
備份oracle目錄, D:\數據庫備份\oracle11g\Administrator
步驟:
一、重裝oracle,安裝目錄要與原來的安裝目錄相同,即為D:\tools\oracle11g\Administrator
二、創建數據庫時,確保ORACLE_SID與原數據庫相同,此處ORACLE_SID = sd ,安裝好數據庫后,創建好表空間信息,也與原數據庫相同,如果原來的有臨時表空間,也要創建(和原來的一樣)
三、創建成功后,會在D:\tools\oracle11g\Administrator\oradata\ 下出現與ORACLE_SID同名的文件夾sd ,即D:\tools\oracle11g\Administrator\oradata\sd
四、在控制面板->管理工具->服務 中,停止以下服務:
1)OracleOraDb11g_home1TNSListener
2)OracleServiceSD
因為我只開啟了這兩項oracle服務,為確保操作過程順利,可以停止所有oracle服務。
五、從備份盤中拷貝oracle數據庫文件:
1)把D:\數據庫備份\oracle11g\Administrator\oradata\目錄下的oracle文件夾完整拷貝到 D:\tools\oracle11g\Administrator\oradata\目錄下。
2) 將D:\數據庫備份\oracle11g\Administrator\product\11.2.0\dbhome_1\database 目錄下文件拷貝到 D:\tools\oracle11g\Administrator\product\11.2.0\dbhome_1\database
3) 將D:\數據庫備份\oracle11g\Administrator\product\11.2.0\dbhome_1\network\admin 目錄下文件拷貝到 D:\tools\oracle11g\Administrator\product\11.2.0\dbhome_1\network\admin下,注意修改文件里的HOST值
admin 文件夾下的文件都看看,如果和現在的主機名(IP)不一樣,都改一下。
六、復制控制文件
把D:\數據庫備份\oracle11g\Administrator\flash_recovery_area\sd下的CONTROL02.CTL(這個文件和用戶有關)文件copy到新安裝的對應目錄下(可把新的進行重命名,以備用。相信你在做上面的操作前都已經做好備份了)。
七、重新啟動停止的oracle服務。
OK,你的數據已經還原好了。