[20160805]logminer使用问题1.txt

简介: [20160805]logminer使用问题1.txt --前一阵子看itpub有人想通过logminer来抽取归档同步数据库,实际上这个非常不科学,存在一定的风险,我觉得很多情况下会漏掉一些sql --语句,通过例子来说明。

[20160805]logminer使用问题1.txt

--前一阵子看itpub有人想通过logminer来抽取归档同步数据库,实际上这个非常不科学,存在一定的风险,我觉得很多情况下会漏掉一些sql
--语句,通过例子来说明。

--首先说明logminer用来补救一些异常操作还是可行的。

1.测试环境说明:
SCOTT@book> @ &r/ver1

PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SCOTT@book> alter database add supplemental log data;
Database altered.

SCOTT@book> alter database  FORCE LOGGING ;
Database altered.

SCOTT@book> select SUPPLEMENTAL_LOG_DATA_MIN, FORCE_LOGGING  from v$database ;
SUPPLEME FOR
-------- ---
YES      YES


SCOTT@book> create table emp1 as select * from emp;
Table created.

--//安全期间,我还重启数据库。

2.测试1:
SCOTT@book> alter system archive log current ;
System altered.

SCOTT@book> @ &r/logfile
GROUP# THREAD# SEQUENCE#       BYTES BLOCKSIZE MEMBERS ARC STATUS     FIRST_CHANGE# FIRST_TIME          NEXT_CHANGE# NEXT_TIME           GROUP# STATUS     TYPE       MEMBER                       IS_
------ ------- --------- ----------- --------- ------- --- ---------- ------------- ------------------- ------------ ------------------- ------ ---------- ---------- ---------------------------- ---
     1       1       409    52428800       512       1 YES INACTIVE     13245358514 2016-08-04 22:00:11  13245368452 2016-08-05 01:10:33      1            ONLINE     /mnt/ramdisk/book/redo01.log NO
     2       1       410    52428800       512       1 YES ACTIVE       13245368452 2016-08-05 01:10:33  13245387345 2016-08-05 09:40:07      2            ONLINE     /mnt/ramdisk/book/redo02.log NO
     3       1       411    52428800       512       1 NO  CURRENT      13245387345 2016-08-05 09:40:07 2.814750E+14                          3            ONLINE     /mnt/ramdisk/book/redo03.log NO

--当前使用/mnt/ramdisk/book/redo03.log。

--做一个"极端"测试,修改后不提交看看:
SCOTT@book> update emp1 set ename=upper('1234567def') ;
14 rows updated.

SCOTT@book> alter system archive log current ;
System altered.

--分析这个归档日志。
$ ls -l /u01/app/oracle/archivelog/book/
total 161600
-rw-r----- 1 oracle oinstall 47642112 2016-08-04 12:19:16 1_407_907434361.dbf
-rw-r----- 1 oracle oinstall 41338880 2016-08-04 22:00:11 1_408_907434361.dbf
-rw-r----- 1 oracle oinstall 38933504 2016-08-05 01:10:33 1_409_907434361.dbf
-rw-r----- 1 oracle oinstall 37357568 2016-08-05 09:40:07 1_410_907434361.dbf
-rw-r----- 1 oracle oinstall     9216 2016-08-05 09:41:47 1_411_907434361.dbf

$ strings /u01/app/oracle/archivelog/book/1_411_907434361.dbf | grep 1234567DEF | head -1
1234567DEF

--//使用logminer分析:
Begin
  SYS.DBMS_LOGMNR.ADD_LOGFILE( '/u01/app/oracle/archivelog/book/1_411_907434361.dbf', sys.dbms_logmnr.New);
end;

Begin
  SYS.DBMS_LOGMNR.START_LOGMNR ( Options => sys.dbms_logmnr.DICT_FROM_ONLINE_CATALOG+sys.dbms_logmnr.COMMITTED_DATA_ONLY);
end;

--我使用sys.dbms_logmnr.COMMITTED_DATA_ONLY选项。也就是要提交才能显示。

SCOTT@book> select *from v$logmnr_contents  where seg_name='EMP1' order by 1;
no rows selected

--//连影子都看不到,因为我在这个归档日志中没有提交。如果我换成如下:

Begin
  SYS.DBMS_LOGMNR.START_LOGMNR ( Options => sys.dbms_logmnr.DICT_FROM_ONLINE_CATALOG);
end;

SCOTT@book> Select sql_undo From V$LOGMNR_CONTENTS  where seg_name='EMP1' and rownum=1 ;
SQL_UNDO
----------------------------------------------------------------------------------------------------------
update "SCOTT"."EMP1" set "ENAME" = 'SMITH' where "ENAME" = '1234567DEF' and ROWID = 'AAAXY4AAEAAAAIzAAA';

