db">

使用LOGMNR工具挖掘日志地简要过程

来源:这里教程网 时间:2026-03-03 21:44:19 作者:

使用LOGMNR工具挖掘日志地简要过程: (1)登陆主机,以SYS用户登陆至数据库: sqlplus "/as sysdba" (2)执行添加supplemental log data命令: alter database add Supplemental log data; (3)将字典信息记录到ORACLE在线日志文件中: EXECUTE dbms_logmnr_d.build (options => dbms_logmnr_d.store_in_redo_logs); (4)将需要挖掘的归档日志文件添加至挖掘列表中,根据需要可能需要添加多个归档日志: exec DBMS_LOGMNR.ADD_LOGFILE(LogFileName=>'/arch/ARC00001_0697199331.001'); (5)开启logmnr: exec DBMS_LOGMNR.start_logmnr(Options => DBMS_LOGMNR.DICT_FROM_REDO_LOGS); (6)查看是否挖掘内容: select sql_redo from v$logmnr_contents; 如果其他会话查询v$logmnr_contents可能会出现如下错误: SQL> select count(*) from v$logmnr_contents; select count(*) from v$logmnr_contents                      * ERROR at line 1: ORA-01306: dbms_logmnr.start_logmnr() must be invoked before selecting from v$logmnr_contents 而且当挖掘内容过多时,查询v$logmnr_contents可能会速度过慢,我们可以在其他用户下将v$logmnr_contents内容创建到实体表格中,并根据查询字段创建索引。注意不要将表格创建到sys用户下,容易导致system表空间过大: create table lgmrt.logmnr_contents_20121123 as select * from v$logmnr_contents; (8)结束LOGMNR后,注意要再次查询,必须重新开始执行上述存储过程 exec DBMS_LOGMNR.end_logmnr; (9)在执行DBMS_LOGMNR.start_logmnr可能会遇到如下错误。其解决办法是需要将执行添加supplemental log data命令时所对应的归档日志或在线日志添加进挖掘列表中: SQL> exec DBMS_LOGMNR.start_logmnr(Options => DBMS_LOGMNR.DICT_FROM_REDO_LOGS); BEGIN DBMS_LOGMNR.start_logmnr(Options => DBMS_LOGMNR.DICT_FROM_REDO_LOGS); END; * ERROR at line 1: ORA-01371: Complete LogMiner dictionary not found ORA-06512: at "SYS.DBMS_LOGMNR", line 58 ORA-06512: at line 1

相关推荐