oracle中可能需要对数据库中产生的redo log和archive log进行日志挖掘,来更好查看数据库的内部信息,此时oracle提供了logminer来对日志文件进行挖掘。
挖掘的具体步骤:
oracle10g中的logminer工具安装的脚本是:
l $ORACLE_HOME/rdbms/admin/dbmslm.sql
2 $ORACLE_HOME/rdbms/admin/dbmslmd.sql.
logminer需要oracle的dbms_logmnr的package,如果系统包没有装好后面的步骤都处理不了,运行上述脚本,可以查询
desc dbms_logmnr
desc dbms_logmnr_d
查看具体的package的下面的procedure。
1 设置utl_file_dir目录,主要用于服务器放置数据字典文件的位置
alter system set utl_file_dir='d:oracleproduct10.2.0adminpfile' scope=spfile 因为是静态参数无法动态修改
2 重启数据库
shutdowm immediate
startup
3 创建日志挖掘用的目录dbms_logmnr_d.build,如果不创建数据字典文件,logminer解释出来的语句中关于数据字典中的部分和数值都是16进制形式,无法理解。
execute dbms_logmnr_d.build('test.ora','d:oracleproduct10.2.0adminpfile')
test.ora就是字典文件,后面的就是utl_file_dir的路径,会生成一个test.ora字典文件
4 添加需要分析的redo log到目录上.
execute dbms_logmnr.add_logfile('d:oracleproduct10.2.0oradatatestredo02.log',dbms_logmnr.new) 创建分析列表
execute dbms_logmnr.add_logfile('',dbms_logmnr.addfile) 添加其他日志文件到列表
execute dbms_logmnr.add_logfile('',dbms_logmnr.removefile) 移除日志文件出列表
5 在ult_file_dir目录下面的test.ora就是通过dbms_logmnr和dbms_logmnr_d生成的日志文件,也就是redo02.log日志文件,此时基本可以说已经完成了redo log的分析,
但是我们更希望在sql中能查看redo log的信息,而且可以查看具体的scn或者时间戳 user等的redo log对他们的产生的写入的信息
6 使用logminer进行日志分析,也是dbms_logmnr中的start_logmnr过程
全部把redo log的信息加载到v$logmnr_contents中
execute dbms_logmnr.start_logmnr(dictfilename=>'d:oracleproduct10.2.0adminpfiletest.ora')
指定时间戳把redo log的信息时间戳的信息加载到v$logmnr_contents动态性能视图中
execute dbms_logmnr.start_logmnr(DictFileName => 'd:oracleproduct10.2.0adminpfiletest.ora ',
StartTime => to_date('2001-9-18 00:00:00','YYYY-MM-DD HH24:MI:SS')
EndTime => to_date(''2001-9-18 23:59:59','YYYY-MM-DD HH24:MI:SS '));
通过scn来限制加载的redo log 信息
execute dbms_logmnr.start_logmnr(DictFileName=>'d:oracleproduct10.2.0adminpfiletest.ora',
startscn=>20,
endscn=>50) 通过scn来限制
7 观察分析结果v$logmnr_contents,此时redo log中的信息已经加载到v$logmnr_contents中了,注意由于v$logmnr_contents存在pga中,所以必须要在当前session来查看,因为pga是因为程序存在而存在,如果session一旦关闭,此pga资源也释放了
动态性能视图v$logmnr_contents包含logminer分析得到的所有信息
TIMESTAMP 数据改变发生的时间
COMMIT_TIMESTAMP 数据改变提交的时间
SEG_OWNER 段的所有者名称
SEG_NAME 数据发生改变的段名称
SEG_TYPE 数据发生改变的段类型
SEG_TYPE_NAME 数据发生改变的段类型名称
TABLE_SPACE 变化段的表空间
ROW_ID 特定数据变化行的ID
SESSION_INFO 数据发生变化时用户进程信息,如login_username=WACOS client_info= OS_username=oracle Machine_name=ITDB OS_terminal= OS_process_id=2782 OS_program name=sqlplus@ITDB (TNS V1-V3)
OPERATION 重做记录中记录的操作(如INSERT)
SQL_REDO 可以为重做记录重做指定行变化的SQL语句
SQL_UNDO 可以为重做记录回退或恢复指定行变化的SQL语句
我们可以利用LogMiner日志分析工具来分析其他数据库实例产生的重作日志文件,而不仅仅用来分析本身安装LogMiner的数据库实例的redo logs文件。使用LogMiner分析其他数据库实例时,有几点需要注意:
LogMiner日志分析工具仅能够分析Oracle 8以后的产品,对于8以前的产品,该工具也无能为力,当然logminer由4个procedure和2个动态性能视图组成,当然logminer的使用还需要探讨,这里仅列出了对日志的挖掘。
[@more@]来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25362835/viewspace-1053036/ ,如需转载,请注明出处,否则将追究法律责任。