使用Logminer工具分析DML和DDL操作(二)

日期: 2008-11-04 作者:蒙昭良 来源:TechTarget中国 英文

下面使用源数据库数据字典(Online Catalog)来分析DML操作

1、先进行DML和DDL的操作,以便下面分析。


SQL> conn /as sysdba
已连接。
SQL> show parameter utl;
NAME                                 TYPE        VALUE                         
———————————— ———– ——–
create_stored_outlines               string                                    
utl_file_dir                         string    
SQL> conn scott/mzl

  已连接。


SQL> insert into dept
  2  values(80,’meng’,’PanJan’);

已创建 1 行。

SQL> update dept set loc=’shang hai’ where deptno=70;

已更新 1 行。

SQL> commit;

提交完成。

SQL> delete from dept where deptno=40;

已删除 1 行。

SQL> commit;

提交完成。

SQL> alter table dept add(phone varchar2(32));

表已更改。

SQL> conn mzl/mzl


  已连接。


SQL> insert into dept
  2  values(70,’Hello’,’guangzhou’);

已创建 1 行。

SQL> commit
  2  ;

提交完成。

SQL> insert into scott.dept
  2  values(50,’Xiao’,’XiangGuang’,’138138000′);

已创建 1 行。

SQL> commit;

提交完成。

SQL> alter table scott.dept add(address varchar2(300));

表已更改。

2、把在线重做日志变成归档日志,这样分析归档日志就可以了

SQL> alter system switch logfile;

系统已更改。


  3、建立日志分析列表:


SQL> conn /as sysdba
已连接。
SQL> execute dbms_logmnr.add_logfile(-
> logfilename=>’D:oracleproduct10.2.0
flash_recovery_areaORCLARCHIVELOG2008_10_23
O1_MF_1_41_4HZPW700_.ARC’,options=>dbms_logmnr.new);

PL/SQL 过程已成功完成。

SQL> execute dbms_logmnr.add_logfile(logfilename=>’D:oracleproduct10.2.0

flash_recovery_areaORCLARCHIVELOG2008_10_23

O1_MF_1_40_4HZKMGPY_.ARC’,options=>dbms_logmnr.addfile);

PL/SQL 过程已成功完成。

4、启动LogMiner

SQL> execute dbms_logmnr.start_logmnr

(options=>dbms_logmnr.dict_from_online_catalog);

PL/SQL 过程已成功完成。

5、查看日志分析结果:

SQL> col username format a8
SQL> col sql_redo format a50
SQL> alter session set nls_date_format=’yyyy-mm-dd hh24:mi:ss’;

会话已更改。


SQL> select username,timestamp,sql_redo from v$logmnr_contents where
seg_name=’DEPT’;
USERNAME TIMESTAMP           SQL_REDO                                          
——– ——————- ————————————————–
MZL      2008-10-23 10:02:22 insert into “SCOTT”.”DEPT”(“COL 1″,”COL 2″,”COL 3”
                             ,”COL 4″) values (HEXTORAW(‘c133’),HEXTORAW(‘58696
                             16f’),HEXTORAW(‘5869616e674775616e67’),HEXTORAW(‘3
                             13338313338303030′));                             
                                                                               
USERNAME TIMESTAMP           SQL_REDO                                          
——– ——————- ————————————————–
MZL      2008-10-23 10:03:20 alter table scott.dept add(address varchar2(300));

6、结束LogMiner

SQL> execute dbms_logmnr.end_logmnr;

PL/SQL 过程已成功完成。

———————————————————————————
  用摘取LogMiner字典到字典文件分析DDL操作:

1、进行DDL操作,以便分析

SQL> conn scott/mzl

已连接。

SQL> drop table emp;

表已删除。


SQL> drop table dept;

表已删除。

SQL> conn /as sysdba

已连接。

SQL> alter system switch logfile;

系统已更改。

2、使用字典文件,请查看数据库是否配置utl_file_dir,这个参数为字典文件的目录。


SQL> show user;
USER 为 “SYS”
SQL> show parameter utl;
NAME                                 TYPE        VALUE                         
———————————— ———– ————
create_stored_outlines               string                                    
utl_file_dir                         string                  
                 


  可以看出没有配置该参数,配置该参数后,需要重启数据库。

SQL> alter system set utl_file_dir=’d:demo’ scope=spfile;

