恢复被删表的小案例

   今天接到报障,登录某个系统报错,查看应用日志发现下面错误
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网段链接到数据库,避免类似事件的再次发生。 

你可能感兴趣的:(恢复表)