|
SQLPLUS:
PL/SQL:
- alter database add supplemental log data ;
- alter database add supplemental log data ( primary key ) columns;
-
- select * from flashback_transaction_query ftq
- where ftq.table_name='T_NONCONFLICT_ONLY'
- and ftq.table_owner='HR'
- order by ftq.commit_scn desc ;
-
- begin
- dbms_flashback.transaction_backout(1,
- xids =>sys.xid_array ('0300180076030000'),
- options => dbms_flashback.nonconflict_only);
- end;
-
- select * from hr.t_nocascade;
- select * from hr.t_nonconflict_only;
-
- ----
- select * from dba_flashback_txn_report;
-
- select * from dba_flashback_txn_state;
-
-
- ---080009005C030000
-
- commit;
- -----
-
- select * from flashback_transaction_query ftq
- where ftq.table_name='T_NOCASCADE_FORCE'
- and ftq.table_owner='HR'
- order by ftq.commit_scn desc ;
-
- begin
- dbms_flashback.transaction_backout(1,
- xids =>sys.xid_array ('080014005C030000'),
- options => dbms_flashback.nocascade_force);
- end;
-
- select * from hr.t_nocascade;
- select * from hr.t_nocascade_force;
-
- ----
- select * from dba_flashback_txn_report;
-
- select * from dba_flashback_txn_state;
-
-
- ---080009005C030000
-
- commit;
-
- --------------------
-
- select * from flashback_transaction_query ftq
- where ftq.table_name='T_NON'
- and ftq.table_owner='HR'
- order by ftq.commit_scn desc ;
-
- begin
- dbms_flashback.transaction_backout(1,
- xids =>sys.xid_array ('0600090061030000'),
- options => dbms_flashback.nonconflict_only);
- end;
-
-
-
- commit;
-
- ----------
-
- select * from flashback_transaction_query ftq
- where ftq.table_name='T_NOCF'
- and ftq.table_owner='HR'
- order by ftq.commit_scn desc ;
-
- begin
- dbms_flashback.transaction_backout(1,
- xids =>sys.xid_array ('03001A007C030000'),
- options => dbms_flashback.nocascade_force);
- end;
-
- commit;
复制代码
- select * from dba_flashback_archive;
- select * from dba_flashback_archive_ts;
- select * from dba_flashback_archive_tables;
- create flashback archive fba1
- tablespace users quota 10M retention 10 day;
复制代码
SQLPLUS:
- SQL> alter table employees flashback archive fba1;
- alter table employees flashback archive fba1
- *
- ERROR at line 1:
- ORA-55620: No privilege to use Flashback Archive
- SQL> alter table employees flashback archive fba1;
- Table altered.
- SQL> select object_id from user_objects
- 2 where object_name='EMPLOYEES';
- OBJECT_ID
- ----------
- 73953
- SQL> select * from hr.sys_fba_hist_73953;
- select * from hr.sys_fba_hist_73953
- *
- ERROR at line 1:
- ORA-00942: table or view does not exist
- SQL> select salary from employees where employee_id=100;
- SALARY
- ----------
- 24000
- SQL> update employees set salary=25000 where employee_id=100;
- 1 row updated.
- SQL> commit;
- Commit complete.
- SQL> select * from hr.sys_fba_hist_73953;
- select * from hr.sys_fba_hist_73953
- *
- ERROR at line 1:
- ORA-00942: table or view does not exist
- SQL> /
- RID
- --------------------------------------------------------------------------------
- STARTSCN ENDSCN XID O EMPLOYEE_ID FIRST_NAME
- ---------- ---------- ---------------- - ----------- --------------------
- LAST_NAME EMAIL PHONE_NUMBER
- ------------------------- ------------------------- --------------------
- HIRE_DATE JOB_ID SALARY COMMISSION_PCT MANAGER_ID
- ------------------- ---------- ---------- -------------- ----------
- DEPARTMENT_ID
- -------------
- AAAR5pAAFAAAADPAAA
- 1125736 100 Steven
- King SKING 515.123.4567
- RID
- --------------------------------------------------------------------------------
- STARTSCN ENDSCN XID O EMPLOYEE_ID FIRST_NAME
- ---------- ---------- ---------------- - ----------- --------------------
- LAST_NAME EMAIL PHONE_NUMBER
- ------------------------- ------------------------- --------------------
- HIRE_DATE JOB_ID SALARY COMMISSION_PCT MANAGER_ID
- ------------------- ---------- ---------- -------------- ----------
- DEPARTMENT_ID
- -------------
- 2003-06-17:00:00:00 AD_PRES 24000
- 90
- SQL> update hr.sys_fba_hist_73953 set SALARY=23000 ;
- update hr.sys_fba_hist_73953 set SALARY=23000
- *
- ERROR at line 1:
- ORA-55622: DML, ALTER and CREATE UNIQUE INDEX operations are not allowed on
- table "HR"."SYS_FBA_HIST_73953"
- SQL>
- SQL> create table t05311_a ( a number , b varchar2(20)) ;
- Table created.
- SQL> show user
- USER is "HR"
- SQL> insert into t05311_a values ( 1 , 'A') ;
- 1 row created.
- SQL> commit;
- Commit complete.
- SQL> alter table t05311_a flashback archive ;
- Table altered.
- SQL> select to_char(sysdate,'YYYY-MM-DD:HH24:MI:SS') from dual;
- TO_CHAR(SYSDATE,'YY
- -------------------
- 2017-08-22:21:00:24
- SQL> update t05311_a set a=2 , b='B';
- 1 row updated.
- SQL> commit;
- Commit complete.
- SQL> select * from sys_fba_hist_74619;
- select * from sys_fba_hist_74619
- *
- ERROR at line 1:
- ORA-00942: table or view does not exist
- SQL> /
- RID
- --------------------------------------------------------------------------------
- STARTSCN ENDSCN XID O A B
- ---------- ---------- ---------------- - ---------- --------------------
- AAASN7AAEAAAALWAAA
- 1126744 1127241 03001C0080030000 I 1 A
- SQL> select * from t05311_a
- 2 as of timestamp to_timestamp('2017-08-22:21:00:24','YYYY-MM-DD:HH24:MI:SS') ;
- A B
- ---------- --------------------
- 1 A
- SQL> select * from t05311_a
- 2 as of scn 1127241;
- A B
- ---------- --------------------
- 2 B
- SQL> select * from t05311_a
- 2 as of scn 1127240;
- A B
- ---------- --------------------
- 1 A
- SQL> update t05311_a set a=3,b='C' ;
- 1 row updated.
- SQL> commit;
- Commit complete.
- SQL> update t05311_a set a=4,b='D' ;
- 1 row updated.
- SQL> commit;
- Commit complete.
- SQL> select to_char(sysdate,'YYYY-MM-DD:HH24:MI:SS') from dual;
- TO_CHAR(SYSDATE,'YY
- -------------------
- 2017-08-22:21:11:55
- SQL> alter table t05311_a drop ( b) ;
- Table altered.
- SQL> select * from t05311_a;
- A
- ----------
- 4
- SQL> update t05311_a set a=5 ;
- 1 row updated.
- SQL> commit;
- Commit complete.
- SQL> select versions_xid, versions_operation , a, b from t05311_a
- 2 versions between scn minvalue and maxvalue ;
- VERSIONS_XID V A B
- ---------------- - ---------- --------------------
- 03001C0080030000 I 1 A
- 0800110064030000 U 3 C
- 020003007E030000 U 2 B
- 02000B007F030000 U 4 D
- 05001B0025040000 U 5
- U 4
- 6 rows selected.
- SQL> select versions_xid, versions_operation ,versions_startscn , a, b from t05311_a
- 2 versions between scn minvalue and maxvalue ;
- VERSIONS_XID V VERSIONS_STARTSCN A B
- ---------------- - ----------------- ---------- --------------------
- 03001C0080030000 I 1126744 1 A
- 0800110064030000 U 1128449 3 C
- 020003007E030000 U 1127241 2 B
- 02000B007F030000 U 1128486 4 D
- 05001B0025040000 U 1128666 5
- U 1128543 4
- 6 rows selected.
- SQL>
- SQL> select * from t05311_a
- 2 as of timestamp to_timestamp('2017-08-22:21:11:55','YYYY-MM-DD:HH24:MI:SS');
- A B
- ---------- --------------------
- 4 D
- SQL> alter table t05311_a enable row movement ;
- Table altered.
- SQL> flashback table to timestamp to_timestamp('2017-08-22:21:11:55','YYYY-MM-DD:HH24:MI:SS');
- flashback table to timestamp to_timestamp('2017-08-22:21:11:55','YYYY-MM-DD:HH24:MI:SS')
- *
- ERROR at line 1:
- ORA-00903: invalid table name
- SQL> flashback table t05311_a to timestamp to_timestamp('2017-08-22:21:11:55','YYYY-MM-DD:HH24:MI:SS');
- flashback table t05311_a to timestamp to_timestamp('2017-08-22:21:11:55','YYYY-MM-DD:HH24:MI:SS')
- *
- ERROR at line 1:
- ORA-01466: unable to read data - table definition has changed
- SQL>
复制代码
PL/SQL:
- select * from dba_flashback_archive;
- select * from dba_flashback_archive_ts;
- select * from dba_flashback_archive_tables;
- select * from dba_tab_privs tp where tp.grantee='HR';
- grant flashback archive on fba1 to hr;
- select * from dba_tab_privs tp where tp.grantee='HR';
- create flashback archive default fba2 tablespace users
- quota 20M retention 1 year;
-
- select * from dba_flashback_archive;
-
- grant flashback archive on fba2 to hr;
-
- select * from dba_flashback_archive_ts;
- -------------------------
-
- select * from dba_flashback_archive_tables;
- alter flashback archive fba1 set default;
- select * from dba_flashback_archive;
- ------------------
- select * from dba_flashback_archive_ts;
-
- alter flashback archive fba2 add tablespace example quota 30M ;
-
- alter flashback archive fba2 modify tablespace users quota 40M;
-
- ----------
- alter flashback archive fba2 modify retention 5 year;
-
- select * from dba_flashback_archive;
复制代码
- alter flashback archive fba2 purge before timestamp
- (systimestamp- numtodsinterval('1','second') );
- select * from dba_flashback_archive_tables;
- select * from hr.SYS_FBA_HIST_74619;
- alter table hr.t05311_a no flashback archive;
复制代码 SQLPLUS:
- SQL> show user
- USER is "HR"
- SQL> create table part1 ( a number , b varchar2(20))
- 2 partition by range(a )
- 3 ( partition p1 values less than(100),
- 4 partition p2 values less than(maxvalue)) ;
- Table created.
- SQL> insert into part1 values (100, 'X' ) ;
- 1 row created.
- SQL> insert into part1 values (1000, 'X' ) ;
- 1 row created.
- SQL> commit;
- Commit complete.
- SQL> select * from part1 partition ( p2 ) ;
- A B
- ---------- --------------------
- 100 X
- 1000 X
- SQL> alter table part1 flashback archive fba2 ;
- Table altered.
- SQL> select to_char(sysdate,'YYYY-MM-DD:HH24:MI:SS') from dual;
- TO_CHAR(SYSDATE,'YY
- -------------------
- 2017-08-22:21:35:30
- SQL>
- SQL> update part1 set a=200, b='Y' where a=100;
- 1 row updated.
- SQL> commit;
- Commit complete.
- SQL> select * from SYS_FBA_HIST_74629;
- select * from SYS_FBA_HIST_74629
- *
- ERROR at line 1:
- ORA-00942: table or view does not exist
- SQL> show user
- USER is "HR"
- SQL> select * from SYS_FBA_HIST_74629;
- RID
- --------------------------------------------------------------------------------
- STARTSCN ENDSCN XID O A B
- ---------- ---------- ---------------- - ---------- --------------------
- AAASOHAAEAAAAK+AAA
- 1130315 1130446 0500110027040000 I 100 X
- SQL> alter table part1 split partition p2 at ( 500) into (partition p21 , partition p22 ) ;
- alter table part1 split partition p2 at ( 500) into (partition p21 , partition p22 )
- *
- ERROR at line 1:
- ORA-55610: Invalid DDL statement on history-tracked table
- SQL> select * from SYS_FBA_HIST_74629;
- RID
- --------------------------------------------------------------------------------
- STARTSCN ENDSCN XID O A B
- ---------- ---------- ---------------- - ---------- --------------------
- AAASOHAAEAAAAK+AAA
- 1130315 1130446 0500110027040000 I 100 X
- SQL> update SYS_FBA_HIST_74629 set a=101 where a=100 ;
- 1 row updated.
- SQL> commit;
- Commit complete.
- SQL> alter table part1 split partition p2 at ( 500) into (partition p21 , partition p22 ) ;
- Table altered.
- SQL> select * from SYS_FBA_HIST_74629;
- RID
- --------------------------------------------------------------------------------
- STARTSCN ENDSCN XID O A B
- ---------- ---------- ---------------- - ---------- --------------------
- AAASOHAAEAAAAK+AAA
- 1130315 1130446 0500110027040000 I 101 X
- SQL> select * from part1 where a=100;
- no rows selected
- SQL> select * from part1 ;
- A B
- ---------- --------------------
- 200 Y
- 1000 X
- SQL> select * from part1 where a=200;
- A B
- ---------- --------------------
- 200 Y
- SQL> select * from part1 where a=200 as of scn 1130445;
- select * from part1 where a=200 as of scn 1130445
- *
- ERROR at line 1:
- ORA-00933: SQL command not properly ended
- SQL> select * from part1 as of scn 1130445 where a=200;
- A B
- ---------- --------------------
- 200 Y
- SQL> select * from part1 as of scn 1130445 ;
- A B
- ---------- --------------------
- 101 X
- 1000 X
- 200 Y
- SQL>
复制代码 PL/SQL:
- drop flashback archive fba1;
- select * from dba_flashback_archive;
- select * from dba_flashback_archive_ts;
- select * from dba_flashback_archive_tables;
- ----
- select * from dba_tab_partitions tp
- where tp.table_owner='HR' and tp.table_name='PART1';
-
- ----
-
- begin
- dbms_flashback_archive.disassociate_fba(owner_name => 'HR',
- table_name => 'PART1') ;
- end;
-
- begin
- dbms_flashback_archive.reassociate_fba(owner_name => 'HR',
- table_name => 'PART1') ;
- end;
-
复制代码
|
|