系统已更改。


SQL>shutdown immediate;
SQL>startup;

或者强制性重启数据库

SQL> startup force;

ORACLE 例程已经启动。


Total System Global Area  289406976 bytes                                      
Fixed Size                  1248576 bytes                                      
Variable Size              75498176 bytes                                      
Database Buffers          205520896 bytes                                      
Redo Buffers                7139328 bytes
                                     
  数据库装载完毕。

数据库已经打开。

SQL> show parameter utl
NAME                                 TYPE        VALUE                         
———————————— ———– ———–
create_stored_outlines               string                                    
utl_file_dir                         string      d:demo     

  3、建立字典文件:


SQL> execute dbms_logmnr_d.build
(‘dict.ora’,’d:demo’,dbms_logmnr_d.store_in_flat_file);

PL/SQL 过程已成功完成。


  4、建立日志分析列表:

SQL> execute dbms_logmnr.add_logfile(logfilename=>’D:oracleproduct10.2.0

flash_recovery_areaORCLARCHIVELOG2008_10_23

O1_MF_1_42_4HZRHJQX_.ARC’,options=>dbms_logmnr.new);

PL/SQL 过程已成功完成。

SQL> execute dbms_logmnr.add_logfile(logfilename=>’D:oracleproduct10.2.0

flash_recovery_areaORCLARCHIVELOG2008_10_23

O1_MF_1_41_4HZPW700_.ARC’,options=>dbms_logmnr.addfile);

PL/SQL 过程已成功完成。


  5、启动LogMiner

SQL> execute dbms_logmnr.start_logmnr

(dictfilename=>’d:demodict.ora’,options=>dbms_logmnr.ddl_dict_tracking);

PL/SQL 过程已成功完成。

6、查询分析日志结果:


SQL> select username,timestamp,sql_redo from v$logmnr_contents
  2  where lower(sql_redo) like ‘%table%’;
USERNAME TIMESTAMP           SQL_REDO                                          
——– ——————- ————————————————–
SCOTT    2008-10-23 09:59:29 alter table dept add(phone varchar2(32));         
SCOTT    2008-10-23 10:29:50 drop table emp AS “BIN$j3Z4SzJ3QS6l/AGiD5RJiA==$0”
                              ;                                                
                                                                               
SCOTT    2008-10-23 10:30:05 ALTER TABLE “SCOTT”.”DEPT” RENAME TO “BIN$u6gL7Khf
                             TZC+67ipacjOHw==$0″ ;                              
                                                                               
SCOTT    2008-10-23 10:30:05 drop table dept AS “BIN$u6gL7KhfTZC+67ipacjOHw==$0 
  ” ;                            
                                             

或者其他的查询:


SQL> select username,timestamp,sql_redo from v$logmnr_contents
  2  where username=’SCOTT’;
USERNAME TIMESTAMP           SQL_REDO                                          
——– ——————- ————————————————–
SCOTT    2008-10-23 09:55:49 set transaction read write;                       
SCOTT    2008-10-23 09:55:49 insert into “UNKNOWN”.”OBJ# 53917″(“COL 1″,”COL 2”
                             ,”COL 3″) values (HEXTORAW(‘c151’),HEXTORAW(‘6d656
                             e67′),HEXTORAW(‘50616e4a616e’));                  
                                                                               
SCOTT    2008-10-23 09:56:25 update “UNKNOWN”.”OBJ# 53917″ set “COL 3” = HEXTOR
                             AW(‘7368616e6720686169’) where “COL 3” = HEXTORAW(
                             ‘6265696a696e67’) and ROWID = ‘AAANKdAAEAAAANEAAA’
                             ;                                                 
                                                                               
SCOTT    2008-10-23 09:56:33 commit;                                           
SCOTT    2008-10-23 09:59:29 alter table dept add(phone varchar2(32));  
SCOTT    2008-10-23 10:29:50 drop table emp AS “BIN$j3Z4SzJ3QS6l/AGiD5RJiA==$0”
                              ;      
SCOTT    2008-10-23 10:30:05 drop table dept AS “BIN$u6gL7KhfTZC+67ipacjOHw==$0
                             ” ;                                              

7、结束LogMiner

SQL> execute dbms_logmnr.end_logmnr;

PL/SQL 过程已成功完成。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