oracle 10g logminer

LogMiner提供了一个处理重做日志文件并将其内容翻译成代表对数据库的逻辑操作的SQL语句的过程。LogMiner运行在Oracle版本8.1或者更高版本中。

以session为操作单位
1. 设置logminer使用的目录,此目录需要先手工创建。
数据字典文件是一个文本文件,使用包DBMS_LOGMNR_D来创建,如果我们要分析的数据库中的表有变化(比如表结构有变化等),影响到库的数据字典也发生变化。另外一种情况是在分析另外一个数据库文件的重做日志时,也必须要重新生成一遍被分析数据库的数据字典文件。 首先需要修改参数UTL_FILE_DIR ,该参数值为服务器中放置数据字典文件的目录,10g中我们通过动态修改参数的方式来修改,然后重新启动数据库生效。其中logs_utl_file目录先期建立好。
conn / as sysdba 
alter system set utl_file_dir='/u02/arch/hkeudm' scope=spfile; 
shutdown immediate 
startup

2. 生成 logminer package
先要安装logminer的两个包;以SYS用户运行下面两个脚本,其中第一个脚本dbmslm.sql用来创建DBMS_LOGMNR包,该包用来分析日志文件。第二个脚本dbmslmd.sql用来创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。

conn / as sysdba

@?/rdbms/admin/dbmslm.sql

@?/rdbms/admin/dbmslmd.sql

3. 生成 logminer file,创建数据字典文件

execute dbms_logmnr_d.build('logminer.ora','/u02/arch/hkeudm');

4. 将要分析的日志文件(在线和归档)加入要分析的log list中,建立列表和添加其他日志文件到列表
execute dbms_logmnr.add_logfile('/u02/oradata/hkeudm/redo04.log',dbms_logmnr.new);
execute dbms_logmnr.add_logfile('/u02/oradata/hkeudm/redo05.log',dbms_logmnr.addfile);
execute dbms_logmnr.add_logfile('/u02/oradata/hkeudm/redo06.log',dbms_logmnr.addfile);
 如果你觉得不需要分析已经在列表中的在线或归档日志,可以通过removefile命令删除:
execute dbms_logmnr.remove_logfile('/u02/oradata/hkeudm/redo06.log');
 
5. 查询分析的日志文件包含的scn范围和日期范围。

set lines 220

column low_scn format 9999999999

column next_scn format 9999999999

column filename format a50

select log_id,low_time,high_time,low_scn,next_scn,FILENAME from v$logmnr_logs;

相关的参数如下:
参数      参数类型  默认值 含义
StartScn 数字型    0   分析重作日志中SCN≥StartScn日志文件部分
EndScn  数字型    0   分析重作日志中SCN≤EndScn日志文件部分
StartTime 日期型  1998-01-01  分析重作日志中时间戳≥StartTime的日志文件部分
EndTime 日期型   2988-01-01  分析重作日志中时间戳≤EndTime的日志文件部分
DictFileName 字符型 字典文件该文件包含一个数据库目录的快照。
6. 执行分析:

alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

execute dbms_logmnr.start_logmnr (dictfilename=> '/u02/arch/hkeudm/logminer.ora', startscn=> 11244354, endscn=> 11294833, starttime => to_date('2008-04-10 10:28:02','yyyy-mm-dd hh24:mi:ss'), endtime => to_date('2008-04-10 13:28:02','yyyy-mm-dd hh24:mi:ss') );

到现在为止,我们已经分析得到了重作日志文件中的内容。动态性能视图v$logmnr_contents包含LogMiner分析得到的所有的信息。SELECT sql_redo FROM v$logmnr_contents;
如果我们仅仅想知道某个用户对于某张表的操作,可以通过下面的SQL查询得到,该查询可以得到用户TONY对表R_WIP_TST所作的一切工作。
SQL>; SELECT sql_redo FROM v$logmnr_contents WHERE username='TONY' AND tablename='R_WIP_TST'; 
需要强调一点的是,视图v$logmnr_contents中的分析结果仅在我们运行过程'dbms_logmrn.start_logmnr' 这个会话的生命期中存在(如果执行了DBMS_LOGMNR.END_LOGMNR分析结果将消失)。这是因为所有的LogMiner存储都在PGA内存中,所有其他的进程是看不到它的,同时随着进程的结束,分析结果也随之消失。

 7. 查看redo sql
Select SCN,timestamp, session# session_num,sql_redo From V$LOGMNR_CONTENTS where username='HKEU_DATA' -- Order by 1
8.使用DBMS_LOGMNR.END_LOGMNR结束日志分析过程,释放内存。
最后,使用过程DBMS_LOGMNR.END_LOGMNR终止日志分析事务,此时PGA内存区域被清除,分析结果也随之不再存在。
SQL> execute dbms_logmnr.end_logmnr;

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

转载于:http://blog.itpub.net/628922/viewspace-630607/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值