首页 > 代码库 > Oracle Database does not provide any supplemental logging, which means that by default LogMiner is not usable
Oracle Database does not provide any supplemental logging, which means that by default LogMiner is not usable
写在前面,在研究Oracle logmnr 的时候看到 http://www.askmaclean.com/archives/dbms_logmnr-unsupported-sqlredo.html 的文章,其中有一句
不知道maclean测试的是哪个版本的数据库,我测试的情况是可以的。
Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options
查看是否启用 supplemental log
SQL> select supplemental_log_data_min from v$database;SUPPLEME--------NOSQL>
创建测试实例
[oracle@localhost ~]$ sqlplus scott/tigerSQL*Plus: Release 11.2.0.1.0 Production on Sat Oct 11 02:00:49 2014Copyright (c) 1982, 2009, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> set linesize 180;SQL> set pagesize 80;SQL> select table_name from user_tables;TABLE_NAME------------------------------DEPTEMPBONUSSALGRADEDEPT_2SQL> create table emp2 as select * from emp where 1 =2;Table created.SQL> insert into emp2 select * from emp;14 rows created.SQL> commit;Commit complete.SQL> delete from emp where deptno =30;6 rows deleted.SQL> commit;Commit complete.
查看测试结果
SQL> begin 2 dbms_logmnr.add_logfile(logfilename=>‘/u01/app/flash_recovery_area/ORCL/archivelog/2014_10_11/o1_mf_1_12_b3kwq3qz_.arc‘,options=>dbms_logmnr.NEW); 3 dbms_logmnr.add_logfile(logfilename=>‘/u01/app/flash_recovery_area/ORCL/archivelog/2014_10_11/o1_mf_1_11_b3kv67v1_.arc‘,options=>dbms_logmnr.ADDFILE); 4 end; 5 /PL/SQL procedure successfully completed.SQL> select sql_redo from v$logmnr_contents t where t.seg_name =‘EMP2‘;select sql_redo from v$logmnr_contents t where t.seg_name =‘EMP2‘ *ERROR at line 1:ORA-01306: dbms_logmnr.start_logmnr() must be invoked before selecting from v$logmnr_contentsSQL> execute dbms_logmnr.start_logmnr(options=> dbms_logmnr.dict_from_online_catalog + dbms_logmnr.committed_data_only);PL/SQL procedure successfully completed.SQL> select sql_redo from v$logmnr_contents t where t.seg_name =‘EMP2‘;SQL_REDO------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------create table emp2 as select * from emp where 1 =2;insert into "SCOTT"."EMP2"("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (‘7369‘,‘SMITH‘,‘CLERK‘,‘7902‘,TO_DATE(‘17-DEC-80‘, ‘DD-MON-RR‘),‘800‘,NULL,‘20‘);insert into "SCOTT"."EMP2"("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (‘7499‘,‘ALLEN‘,‘SALESMAN‘,‘7698‘,TO_DATE(‘20-FEB-81‘, ‘DD-MON-RR‘),‘1600‘,‘300‘,‘30‘);insert into "SCOTT"."EMP2"("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (‘7521‘,‘WARD‘,‘SALESMAN‘,‘7698‘,TO_DATE(‘22-FEB-81‘, ‘DD-MON-RR‘),‘1250‘,‘500‘,‘30‘);insert into "SCOTT"."EMP2"("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (‘7566‘,‘JONES‘,‘MANAGER‘,‘7839‘,TO_DATE(‘02-APR-81‘, ‘DD-MON-RR‘),‘2975‘,NULL,‘20‘);SQL_REDO------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------insert into "SCOTT"."EMP2"("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (‘7654‘,‘MARTIN‘,‘SALESMAN‘,‘7698‘,TO_DATE(‘28-SEP-81‘, ‘DD-MON-RR‘),‘1250‘,‘1400‘,‘30‘);insert into "SCOTT"."EMP2"("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (‘7698‘,‘BLAKE‘,‘MANAGER‘,‘7839‘,TO_DATE(‘01-MAY-81‘, ‘DD-MON-RR‘),‘2850‘,NULL,‘30‘);insert into "SCOTT"."EMP2"("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (‘7782‘,‘CLARK‘,‘MANAGER‘,‘7839‘,TO_DATE(‘09-JUN-81‘, ‘DD-MON-RR‘),‘2450‘,NULL,‘10‘);insert into "SCOTT"."EMP2"("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (‘7788‘,‘SCOTT‘,‘ANALYST‘,‘7566‘,TO_DATE(‘19-APR-87‘, ‘DD-MON-RR‘),‘3000‘,NULL,‘20‘);SQL_REDO------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------insert into "SCOTT"."EMP2"("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (‘7839‘,‘KING‘,‘PRESIDENT‘,NULL,TO_DATE(‘17-NOV-81‘, ‘DD-MON-RR‘),‘5000‘,NULL,‘10‘);insert into "SCOTT"."EMP2"("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (‘7844‘,‘TURNER‘,‘SALESMAN‘,‘7698‘,TO_DATE(‘08-SEP-81‘, ‘DD-MON-RR‘),‘1500‘,‘0‘,‘30‘);insert into "SCOTT"."EMP2"("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (‘7876‘,‘ADAMS‘,‘CLERK‘,‘7788‘,TO_DATE(‘23-MAY-87‘, ‘DD-MON-RR‘),‘1100‘,NULL,‘20‘);insert into "SCOTT"."EMP2"("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (‘7900‘,‘JAMES‘,‘CLERK‘,‘7698‘,TO_DATE(‘03-DEC-81‘, ‘DD-MON-RR‘),‘950‘,NULL,‘30‘);insert into "SCOTT"."EMP2"("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (‘7902‘,‘FORD‘,‘ANALYST‘,‘7566‘,TO_DATE(‘03-DEC-81‘, ‘DD-MON-RR‘),‘3000‘,NULL,‘20‘);insert into "SCOTT"."EMP2"("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (‘7934‘,‘MILLER‘,‘CLERK‘,‘7782‘,TO_DATE(‘23-JAN-82‘, ‘DD-MON-RR‘),‘1300‘,NULL,‘10‘);15 rows selected.
同样 对于david 的文章貌似也存在描述的不妥的情况
http://blog.csdn.net/tianlesoftware/article/details/6554674
不知道是不是也是测试的环境不同。
还是说我的测试具有偶然性。
经过测试至少可以证明几件事情:(基于当前测试环境 Oracle 11.2)
1.必须要创建utl_file_dir,创建之后必须重启数据库。
2.即便是没有启用supplemental log,在没有其他更好的办法的时候还是可以尝试logmnr恢复特定表的特定数据。
Oracle Database does not provide any supplemental logging, which means that by default LogMiner is not usable
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。