今天学习使用logminer,分享一下

[复制链接]
查看11 | 回复3 | 2006-4-12 17:38:17 | 显示全部楼层 |阅读模式
今天在看>这本书,提到了logminer
就想试一试,结果按书本中的运行,却出现如下结果
sqlplus "/ as sysdba"
SQL> execute dbms_logmnr_d.build('v817dict.ora','/data/oracle/oradata/orcl');
BEGIN dbms_logmnr_d.build('v817dict.ora','/data/oracle/oradata/orcl'); END;
*
ERROR at line 1:
ORA-01308: initialization parameter utl_file_dir is not set
ORA-06512: at "SYS.DBMS_LOGMNR_D", line 793
ORA-06512: at line 1
需要指定目录
但书中没提到如何指定
回复

使用道具 举报

千问 | 2006-4-12 17:38:17 | 显示全部楼层
后来在google搜了一下,得到如下结果,终于可以了,现将过程列列
要安装LogMiner工具,必须首先要运行下面这样两个脚本,
$ORACLE_HOME/rdbms/admin/dbmslm.sql
$ORACLE_HOME/rdbms/admin/dbmslmd.sql.
这两个脚本必须均以SYS用户身份运行。



2.创建数据字典文件

首先在init.ora初始化参数文件中,添加参数UTL_FILE_DIR,该参数值为服务器中放置数据字典文件的目录。如:
UTL_FILE_DIR = (D:Oraclelogs)



重新启动数据库,使新加的参数生效,然后创建数据字典文件:
SQL> EXECUTE dbms_logmnr_d.build(
dictionary_filename => ' logmn_ora817.dat',
dictionary_location => ' D:Oraclelogs ');

创建数据字典是让LogMiner引用涉及到内部数据字典中的部分时使用对象的名称,而不是系统内部的16进制的ID。如果我们要分析的数据库中的表有变化,影响到库的数据字典也发生变化,就需要重新创建该字典。



3.添加要分析的日志文件

Logminer可以用来分析在线的重做日志文件和归档日志文件,但是我们一般建议使用归档的日志文件。

a.添加新的日志文件:
SQL> EXECUTE dbms_logmnr.add_logfile(
LogFileName=>' D:databaseoracleoradataora817archive ARC01491.001 ', Options=>dbms_logmnr.new);
b.添加另外的日志文件到列表
SQL> EXECUTE dbms_logmnr.add_logfile(
LogFileName=>' D:databaseoracleoradataora817archive ARC01491.002', Options=>dbms_logmnr.addfile);



c. 移去一个日志文件

SQL> EXECUTE dbms_logmnr.add_logfile(
LogFileName=>' D:databaseoracleoradataora817archive ARC01491.002', Options=>dbms_logmnr. REMOVEFILE);



创建了要分析的日志文件,就可以对其进行分析。



4. 进行日志分析

SQL> EXECUTE dbms_logmnr.start_logmnr(
DictFileName=>' D:Oraclelogs logmn_ora817.dat ');

可以使用相应的限制条件:

时间范围:对dbms_logmnr.start_logmnr使用StartTime和EndTime参数

SCN范围:对dbms_logmnr.start_logmnr使用StartScn和EndScn参数
回复

使用道具 举报

千问 | 2006-4-12 17:38:17 | 显示全部楼层
怎么我执行到这一步还是出错?
我已在initorcl.ora指定了目录啊
SQL> execute dbms_logmnr_d.build('log817.log','/data/oracle/oradata/orcl');
BEGIN dbms_logmnr_d.build('log817.log','/data/oracle/oradata/orcl'); END;
*
ERROR at line 1:
ORA-06532: Subscript outside of limit
ORA-06512: at "SYS.DBMS_LOGMNR_D", line 793
ORA-06512: at line 1
回复

使用道具 举报

千问 | 2006-4-12 17:38:17 | 显示全部楼层
记得是817的一个bug吧
置顶的faq有,我帮你拷过来了
[Q]执行exec dbms_logmnr_d.build('Logminer.ora','file directory'),提示下标超界,怎么办
[A]完整错误信息如下,
SQL> exec dbms_logmnr_d.build('Logminer.ora','file directory')
BEGIN dbms_logmnr_d.build('Logminer.ora','file directory'); END;
*
ERROR 位于第 1 行:
ORA-06532: 下标超出限制
ORA-06512: 在"SYS.DBMS_LOGMNR_D", line 793
ORA-06512: 在line 1
解决办法为:
1.编辑位于"$ORACLE_HOME/rdbms/admin"目录下的文件"dbmslmd.sql"
改变行:
TYPE col_desc_array IS VARRAY(513) OF col_description;

TYPE col_desc_array IS VARRAY(700) OF col_description;
并保存文件
2. 运行改变后的脚本
SQLPLUS> Connect internal
SQLPLUS> @$ORACLE_HOME/rdbms/admin/dbmslmd.sql
3.重新编译该包
SQLPLUS> alter package DBMS_LOGMNR_D compile body;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行