Chinaunix首页 | 论坛 | 博客
  • 博客访问: 32864
  • 博文数量: 17
  • 博客积分: 696
  • 博客等级: 上士
  • 技术积分: 170
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-14 16:59
文章分类

全部博文(17)

文章存档

2010年(4)

2009年(13)

我的朋友

分类: Oracle

2009-09-06 14:26:41

1.安装必要的package
以sys的身份运行下面两个sql
$ORACLE_HOME/rdbms/admin/dbmslm.sql
$ORACLE_HOME/rdbms/admin/dbmslmd.sql

2.数据字典
为logminer指定数据字典
使用存储过程dbms_logmnr.build或者在当你启动logminer的时候进行指定。只取决于你使用logminer字典的形式
使用字典三种方式
 一 online catalog
 execute dbms_logmnr.start_logmnr(-option=>dbms_logmnr.dict_from_online_catalog);
 二 到处数据字典信息到redologfile中
 execute dbms_logmnr_d.build(-option=>dbms_logmnr_d.store_in_redo_logs);
 查看哪些redolog file包含的有数据字典信息
 SELECT NAME FROM V$ARCHIVED_LOG WHERE DICTIONARY_BEGIN='YES';
SELECT NAME FROM V$ARCHIVED_LOG WHERE DICTIONARY_END='YES';
三 将数据字典信息到处到第三方文件中
由于到处文件需要写到操作系统文件中,所以需要先设置一个参数 设定导出的位置信息
utl_file_dir=''
然后
EXECUTE dbms_logmnr_d.build(dictionary_filename => 'dict20090830.dat',dictionary_location => '/home/u01');

ERROR at line 1:
ORA-01336: specified dictionary file cannot be opened
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 475
ORA-29283: invalid file operation
ORA-06512: at "SYS.DBMS_LOGMNR_INTERNAL", line 3474
ORA-06512: at "SYS.DBMS_LOGMNR_INTERNAL", line 3552
ORA-06512: at "SYS.DBMS_LOGMNR_D", line 12
ORA-06512: at line 1
google一把发现有的说不再支持外部字典表信息  但是文档上时这么介绍的 继续google------------------------

另外10g中默认不对dml在redo中进行记录,如果要记录需要执行下面语句:
SQL> alter database add supplemental log data(primary key,unique index)columns;

Database altered.

SQL> alter database force logging;

Database altered.



测试:
SQL>  SELECT GROUP#, SEQUENCE#, STATUS FROM V$LOG;

    GROUP#  SEQUENCE# STATUS
---------- ---------- ----------------
         1          7 ACTIVE
         2          8 CURRENT
         3          6 INACTIVE


SQL> create table test(num number(2));

Table created.

SQL> insert into test values(1);

1 row created.

SQL> insert into test values(2);

1 row created.

SQL> insert into test values(3);

1 row created.

SQL> commit;

Commit complete.

select group#,member from v$logfile;

    GROUP# MEMBER
---------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
         1 /home/u02/oradata/billy/redo01.log
         2 /home/u02/oradata/billy/redo02.log
         3 /home/u02/oradata/billy/redo03.log

SQL>  EXEC DBMS_LOGMNR.ADD_LOGFILE('/home/u02/oradata/billy/redo02.log', DBMS_LOGMNR.NEW);

PL/SQL procedure successfully completed.

SQL>  EXEC DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);

PL/SQL procedure successfully completed.

 SELECT SQL_REDO FROM V$LOGMNR_CONTENTS WHERE SEG_OWNER ='DGYY' AND TABLE_NAME='TEST';

SQL_REDO
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
create table test(num number(2));
insert into "DGYY"."TEST"("NUM") values ('1');
insert into "DGYY"."TEST"("NUM") values ('2');
insert into "DGYY"."TEST"("NUM") values ('3');

4 rows selected.

按照时间来取
SQL>  EXECUTE DBMS_LOGMNR.START_LOGMNR( -
>    STARTTIME => '2009-08-30 22:00:00', -
>    ENDTIME => '2009-08-30 23:12:59', -
>    OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + -
>    DBMS_LOGMNR.CONTINUOUS_MINE);

PL/SQL procedure successfully completed.


SQL> execute dbms_logmnr.end_logmnr;

PL/SQL procedure successfully completed.

阅读(538) | 评论(0) | 转发(0) |
0

上一篇:数据缓存池

下一篇:如何去发展

给主人留下些什么吧!~~