logmnr的使用方法(网上找到的,在自己数据库上试验一下可行)

操作oracle数据库时,出现误操作的几率很大,下面提供了用logmnr对commit后的数据进行恢复的方法。
oracle版本11.1.0,
1、找到C:\app\lyq\product\11.1.0\db_1\dbs下的init.ora文件,这是数据库启动的参数文件,
   手动在里面添加一个参数utl_file_dir='C:\app\lyq\admin\orcl\cdump',utl_file_dir在数据库里默认为空,
   大家可以使用SHOW PARAMETER UTL来查看系统里是否已经设置过该参数。或者在启动的SERVER里面使用ALTER来修改该参数。
   alter system set utl_file_dir='C:\app\lyq\admin\orcl\cdump' scope=spfile; utl_file_dir路径可随意配置。
2、重启服务,让刚刚的修改生效。
 >shutdown immediate
 >startup mount
3、接着生成用于分析的数据字典
       在SQLPLUS里调用数据库的工具包DBMS_LOGMNR_D.BUILD
       BEGIN
       dbms_logmnr_d.build(
          dictionary_name => 'logmnr_dict.dat',
          dictionary_location=>'C:\app\lyq\admin\orcl\cdump'
       );
       END;
       /
       操作完成后,会再C:\app\lyq\admin\orcl\cdump里面出现一个名为logmnr_dict.dat的文件。
       上面的dictionary_location的地址可以随便设,不过一定要和utl_file_dir的值一样,否则出错。
       或者
      >execute dbms_logmnr_d.build('logmnr_dict.ora','C:\app\lyq\admin\orcl\cdump');
      说明:调用方法DBMS_LOGMNR_D.BUILD前,可通过desc DBMS_LOGMNR 查看logmnr是否安装,若没有安装则需要执行命令安装
 >start d:\oracle\ora90\rdbms\admin\catproc.sql;(需要很长时间) 
4、 重启服务,然后装入我们要分析的日志文件。
        shutdown immediate
        startup mount
        下面的操作需要在mount状态下操作
        BEGIN
        dbms_logmnr.add_logfile(
           ptions=>dbms_logmnr.new,
           logfilename=>'C:\APP\LYQ\ORADATA\ORCL\REDO03.LOG'
        );
        END;
        /
        options是用来指定文件操作:new为添加新的用于分析的日志文件;removefile用来移除不需要分析的日志。
        logfilename为需要添加进入分析的日志的文件路径,我这个是把归档的日志文件从flash_recovery_area里面拷贝过来的。
5、再接着我们就要启动分析了
       因为使用LOGMNR分析需要些文件,而刚刚我们的SERVER是在MOUNT状态下的,无法写文件,因此我们需要做的是:
       alter database open
       将数据库的状态修改为OPEN
       BEGIN
       dbms_logmnr.start_logmnr(
          dictfilename => 'C:\app\lyq\admin\orcl\cdump\logmnr_dict.ora'
       );
       END;
       /
       dictfilename为我们刚刚建立的数据字典文件。
       starttime,endtime为分析的时间范围。
      如果大家使用PL/SQL DEVELOPER上面的这些过程的调用就不用像我这样还要手动写了。
6、查询日志内容
       进过上面的辛苦的工作,下面就是我们收获的时候了,先介绍几个数据字典视图。
       v$logmnr_dictionary  显示用来决定对象ID名称的字典文件的信息
       v$logmnr_logs  在LogMiner启动时显示被分析的日志列表
       v$logmnr_contents LogMiner启动后,可以使用这个视图在sql提示符下输入sql语句来查询重做日志的内容。
       select scn ,seg_name,timestamp,seg_owner,operation from v$logmnr_contents where sql_name='your object'
                 (seg_name='table name')
       我们可以看到几条关于OBJECT的记录,operation显示的该操作的类型(DDL,DELETE,INSERT,UPDATE)。
       我们如果想看看操作的具体内容可以接着查询:
       select scn,sql_redo,sql_undo from v$logmnr_contents where scn=''
       就可以显示你要查看的操作的内容,以及它对应的UNDO操作,可以调用SQL_UNDO在ROLLBACK。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21702616/viewspace-668716/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/21702616/viewspace-668716/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值