注意,9i里不需要再运行创建logminer的脚本,logminer已经创建好了。
下面将就视图v$logmnr_contents的常用字段含义进行说明:
名称 含义
----------------------- -------- --------------------------------------------
SCN 特定数据变化的系统更改号
TIMESTAMP 数据改变发生的时间
COMMIT_TIMESTAMP 数据改变提交的时间
SEG_OWNER 数据发生改变的段名称
SEG_NAME 段的所有者名称
SEG_TYPE 数据发生改变的段类型
SEG_TYPE_NAME 数据发生改变的段类型名称
TABLE_SPACE 变化段的表空间
ROW_ID 特定数据变化行的ID
SESSION_INFO 数据发生变化时用户进程信息
OPERATION 重做记录中记录的操作(如INSERT)
SQL_REDO 可以为重做记录重做指定行变化的SQL语句
SQL_UNDO 可以为重做记录回退或恢复指定行变化的SQL语句
首先在init文件中加入一条初始化参数UTL_FILE_DIR表示生成数据字典文件的位置
UTL_FILE_DIR = (E:/oracle/logminer)
由于本人的oracle启动是使用spfile,所以首先启动数据库采用
startup pfile='E:/oracle/admin/nbxtdb/pfile/init.ora'
启动后,使用
create spfile from pfile='E:/oracle/admin/nbxtdb/pfile/init.ora';
生成spfile文件
关闭数据库后重新启动
startup
然后运行
show parameter utl 查看设置是否正确
SQL> show parameter utl;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
utl_file_dir string E:/oracle/logminer
正确,向表JQG_TEST插入数据
insert into JQG_TEST valus('logminer');
commit;
sql>alter system switch logfile; 切换日志产生归档文件
2.创建字典
SQL> EXECUTE DBMS_LOGMNR_D.BUILD('dictionary.ora',-
'E:/oracle/logminer',-
OPTIONS => DBMS_LOGMNR_D.STORE_IN_FLAT_FILE);
3.添加需要监视的归档文件
exec dbms_logmnr.add_logfile( logfilename=>'E:/oracle/oradata/nbxtdb/archive/1_114.DBF', options=>dbms_logmnr.new);
4.通过时间来初始化视图
EXECUTE DBMS_LOGMNR.START_LOGMNR(DICTFILENAME => 'E:/oracle/logminer/dictionary.ora', STARTTIME => TO_DATE('2004-06-25 23:12:00', 'yyyy-mm-dd HH24:MI:SS'),ENDTIME => TO_DATE('2004-06-25 23:20:00', 'yyyy-mm-dd HH24:MI:SS'));
5.查询视图v$logmnr_contents
SQL> select sql_redo,sql_undo from v$logmnr_contents where seg_name='JQG_TEST'
2 and seg_owner='TEST' and seg_type_name='TABLE';
SQL_REDO
--------------------------------------------------------------------------------
SQL_UNDO
--------------------------------------------------------------------------------
insert into "TEST"."JQG_TEST"("NAME") values ('logminer');
delete from "TEST"."JQG_TEST" where "NAME" = 'logminer' and ROWID = 'AAAHGpAAHAAAAAgAAE';