--//你敢这样抽取吗?如果下一个归档的时间段执行的是rollback,你如何确定呢?

3.测试2:
--现在提交看看呢?
SCOTT@book> commit ;
Commit complete.

SCOTT@book> alter system archive log current ;
System altered.

Begin
  SYS.DBMS_LOGMNR.ADD_LOGFILE( '/u01/app/oracle/archivelog/book/1_411_907434361.dbf', sys.dbms_logmnr.New);
end;

Begin
  SYS.DBMS_LOGMNR.ADD_LOGFILE( '/u01/app/oracle/archivelog/book/1_412_907434361.dbf', sys.dbms_logmnr.AddFile);
end;

--//注意第2个使用sys.dbms_logmnr.AddFile。

Begin
  SYS.DBMS_LOGMNR.START_LOGMNR ( Options => sys.dbms_logmnr.DICT_FROM_ONLINE_CATALOG+sys.dbms_logmnr.COMMITTED_DATA_ONLY);
end;

SCOTT@book> Select sql_undo From V$LOGMNR_CONTENTS  where seg_name='EMP1' and rownum=1 ;
SQL_UNDO
----------------------------------------------------------------------------------------------------------
update "SCOTT"."EMP1" set "ENAME" = 'SMITH' where "ENAME" = '1234567DEF' and ROWID = 'AAAXY4AAEAAAAIzAAA';

--这样才能显示。所以使用它来抽取同步其他数据库是存在一些问题的。不建议使用。

目录
相关文章
|
机器学习/深度学习 Oracle 关系型数据库
[20180412]logminer使用问题(10g).txt
[20180412]logminer使用问题(10g).txt --//今天使用logminer下遇到一个问题,做一个记录: 1.环境: SYSTEM@xxx> @ &r/ver1 PORT_STRING                    VERSION...
1621 0
|
关系型数据库 Oracle SQL
[20180419]关于闪回的一些问题.txt
[20180419]关于闪回的一些问题.txt --//别人问的问题,就是drop表,然后flashbask表,建立的触发器还在吗? --//我记忆里触发器应该还在,我个人喜欢通过例子验证自己的判断.
1041 0
|
关系型数据库 Oracle Linux
[20180424]打开表空flashback on.txt
[20180424]打开表空flashback on.txt --//昨天测试完成,链接http://blog.itpub.net/267265/viewspace-2153207/,忘记设置flashback on;.
972 0
|
Oracle 关系型数据库 Linux
[20171208]rman与truncate3.txt
[20171208]rman与truncate3.txt --//前几天测试truncate表依旧备份一部分信息,测试几次确定备份8extent.当时的测试几个extents是相邻的.
874 0
|
Oracle 关系型数据库 测试技术
[20171206]rman与truncate.txt
[20171206]rman与truncate.txt --//昨天下班在回家的路上,突然想起以前遇到的问题,就是truncate表后,rman做备份时会备份多少truncate表的信息, --//当时在itpub上,还存在讨论,就是rman会备份空block吗?参考链接:http://www.
965 0
|
Oracle 关系型数据库 Linux
[20171206]rman与truncate2.txt
[20171206]rman与truncate2.txt --//上午测试发现truncate的表在做rman备份时还要做8个extents的备份. --//不知道自己的猜测是否正确,选择一个使用UNIFORM SIZE 的表空间测试看看.
1050 0
[20171110]toad 小技巧.txt
[20171110]toad 小技巧.txt --//前几天的事情,一大早要求查询记录操作异常,本来想使用logminer查询,我们redo文件太大,使用logminer分析很慢.
967 0
|
监控 Oracle 关系型数据库
[20170308]关于redo dump.txt
[20170308]关于redo dump.txt --//前一阵子在探究是否可以备库的备用日志来恢复主库,当主库在线日志丢失的情况下.遇到一些问题. DUMP OF REDO FROM FILE '/mnt/ramdisk/book/redo01.
693 0
|
监控 Oracle 关系型数据库
[20170203]关于flashback的问题.txt
[20170203]关于flashback的问题.txt --今天生产系统遇到的问题,dataguard机器磁盘空间不足,需要释放磁盘空间,无论如何删除日志,空间回收都是很少.
867 0
|
数据库 BI 关系型数据库
[20161214]如何确定dbid.txt
[20161214]如何确定dbid.txt --如何确定数据库的dbid,我曾经写过一篇blog,链接:http://blog.itpub.net/267265/viewspace-2125849/ --实际上还有1种非常武断的方法,直接使用strings...
810 0

热门文章

最新文章