ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 玩转logminer-9i以前版本做法(一)

玩转logminer-9i以前版本做法(一)

原创 Linux操作系统 作者:anycall2010 时间:2008-09-07 14:28:32 0 删除 编辑

9I之前支持外部平面文件方式(FLAT FILE)方式,需要设置UTL_FILE_DIR,而这种方式需要重新启动数据库,对日志的分析带来很大的困难,特别是高可用数据库环境,一般没有重启数据库的机会。针对这种方法,做一下简单测试:

进行如下测试:

SQL> conn sys/oracle as sysdba
Connected.

1、创建DBMS_LOGMNR包(在/ORACLE_HOME/rdms/admin下)

SQL> @dbmslm.sql

Package created.

Grant succeeded.

2.创建相关数据字典

SQL> @dbmslmd.sql

Package created.

3、创建测试环境,创建一个表APPLE,插入数据,然后将数据删除。

记录当前归档日志信息:

SQL> [oracle@test archivelog]$ cd 2008_09_05
[oracle@test 2008_09_05]$ ls
o1_mf_1_59_4d11o5z1_.arc   o1_mf_1_64_4d11ttt2_.arc        o1_mf_1_69_4d11zt4f_.arc
o1_mf_1_60_4d11p9rt_.arc     o1_mf_1_65_4d11vyvy_.arc      o1_mf_1_70_4d121h5w_.arc
o1_mf_1_61_4d11qhmp_.arc  o1_mf_1_66_4d11x22p_.arc     o1_mf_1_71_4d1230cr_.arc
o1_mf_1_62_4d11rn95_.arc    o1_mf_1_67_4d11xdov_.arc     o1_mf_1_72_4d124qm6_.arc
o1_mf_1_63_4d11sqk1_.arc    o1_mf_1_68_4d11yojt_.arc

alter system archive log current;

System altered.


SQL> create table apple (a int);

Table created.

SQL> insert into apple  values(1);

1 row created.

SQL> insert into apple values(2);

1 row created.

SQL> insert into apple values(3);

1 row created.

SQL> select * from apple;

         A
----------
         1
         2
         3

SQL> commit;

Commit complete.

SQL> delete from apple;

3 rows deleted.

SQL> commit ;

Commit complete.

SQL> alter system archive log current;

System altered.

进行一系列操作完毕察看归档日志:

[oracle@test 2008_09_05]$ ls
o1_mf_1_59_4d11o5z1_.arc       o1_mf_1_65_4d11vyvy_.arc       o1_mf_1_71_4d1230cr_.arc
o1_mf_1_60_4d11p9rt_.arc        o1_mf_1_66_4d11x22p_.arc      o1_mf_1_72_4d124qm6_.arc
o1_mf_1_61_4d11qhmp_.arc     o1_mf_1_67_4d11xdov_.arc       o1_mf_1_73_4d18b84j_.arc
o1_mf_1_62_4d11rn95_.arc       o1_mf_1_68_4d11yojt_.arc          o1_mf_1_74_4d18hz4h_.arc
o1_mf_1_63_4d11sqk1_.arc       o1_mf_1_69_4d11zt4f_.arc
o1_mf_1_64_4d11ttt2_.arc          o1_mf_1_70_4d121h5w_.arc

此时多了两个归档日志:o1_mf_1_73_4d18b84j_.arc和 o1_mf_1_74_4d18hz4h_.arc。

修改初始化参数UTL_FILE_DIR,指定分析数据的存放处:

SQL> alter system set UTL_FILE_DIR='/opt/app/logminer' scope=spfile;

System altered.

创建数据字典存放路径:
[root@test dbs]# mkdir /opt/app/logminer

[root@test app]# chown -R oracle:oinstall logminer

重新启动数据库:
SQL> startup
ORACLE instance started.

Total System Global Area  775946240 bytes
Fixed Size                  2023944 bytes
Variable Size             281021944 bytes
Database Buffers          486539264 bytes
Redo Buffers                6361088 bytes
Database mounted.
Database opened.

创建数据字典文件
SQL> execute dbms_logmnr_d.build(dictionary_filename=>'sqltrace.ora',dictionary_location=>'/opt/app/logminer');

添加用于分析的日志文件

SQL> exec dbms_logmnr.add_logfile(logfilename=>'/opt/app/oracle/flash_recovery_area/ORCL/archivelog/2008_09_05/o1_mf_1_73_4d18b84j_.arc',options=>dbms_logmnr.new);

PL/SQL procedure successfully completed.


SQL> exec dbms_logmnr.add_logfile(logfilename=>'/opt/app/oracle/flash_recovery_area/ORCL/archivelog/2008_09_05/o1_mf_1_74_4d18hz4h_.arc');

PL/SQL procedure successfully completed.

数据字典分析:

SQL> exec sys.dbms_logmnr.start_logmnr(dictfilename=>'/opt/app/logminer/dictionary.ora');

PL/SQL procedure successfully completed.

以下的分析结果和我预期结果不一致,原因是我的数据库是10G版本,默认设置只能够显示DDL语言,针对这个问题,我上面转载了《yangtingkun》的一篇测试文章来说明。

SQL> select t.scn,t.TIMESTAMP,t.SEG_OWNER,t.OPERATION,t.SQL_REDO,t.SQL_UNDO from v$logmnr_contents t where t.SEG_NAME='APPLE';

      SCN TIMESTAMP      SEG_OWNER
---------- -------------- --------------------------------
OPERATION
--------------------------------
SQL_REDO
--------------------------------------------------------------------------------
SQL_UNDO
--------------------------------------------------------------------------------
    904895 05-9ÔÂ -08     SYS
DDL
create table apple (a int);


 

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

请登录后发表评论 登录
全部评论

注册时间:2008-06-24

  • 博文量
    182
  • 访问量
    610312