恢復被刪表的小案例

   今天接到報障,登錄某個系統報錯,查看應用日誌發現下面錯誤
2013-03-11 15:04:29,053 [http-80-3] ERROR [org.hibernate.util.JDBCExceptionReporter] - ORA-00942: 表或視圖不存在 ,登錄數據庫查 select * from sys.user_recyclebin t;顯示如下:
BIN$1ocEMnAvQzTgQAAK2QBl0Q==$0 ACCT_ROLE_AUTHORITY DROP TABLE  2013-02-25:13:43:11  ,發現25日ACCT_ROLE_AUTHORITY表被drop,那爲什麼今日才報錯啊,因爲今日這個服務被重啓了一次,這個表是被加載到機器的內存中的,因此重啓後才報錯。
    原因查到了先恢復數據,由於此數據庫採用RMAN + EXPDP 備份,因此恢復時採用IMPDP把ACCT_ROLE_AUTHORITY表導入進行恢復,見下:
[oracle@XXXX dpdump]$ tar -xzf 217_expdp_db_2013022203.tar.gz -C /u01/app/oracle/admin/ytkdb/dpdump    #注:導出時採用默認目錄
[oracle@XXXX dpdump]$ impdp userid=用戶/密碼@SID tables=acct_role_authority  dumpfile=hmdba_data_2013022503.dmp   logfile=hmdba_data_2013022503.log 




輸出見下: 
........部分省咯..........
由於以下參數, 舊有模式處於活動狀態:
舊有模式參數: "file=hmdba_data_2013022503.dmp" 位置: Command Line, 替換爲: "dumpfile=hmdba_data_2013022503.dmp"
舊有模式參數: "log=hmdba_data_2013022503.log"  位置: Command Line, 替換爲: "logfile=hmdba_data_2013022503.log"
已成功加載/卸載了主表 "HMDBA"."SYS_IMPORT_TABLE_01"
啓動 "HMDBA"."SYS_IMPORT_TABLE_01":  userid=用戶/密碼@SID tables=acct_role_authority dumpfile=hmdba_data_2013022503.dmp logfile=hmdba_data_2013022503.log
處理對象類型 SCHEMA_EXPORT/TABLE/TABLE_DATA
. . 導入了 "HMDBA"."ACCT_ROLE_AUTHORITY"      6.875 KB    1029 行
作業 "HMDBA"."SYS_IMPORT_TABLE_01" 已於 15:50:33 成功完成。 








--------------------------------------------------------------------------

重啓服務可以正常登錄。
    下面查詢是誰刪除的,查看listener.log文件,發現下面的記錄:
25-2月 -2013 13:43:38 * (CONNECT_DATA=(SERVICE_NAME=eytdbs)(CID=(PROGRAM=F:\oracle\product\10.2.0\db_2\BIN\exp.exe) (HOST=JAMESYE-PC)(USER=JamesYe))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.X.X.X)(PORT=6406)) *  。查出來是一個開發人員私自登錄數據庫時不小心進行刪除,最後對其進行了批評,並限制了開發的IP網段鏈接到數據庫,避免類似事件的再次發生。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章