12c单独挖掘某PDB的日志

参考http://docs.oracle.com/database/121/SUTIL/GUID-EF8A932F-7E71-4995-893E-E583B90007C2.htm#SUTIL4227

参考https://ezdba.wordpress.com/2016/05/17/logminer-pluggable-database/

SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /arch/
Oldest online log sequence     8
Next log sequence to archive   11
Current log sequence           11
SQL> alter session set container=orclpdb1;

Session altered.

SQL> create tablespace TS_orclpdb1 datafile '/data/ORCL/6DEA766238A20B38E0536538A8C0818E/datafile/test.dbf' size 10m;

Tablespace created.

SQL> alter user test default tablespace TS_orclpdb1;

User altered.

SQL> alter user test quota unlimited on TS_orclpdb1;

User altered.

SQL> create table test.test_orclpdb1
  2  (num number,
  3   text varchar2(10))
  4  tablespace TS_orclpdb1;

Table created.

SQL> insert into test.test_orclpdb1 values (1,'test 1');
insert into test.test_orclpdb1 values (2,'test 2');

1 row created.

SQL> insert into test.test_orclpdb1 values (3,'test 3');

1 row created.

SQL> 
1 row created.

SQL> insert into test.test_orclpdb1 values (4,'test 4');

1 row created.

SQL> commit;

Commit complete.

SQL> delete test.test_orclpdb1 where num = 2;
commit;
1 row deleted.

SQL> 

Commit complete.

SQL> update test.test_orclpdb1 set text='UPDATE 3' where num=3;

1 row updated.

SQL> commit;

Commit complete.

SQL> select * from test.test_orclpdb1;

       NUM TEXT
---------- ----------
         1 test 1
         3 UPDATE 3
         4 test 4

SQL> alter session set container=orclpdb2;

Session altered.

SQL> create tablespace TS_orclpdb1 datafile '/data/ORCL/6DEA8C7BFE4F106FE0536538A8C0D779/datafile/test.dbf' size 10m;

Tablespace created.

SQL> create user test identified by test default tablespace TS_orclpdb1;

User created.

SQL> alter user test quota unlimited on TS_orclpdb1;

User altered.

SQL> create table test.test_orclpdb2
  2  (num number,
  3  text varchar2(10))
  4  tablespace TS_orclpdb1;

Table created.

SQL> insert into test.test_orclpdb2 values (1,'test 1');
insert into test.test_orclpdb2 values (2,'test 2');

1 row created.

SQL> 
1 row created.

SQL> insert into test.test_orclpdb2 values (3,'test 3');

1 row created.

SQL> insert into test.test_orclpdb2 values (4,'test 4');

1 row created.

SQL> commit;

Commit complete.

SQL> update test.test_orclpdb2 set text='ERROR';

4 rows updated.

SQL> commit;

Commit complete.

SQL> select * from test.test_orclpdb2;

       NUM TEXT
---------- ----------
         1 ERROR
         2 ERROR
         3 ERROR
         4 ERROR

SQL> alter session set container=cdb$root;

Session altered.

SQL> alter system archive log current;

System altered.

SQL> alter session set container=orclpdb1;

Session altered.

SQL> create directory scripts as '/home/oracle/dba/scripts';

Directory created.

SQL> exec dbms_logmnr_d.build('minerorclpdb1.dic','SCRIPTS', dbms_logmnr_d.store_in_flat_file);

PL/SQL procedure successfully completed.

SQL> alter session set container=orclpdb2;

Session altered.

SQL> create directory scripts as '/home/oracle/dba/scripts';

Directory created.

SQL> exec dbms_logmnr_d.build('minerorclpdb2.dic','SCRIPTS', dbms_logmnr_d.store_in_flat_file);

PL/SQL procedure successfully completed.

SQL> alter session set container=cdb$root;

Session altered.

SQL> begin
  2  sys.dbms_logmnr.add_logfile(logfilename=>'/arch/1_10_971686879.dbf', options=>sys.dbms_logmnr.addfile);
  3  sys.dbms_logmnr.add_logfile(logfilename=>'/arch/1_11_971686879.dbf', options=>sys.dbms_logmnr.addfile);
  4  end;
  5  /

PL/SQL procedure successfully completed.

SQL> BEGIN
  2  DBMS_LOGMNR.start_logmnr (
  3  dictfilename => '/home/oracle/dba/scripts/minerorclpdb1.dic',
  4  options => DBMS_LOGMNR.COMMITTED_DATA_ONLY);
  5  END;
  6  /

PL/SQL procedure successfully completed.

SQL> select sql_redo from  v$logmnr_contents  where sql_redo like '%TEST_ORCLPDB%';

