|
实验:
SQL> alter database add supplemental log data;
数据库已更改。
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for Linux IA64: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production
SQL> create table t as select * from dba_objects where 1=0;
表已创建。
SQL> desc t;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
OWNER VARCHAR2(30)
OBJECT_NAME VARCHAR2(128)
SUBOBJECT_NAME VARCHAR2(30)
OBJECT_ID NUMBER
DATA_OBJECT_ID NUMBER
OBJECT_TYPE VARCHAR2(19)
CREATED DATE
LAST_DDL_TIME DATE
TIMESTAMP VARCHAR2(19)
STATUS VARCHAR2(7)
TEMPORARY VARCHAR2(1)
GENERATED VARCHAR2(1)
SECONDARY VARCHAR2(1)
SQL> insert into t (object_id) values (1);
已创建 1 行。
SQL> commit;
提交完成。
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
905055635
SQL> update t set owner=(select 'a' from dual where 1=0),subobject_name=(select
'a' from dual where 1=0) where object_id = 1;
已更新 1 行。
SQL> update t set owner=(select 'a' from dual where 1=0),subobject_name=(select
'a' from dual where 1=0) where object_id = 1 and subobject_name is null;
已更新 1 行。
SQL> commit;
提交完成。
SQL> begin
2 sys.dbms_logmnr.start_logmnr(startSCN => 905055635,options => sys.dbms_lo
gmnr.DICT_FROM_ONLINE_CATALOG);
3 end;
4 /
PL/SQL 过程已成功完成。
SQL> select sql_redo from v$logmnr_contents where seg_name='T';
SQL_REDO
--------------------------------------------------------------------------------
update "TEST"."T" set "OWNER" = NULL, "SUBOBJECT_NAME" = NULL where "OWNER" IS N
ULL and "SUBOBJECT_NAME" IS NULL and ROWID = 'AAEUq2AAEAACcJNAAB';
update "TEST"."T" set "OWNER" = NULL, "SUBOBJECT_NAME" = NULL where "OWNER" IS N
ULL and "SUBOBJECT_NAME" IS NULL and ROWID = 'AAEUq2AAEAACcJNAAB';
对于update而言,redo中必须记录更新前值(op:5.1)和更新后值(op:11.5),然后logmnr在挖掘的时候根据这两个值来拼接SQL。
[ 本帖最后由 sundog315 于 2010-10-8 12:26 编辑 ] |
|