1、安装 (sqlplus / as sysdba 以sys用户身份登入)
2、创建数据字典
- show parameter utl_file_dir?? 查询是否已创建数据字典目录,已创建后面步骤跳过
- alter system set utl_file_dir='/data/oracle/logminer_dir' scope=spfile;? 指定数据字典存放目录(修改范围为spfile的参数后必须重启数据库才生效)
- shutdown immediate;
- startup;
- show parameter utl_file_dir? 查看目录是否生效
- exec dbms_logmnr_d.build('dictionary.ora', '/data/oracle/logminer_dir');
3、查询归档日志、重做日志路径
- archive log list;
- show parameter DB_RECOVERY_FILE_DEST;
- 路径为: DB_RECOVERY_FILE_DEST/实例名/archivelog
- select * from v$logfile
4、新增及修改数据,以及重做日志文件时间戳查看
5、选中归档日志开始解析
- exec dbms_logmnr.add_logfile('/data/oracle/oradata/orcl11g/redo03.log', dbms_logmnr.new);? 加载对应日志
- exec dbms_logmnr.add_logfile('/data/oracle/oradata/orcl11g/redo01.log', dbms_logmnr.addfile);? 增加解析的日志 (若是归档日志,需考虑加载的归档日志需在同一incarnation号下,每次resetlogs将会产生新的incarnation)
- exec dbms_logmnr.start_logmnr(dictfilename=>'/data/oracle/logminer_dir/dictionary.ora');?
- select filename from v$logmnr_dictionary;
- select * from v$logmnr_parameters;
- select filename from v$logmnr_logs;
- select scn,to_char(TIMESTAMP,'yyyy-mm-dd hh24:mi:ss'),operation,sql_redo,sql_undo from v$logmnr_contents where seg_name='AAA';
6、(验证)根据上一步解析回滚到update之前,scn号为6367953
- select flashback_on from v$database;? ? 查询是否开启闪回功能
- alter database flashback on;? 未开启则打开
- shutdown immediate;
- startup mount;? ?闪回到scn必须为挂载模式下
- flashback database to scn?6367953; (也可使用flashback database to timestamp to_timestamp('2022-03-03 14:37:13','yyyy-MM-dd hh24:mi:ss');进行回滚)
- alter database open resetlogs;? (回滚后必须加上resetlogs参数才能启动数据库)
- 重新登入查看,回滚到update之前
?注:以上案例为redo.log中解析出的scn,经验证回滚无误。另外归档日志也经测试解析出scn回滚无误。
|