SQL_REDO
--------------------------------------------------------------------------------
insert into "SYS"."OBJ$"("OBJ#","DATAOBJ#","OWNER#","NAME","NAMESPACE","SUBNAME"
,"TYPE#","CTIME","MTIME","STIME","STATUS","REMOTEOWNER","LINKNAME","FLAGS","OID$
","SPARE1","SPARE2","SPARE3","SPARE4","SPARE5","SPARE6","SIGNATURE","SPARE7","SP
ARE8","SPARE9","DFLCOLLID","CREAPPID","CREVERID","CREPATCHID","MODAPPID","MODVER
ID","MODPATCHID","SPARE10","SPARE11","SPARE12","SPARE13","SPARE14") values ('732
78','73278','107','TEST_ORCLPDB1','1',NULL,'2',TO_DATE('08-JUN-18', 'DD-MON-RR')
,TO_DATE('08-JUN-18', 'DD-MON-RR'),TO_DATE('08-JUN-18', 'DD-MON-RR'),'1',NULL,NU
LL,'0',NULL,'6','1','107',NULL,NULL,NULL,NULL,'0','0','0','16382',NULL,NULL,NULL
,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);

insert into "TEST"."TEST_ORCLPDB1"("NUM","TEXT") values ('1','test 1');

SQL_REDO
--------------------------------------------------------------------------------
insert into "TEST"."TEST_ORCLPDB1"("NUM","TEXT") values ('2','test 2');
insert into "TEST"."TEST_ORCLPDB1"("NUM","TEXT") values ('3','test 3');
insert into "TEST"."TEST_ORCLPDB1"("NUM","TEXT") values ('4','test 4');
delete from "TEST"."TEST_ORCLPDB1" where "NUM" = '2' and "TEXT" = 'test 2' and R
OWID = 'AAAR4+AATAAAACHAAB';

update "TEST"."TEST_ORCLPDB1" set "TEXT" = 'UPDATE 3' where "TEXT" = 'test 3' an
d ROWID = 'AAAR4+AATAAAACHAAC';


7 rows selected.

SQL> begin
  2  
  3  sys.dbms_logmnr.end_logmnr;
  4  
  5  end;
  6  /

PL/SQL procedure successfully completed.

SQL> begin
  2  sys.dbms_logmnr.add_logfile(logfilename=>'/arch/1_10_971686879.dbf', options=>sys.dbms_logmnr.addfile);
  3  sys.dbms_logmnr.add_logfile(logfilename=>'/arch/1_11_971686879.dbf', options=>sys.dbms_logmnr.addfile);
  4  end;
  5  /

PL/SQL procedure successfully completed.

SQL> BEGIN
  2  DBMS_LOGMNR.start_logmnr (
  3  dictfilename => '/home/oracle/dba/scripts/minerorclpdb2.dic',
  4  options => DBMS_LOGMNR.COMMITTED_DATA_ONLY);
  5  END;
  6  /

PL/SQL procedure successfully completed.

SQL> select sql_redo from  v$logmnr_contents  where sql_redo like '%TEST_ORCLPDB%';

SQL_REDO
--------------------------------------------------------------------------------
insert into "SYS"."OBJ$"("OBJ#","DATAOBJ#","OWNER#","NAME","NAMESPACE","SUBNAME"
,"TYPE#","CTIME","MTIME","STIME","STATUS","REMOTEOWNER","LINKNAME","FLAGS","OID$
","SPARE1","SPARE2","SPARE3","SPARE4","SPARE5","SPARE6","SIGNATURE","SPARE7","SP
ARE8","SPARE9","DFLCOLLID","CREAPPID","CREVERID","CREPATCHID","MODAPPID","MODVER
ID","MODPATCHID","SPARE10","SPARE11","SPARE12","SPARE13","SPARE14") values ('732
77','73277','107','TEST_ORCLPDB2','1',NULL,'2',TO_DATE('08-JUN-18', 'DD-MON-RR')
,TO_DATE('08-JUN-18', 'DD-MON-RR'),TO_DATE('08-JUN-18', 'DD-MON-RR'),'1',NULL,NU
LL,'0',NULL,'6','1','107',NULL,NULL,NULL,NULL,'0','0','0','16382',NULL,NULL,NULL
,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);

insert into "TEST"."TEST_ORCLPDB2"("NUM","TEXT") values ('1','test 1');

SQL_REDO
--------------------------------------------------------------------------------
insert into "TEST"."TEST_ORCLPDB2"("NUM","TEXT") values ('2','test 2');
insert into "TEST"."TEST_ORCLPDB2"("NUM","TEXT") values ('3','test 3');
insert into "TEST"."TEST_ORCLPDB2"("NUM","TEXT") values ('4','test 4');
update "TEST"."TEST_ORCLPDB2" set "TEXT" = 'ERROR' where "TEXT" = 'test 1' and R
OWID = 'AAAR49AAUAAAACHAAA';

update "TEST"."TEST_ORCLPDB2" set "TEXT" = 'ERROR' where "TEXT" = 'test 2' and R
OWID = 'AAAR49AAUAAAACHAAB';

update "TEST"."TEST_ORCLPDB2" set "TEXT" = 'ERROR' where "TEXT" = 'test 3' and R
OWID = 'AAAR49AAUAAAACHAAC';

SQL_REDO
--------------------------------------------------------------------------------

update "TEST"."TEST_ORCLPDB2" set "TEXT" = 'ERROR' where "TEXT" = 'test 4' and R
OWID = 'AAAR49AAUAAAACHAAD';


9 rows selected.

SQL> begin
  2  
  3  sys.dbms_logmnr.end_logmnr;
  4  
  5  end;
  6  /

PL/SQL procedure successfully completed.

猜你喜欢

转载自blog.csdn.net/qq_21127313/article/details/80624291
今日推荐