人资管控数据库日志挖掘&DBA权限

日志挖掘


SQL> @?/rdbms/admin/dbmslm.sql


Package created.




Grant succeeded.


SQL> @?/rdbms/admin/dbmslmd.sql


Package created.


SQL> @?/rdbms/admin/dbmslms.sql


Package created.


No errors.


Grant succeeded.




SQL> exec dbms_logmnr.add_logfile(logfilename=>'/arch1/arch_1_18462_824833441.arc',options=>dbms_logmnr.addfile);


PL/SQL procedure successfully completed.


SQL> exec dbms_logmnr.start_logmnr;


PL/SQL procedure successfully completed.


SQL> select count(*) from v$logmnr_contents;


  COUNT(*)
----------
    838639




v$logmnr_contents看挖掘结果
SQL> select sql_redo from v$logmnr_contents where rownum<=10;


结束挖掘
SQL> exec dbms_logmnr.end_logmnr;


PL/SQL procedure successfully completed.










挖掘结果查到了TABLE_NAEM是OBJ#213139  (OBJECT_ID=213139去dba_objects查表名)
SQL> select table_name ,sql_redo from v$logmnr_contents where rownum<=10;




TABLE_NAME                 SQL_REDO
------------------------------------------------------


OBJ# 213139
update "UNKNOWN"."OBJ# 213139" set "COL 4" = HEXTORAW('30'), "COL 5" = HEXTORAW('30'), "COL 6" = HEXTORAW('6e756c6c'), "COL 7" = HEXTORAW('80'), "COL 8" = HEXTORAW('80'), "COL 9" = HEXTORAW('323031353
0333233313930333332'), "COL 10" = HEXTORAW('312e302e38'), "COL 11" = HEXTORAW('3230313530333230323330343139'), "COL 12" = HEXTORAW('312e302e36') where "COL 4" = HEXTORAW('30') and "COL 5" = HEXTORAW('
30') and "COL 6" = HEXTORAW('6e756c6c') and "COL 7" = HEXTORAW('80') and "COL 8" = HEXTORAW('80') and "COL 9" = HEXTORAW('3230313530333233313930333332') and "COL 10" = HEXTORAW('312e302e38') and "COL
11" = HEXTORAW('3230313530333230323330343139') and "COL 12" = HEXTORAW('312e302e36') and ROWID = 'AAA0CTAABAAAT8GABM';










已知OBJECT_ID到dba_objects查表名
SQL> select object_name from dba_objects where  OBJECT_ID=213139;


OBJECT_NAME
------------------------------
STRATEGY


ORIGINAL




desc v$logmnr_contents


 SESSION#                                                                                                                   
 SERIAL#                                                                                                                    
 USERNAME 执行事物的






dba_role_privs查有dba权限的用户
SQL> select * from sys.dba_role_privs where granted_role='DBA';


GRANTEE                        GRANTED_ROLE                   ADM DEF
------------------------------ ------------------------------ --- ---
JJFL                           DBA                            NO  YES
SYSTEM                         DBA                            YES YES
BUF_HRYW                       DBA                            NO  YES
SG186_ND                       DBA                            NO  YES
HRADS_ERP                      DBA                            NO  YES
PORTALPRODUCT                  DBA                            NO  YES
SYSMAN                         DBA                            NO  YES
SYS                            DBA                            YES YES


8 rows selected.












---------------------------网上资料---------------------------------
dict 


dba_objects


http://blog.csdn.net/liqfyiyi/article/details/6991159


http://www.orasql.com/blog/archives/2013/04/01/104.htm#rd?sukey=cbbc36a2500a2e6cb14dd043ee57c6996f5b93e32e575db75d9e740088ffc02929849aa09af8f9640caec7ca4ff5434a


Oracle LogMiner 是Oracle公司从产品8i以后提供的一个实际非常有用的分析工具,使用该工具可以轻松获得Oracle 重作日志文件(归档日志文件)中的具体内容,特别是,该工具可以分析出所有对于数据库操作的DML(insert、update、delete等)语句, 另外还可分析得到一些必要的回滚SQL语句。 
数据的变化过程基本上都在日志里面,在日常问题跟踪,数据恢复等等都可能用到,所以Logminer是每个DBA都应熟悉的工具。 
下面是logminer的使用步骤,具体的分析还需要根据各自的情况灵活应用。 


step 1安装logmnr包 
C:\Documents and Settings\Administrator>sqlplus / as sysdba 


SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 3月 26 09:35:56 2013 


Copyright (c) 1982, 2005, Oracle.  All rights reserved. 




连接到: 
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production 
With the Partitioning, OLAP and Data Mining options 


SQL> @?/rdbms/admin/dbmslm.sql 


程序包已创建。 




授权成功。 


SQL> @?/rdbms/admin/dbmslmd.sql 


程序包已创建。 


SQL> @?/rdbms/admin/dbmslms.sql 


程序包已创建。 


没有错误。 


授权成功。 




step2  设置utl_file_dir参数 
SQL> alter system set utl_file_dir='C:\oracle\product\10.2.0\logmnr' scope=both; 


alter system set utl_file_dir='C:\oracle\product\10.2.0\logmnr' scope=both 
                 * 
第 1 行出现错误: 
ORA-02095: 无法修改指定的初始化参数 




SQL> alter system set utl_file_dir='C:\oracle\product\10.2.0\logmnr' scope=spfil 
e; 


系统已更改。 
SQL> startup force; 
ORACLE 例程已经启动。 


Total System Global Area  335544320 bytes 
Fixed Size                  1248888 bytes 
Variable Size             251658632 bytes 
Database Buffers           79691776 bytes 
Redo Buffers                2945024 bytes 
数据库装载完毕。 
数据库已经打开。 
SQL> show parameter utl 


NAME                                 TYPE        VALUE 
------------------------------------ ----------- ------------------------------ 
create_stored_outlines               string 
utl_file_dir                         string      C:\oracle\product\10.2.0\logmnr 


step3 创建数据字典 
SQL> exec dbms_logmnr_d.build('dictionary.ora','C:\oracle\product\10.2.0\logmnr' 
); 


PL/SQL 过程已成功完成。 




step4 添加日志 
SQL> exec dbms_logmnr.add_logfile(logfilename=>'C:\oracle\product\10.2.0\flash_recovery_area\ORCL\ARCHIVELOG\2013_03_26\O1_MF_1_79_8O1YBVHY_.ARC',options=>dbms_logmnr.new); 


PL/SQL 过程已成功完成。 


SQL> exec dbms_logmnr.add_logfile(logfilename=>'C:\oracle\product\10.2.0\flash_r 
ecovery_area\ORCL\ARCHIVELOG\2013_03_26\O1_MF_1_80_8O1ZFNGP_.ARC',options=>dbms_ 
logmnr.addfile); 


PL/SQL 过程已成功完成。 


step5 开始分析 
SQL> exec dbms_logmnr.start_logmnr(dictfilename=>'C:\oracle\product\10.2.0\logmn 
r\dictionary.ora'); 


PL/SQL 过程已成功完成。 


step6 查询结果  
SQL> select count(*) from v$logmnr_contents; 


  COUNT(*) 
---------- 
     50464 


由于logmnr session限制,且需要用到SQL Developer查询 v$logmnr_contents,可以create table as select,在新的table中具体分析。 


SQL> create table logmnr_0326 as select * from v$logmnr_contents; 


表已创建。 




step 7 分析后释放内存: 
SQL> exec sys.dbms_logmnr.end_logmnr();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值