建立数据库的详细步骤 Oracle数据库LogMiner工具的使用方法
Oracle数据库LogMiner工具的使用方法
Logminer(DBMS_LOGMNR和DBMS_LOGMNR_D)package 可以用来分析Oracle的重做日志文件 Logminer是oracle从 i开始提供的工具
我们可以使用logminer分析其它instance(版本可不一致)的重做日志文件 但是必须遵循以下要求
LogMiner日志分析工具仅能够分析Oracle 以后的产品
LogMiner必须使用被分析数据库实例产生的字典文件 且安装LogMiner数据库的字符集必须和被分析数据库的字符集相同
被分析数据库平台必须和当前LogMiner所在数据库平台一样 且block size相同
使用logminer
安装logminer
要安装LogMiner工具 必须首先要运行下面这样两个脚本 $ORACLE_HOME/rdbms/admin/dbmslm sql $ORACLE_HOME/rdbms/admin/dbmslmd sql
这两个脚本必须均以SYS用户身份运行
创建数据字典文件
首先在init ora初始化参数文件中 添加参数UTL_FILE_DIR 该参数值为服务器中放置数据字典文件的目录 如 UTL_FILE_DIR = (D:Oraclelogs)
重新启动数据库 使新加的参数生效 然后创建数据字典文件 SQL> EXECUTE dbms_logmnr_d build( dictionary_filename => logmn_ora dat dictionary_location => D:Oraclelogs );
创建数据字典是让LogMiner引用涉及到内部数据字典中的部分时使用对象的名称 而不是系统内部的 进制的ID 如果我们要分析的数据库中的表有变化 影响到库的数据字典也发生变化 就需要重新创建该字典
添加要分析的日志文件

Logminer可以用来分析在线的重做日志文件和归档日志文件 但是我们一般建议使用归档的日志文件
a 添加新的日志文件 SQL> EXECUTE dbms_logmnr add_logfile( LogFileName=> D:databaseoracleoradataora archive ARC Options=>dbms_logmnr new);
b 添加另外的日志文件到列表 SQL> EXECUTE dbms_logmnr add_logfile( LogFileName=> D:databaseoracleoradataora archive ARC Options=>dbms_logmnr addfile);
c 移去一个日志文件 SQL> EXECUTE dbms_logmnr add_logfile( LogFileName=> D:databaseoracleoradataora archive ARC Options=>dbms_logmnr REMOVEFILE);
创建了要分析的日志文件 就可以对其进行分析
进行日志分析 SQL> EXECUTE dbms_logmnr start_logmnr( DictFileName=> D:Oraclelogs logmn_ora dat );
可以使用相应的限制条件
时间范围 对dbms_logmnr start_logmnr使用StartTime和EndTime参数
SCN范围 对dbms_logmnr start_logmnr使用StartScn和EndScn参数
观察结果
主要是查询v$logmnr_contents SQL> desc v$logmnr_contents;
名称 空? 类型
SCN NUMBER TIMESTAMP DATE THREAD# NUMBER LOG_ID NUMBER XIDUSN NUMBER XIDSLT NUMBER XIDSQN NUMBER RBASQN NUMBER RBABLK NUMBER RBABYTE NUMBER UBAFIL NUMBER UBABLK NUMBER UBAREC NUMBER UBASQN NUMBER ABS_FILE# NUMBER REL_FILE# NUMBER DATA_BLK# NUMBER DATA_OBJ# NUMBER DATA_OBJD# NUMBER SEG_OWNER VARCHAR ( ) SEG_NAME VARCHAR ( ) SEG_TYPE NUMBER SEG_TYPE_NAME VARCHAR ( ) TABLE_SPACE VARCHAR ( ) ROW_ID VARCHAR ( ) SESSION# NUMBER SERIAL# NUMBER USERNAME VARCHAR ( ) SESSION_INFO VARCHAR ( ) ROLLBACK NUMBER OPERATION VARCHAR ( ) SQL_REDO VARCHAR ( ) SQL_UNDO VARCHAR ( ) RS_ID VARCHAR ( ) SSN NUMBER CSF NUMBER INFO VARCHAR ( ) STATUS NUMBER PH _NAME VARCHAR ( ) PH _REDO VARCHAR ( ) PH _UNDO VARCHAR ( ) PH _NAME VARCHAR ( ) PH _REDO VARCHAR ( ) PH _UNDO VARCHAR ( ) PH _NAME VARCHAR ( ) PH _REDO VARCHAR ( ) PH _UNDO VARCHAR ( ) PH _NAME VARCHAR ( ) PH _REDO VARCHAR ( ) PH _UNDO VARCHAR ( ) PH _NAME VARCHAR ( ) PH _REDO VARCHAR ( ) PH _UNDO VARCHAR ( )
通过字段sql_redo可以得到该日志文件中进行过的sql操作 通过sql_undo可以得到撤销的sql语句
还可以用这样的sql对日志文件中的所有的操作分类统计 select operation count(*)from v$logmnr_contents group by operation;
视图v$logmnr_contents中的分析结果仅在我们运行过程 dbms_logmrn start_logmnr 这个会话的生命期中存在 这是因为所有的LogMiner存储都在PGA内存中 所有其他的会话是看不到它的 同时随着会话的结束而清除分析结果
lishixinzhi/Article/program/Oracle/201311/18334