讲解Oracle数据库LogMiner工具的使用方法Oracle认证考试

文章作者 100test 发表时间 2009:06:15 06:16:44
来源 100Test.Com百考试题网


  Logminer(DBMS_LOGMNR和DBMS_LOGMNR_D)package,可以用来分析Oracle的重做日志文件。Logminer是oracle从8i开始提供的工具。
  我们可以使用logminer分析其它instance(版本可不一致)的重做日志文件,但是必须遵循以下要求:
  1.LogMiner日志分析工具仅能够分析Oracle 8以后的产品
  2.LogMiner必须使用被分析数据库实例产生的字典文件,且安装LogMiner数据库的字符集必须和被分析数据库的字符集相同
  3.被分析数据库平台必须和当前LogMiner所在数据库平台一样,且block size相同。
  使用logminer
  1.安装logminer:
  要安装LogMiner工具,必须首先要运行下面这样两个脚本,
  $ORACLE_HOME/rdbms/admin/dbmslm.sql
  $ORACLE_HOME/rdbms/admin/dbmslmd.sql.
  这两个脚本必须均以SYS用户身份运行。
  2.创建数据字典文件
  首先在init.ora初始化参数文件中,添加参数UTL_FILE_DIR,该参数值为服务器中放置数据字典文件的目录。如:
  UTL_FILE_DIR = (D:\Oracle\logs)
  重新启动数据库,使新加的参数生效,然后创建数据字典文件:
  SQL>. EXECUTE dbms_logmnr_d.build(
  dictionary_filename =>. logmn_ora817.dat,
  dictionary_location =>. D:\Oracle\logs ).
  创建数据字典是让LogMiner引用涉及到内部数据字典中的部分时使用对象的名称,而不是系统内部的16进制的ID。如果我们要分析的数据库中的表有变化,影响到库的数据字典也发生变化,就需要重新创建该字典。
  3.添加要分析的日志文件
  Logminer可以用来分析在线的重做日志文件和归档日志文件,但是我们一般建议使用归档的日志文件。
  a.添加新的日志文件:
  SQL>. EXECUTE dbms_logmnr.add_logfile(
  LogFileName=>. D:\database\oracle\oradata\ora817\archive \ ARC01491.001 , Options=>.dbms_logmnr.new).
  b.添加另外的日志文件到列表
  SQL>. EXECUTE dbms_logmnr.add_logfile(
  LogFileName=>. D:\database\oracle\oradata\ora817\archive \ ARC01491.002, Options=>.dbms_logmnr.addfile).
  c. 移去一个日志文件
  SQL>. EXECUTE dbms_logmnr.add_logfile(
  LogFileName=>. D:\database\oracle\oradata\ora817\archive \ ARC01491.002, Options=>.dbms_logmnr. REMOVEFILE).
  创建了要分析的日志文件,就可以对其进行分析。
  4. 进行日志分析
  SQL>. EXECUTE dbms_logmnr.start_logmnr(
  DictFileName=>. D:\Oracle\logs\ logmn_ora817.dat ).
  可以使用相应的限制条件:
  时间范围:对dbms_logmnr.start_logmnr使用StartTime和EndTime参数
  SCN范围:对dbms_logmnr.start_logmnr使用StartScn和EndScn参数
  5.观察结果:
  主要是查询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 VARCHAR2(32)
  SEG_NAME VARCHAR2(32)
  SEG_TYPE NUMBER
  SEG_TYPE_NAME VARCHAR2(32)
  TABLE_SPACE VARCHAR2(32)
  ROW_ID VARCHAR2(19)
  SESSION# NUMBER
  SERIAL# NUMBER
  USERNAME VARCHAR2(32)
  SESSION_INFO VARCHAR2(4000)
  ROLLBACK NUMBER
  OPERATION VARCHAR2(32)
  SQL_REDO VARCHAR2(4000)
  SQL_UNDO VARCHAR2(4000)
  RS_ID VARCHAR2(32)
  SSN NUMBER
  CSF NUMBER
  INFO VARCHAR2(32)
  STATUS NUMBER
  PH1_NAME VARCHAR2(32)
  PH1_REDO VARCHAR2(2000)
  PH1_UNDO VARCHAR2(2000)
  PH2_NAME VARCHAR2(32)
  PH2_REDO VARCHAR2(2000)
  PH2_UNDO VARCHAR2(2000)
  PH3_NAME VARCHAR2(32)
  PH3_REDO VARCHAR2(2000)
  PH3_UNDO VARCHAR2(2000)
  PH4_NAME VARCHAR2(32)
  PH4_REDO VARCHAR2(2000)
  PH4_UNDO VARCHAR2(2000)
  PH5_NAME VARCHAR2(32)
  PH5_REDO VARCHAR2(2000)
  PH5_UNDO VARCHAR2(2000)
  通过字段sql_redo可以得到该日志文件中进行过的sql操作,通过sql_undo可以得到撤销的sql语句。
  还可以用这样的sql对日志文件中的所有的操作分类统计:
  0select operation,count(*)from v$logmnr_contents group by operation.
  视图v$logmnr_contents中的分析结果仅在我们运行过程dbms_logmrn.start_logmnr这个会话的生命期中存在。这是因为所有的LogMiner存储都在PGA内存中,所有其他的会话是看不到它的,同时随着会话的结束而清除分析结果。
  最后,使用过程DBMS_LOGMNR.END_LOGMNR终止日志分析事务,PGA内存区域将被清除。
  更多优质资料尽在百考试题论坛 百考试题在线题库 oracle/认证更多详细资料

相关文章


Oracle性能优化借助分区技术实现Oracle认证考试
用Oracle创建实例的参数需求实例解析Oracle认证考试
讲解Oracle数据库LogMiner工具的使用方法Oracle认证考试
删除重做日志文件组的四大限制条件Oracle认证考试
完全指南:Oracle数据库支持笔记Oracle认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