加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

备份与恢复系列 六 日志挖掘(Log Miner)找到误删除表的SCN

发布时间:2020-12-14 02:33:49 所属栏目:大数据 来源:网络整理
导读:Log Miner是一个工具。可以用来观察和分析redo log的内容。 当Oracle数据块内容发生改变时,重做信息(redo)被写入当前的联机重做日志中。重做文件包括更改时间、对象标识符、更改的SCN号,在数据块中发生的操作和其他的重要信息,而且包括undo段中恢复块的
Log Miner是一个工具。可以用来观察和分析redo log的内容。
当Oracle数据块内容发生改变时,重做信息(redo)被写入当前的联机重做日志中。重做文件包括更改时间、对象标识符、更改的SCN号,在数据块中发生的操作和其他的重要信息,而且包括undo段中恢复块的更改。
虽然log miner可以偶尔用来进行日志文件分析,但不能建议当做普通工具来经常使用,特别是在一个重做日志非常庞大的数据库中挖掘。使用log miner分析庞大的重做信息,是一个体力活。

什么时候会用到log miner?
如果数据表中的数据被莫名其妙的改变了,使用log miner可以调查那个改变的细节,也可以使用log miner来撤销这些更改。
可以使用log miner来检查一个或者多个表中SQL改变发生的次数,从而检查表上的工作量。
通过进一步的检查,log miner可以指出一个错误的drop table或者一个ddl语句发生的准确时间和SCN。
注意事项:
数据库在mount或者nomount状态下都可以使用log miner
虽然log miner不解释重做日志的DDL语句,如果drop table这样的DDL删除表语句,但是任然会在数据字典中创建DML。这些字典DML语句可以被用来检查对数据库发得DDL命令。
log miner不会重构无日志的SQL操作,但是会把数据字典上的DML操作结果记录在日志文件中。
如果分析其它数据库的日志信息(相对应当前主机),必须保持使用相同的硬件平台和操作系统,而且字符集也要相同
log miner可以查看到未提交的事务,因为redo中包含提交的事务也包含未提交的数据。这点和oracle goldengate中的trail文件有区别。trail文件中只保存已经提交的事务。所以这也是data guard和goldengate复制同步的一个区别。
下面开始进入操作环节:
1,创建一个数据字典文件
日志文件信息量很大,为了可读性我们采用此步骤。
1.1为Oracle可使用的PL/SQL文件I/O定义目录。
conn / as sysdba
SYS@PRACTICE >alter system set utl_file_dir='/home/oracle' scope=spfile;
静态参数需要重启instance才生效
SYS@PRACTICE >startup force
SYS@PRACTICE >set linesize 200
SYS@PRACTICE >show parameter utl_file_dir
NAME???????????????????????????????? TYPE????????????????????????????? VALUE
------------------------------------ --------------------------------- ------------------------------
utl_file_dir???????????????????????? string??????????????????????????? /home/oracle
1.2创建一个数据字典
EXECUTE dbms_logmnr_d.build( -
??????? dictionary_filename => 'dictionary.ora',-
??????? dictionary_location => '/home/oracle');
[oracle@practice3 ~]$ ls -l /home/oracle
total 37416
drwxr-xr-x 2 oracle oinstall???? 4096 Aug 16 09:52 Desktop
-rw-r--r-- 1 oracle oinstall 38262331 Aug 16 10:37?dictionary.ora
2,删除表scott.bonus
mkdir /archive
[root@practice3 /]# chown oracle:oinstall /archive
alter system set log_archive_dest_1="location=/archive”;
alter system switch logfile;
SYS@PRACTICE >alter user scott identified by tiger account unlock;
SYS@PRACTICE >conn scott/tiger
SCOTT@PRACTICE >drop table bonus;
SCOTT@PRACTICE >conn / as sysdba
SYS@PRACTICE >select sequence# from v$log where status='CURRENT';
?SEQUENCE#
----------
????????? 6
切换日志之后,刚才的update以及drop操作都会记录在6号归档日志文件中
SYS@PRACTICE >alter system switch logfile;
ls -l /archive
total 908
-rw-r----- 1 oracle oinstall 925184 Aug 16 12:49? 1_6_855750293 .arc
3,为分析制定日志文件
EXECUTE dbms_logmnr.add_logfile( -
??????? logfilename => '/archive/ .arc',102); font-size:13px; font-family:'Courier New'">??????? options => dbms_logmnr.ADDFILE);
SYS@PRACTICE >col filename for a100
SYS@PRACTICE >select DB_NAME,THREAD_SQN,FILENAME from v$logmnr_logs;
DB_NAME????????????????? THREAD_SQN FILENAME
------------------------ ---------- -----------------------------------------
PRACTICE????????????????????????? 6 /archive/1_6_855750293.arc
4,启动log miner,注意要保持在同一个session中。
EXECUTE dbms_logmnr.start_logmnr( -
??????? dictfilename => '/home/oracle/dictionary.ora');
将内存中的数据存储在永久表中,然后用load来查看信息比较方便
?SYS@PRACTICE >create table logmnr_contents as select * from v$logmnr_contents;
关闭log miner
execute dbms_logmnr.end_logmnr;
从截图中可以清楚的看到drop table bonus的这条命令发生的时间 ?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读