第7天-2 flashback table 】【flashback version query 】【flas
发布时间:2020-12-15 17:48:21 所属栏目:百科 来源:网络整理
导读:flashback--============1.flashback query (undo)2.flashback drop (recyclebin)(system tablespace不支持)3.flashback table(undo)(sys user 不支持)4.flashback version query select versions_xid,versions_operation,versions_startscn,versions_startt
flashback --============ 1.flashback query (undo) 2.flashback drop (recyclebin)(system tablespace不支持) 3.flashback table(undo)(sys user 不支持) 4.flashback version query select versions_xid,versions_operation,versions_startscn,versions_starttime,versions_endscn,versions_endtime,id,name from t2 versions between scn minvalue and maxvalue; 5.flashback transaction query select * from flashback_transaction_query where xid='0900020066020000' 6.flashback database select flashback_on from v$database select tablespace_name from user_tablespaces select * from user_tables SQL> alter table t move; --改变数据物理位置,导致index失效 --flashback删除放到回收站中的数据的rowid,可以被oracle重新使用,在对其进行闪回时,就可能导致rowid需要改变,所有闪回前提是允许行移动 3.flashback table(sys user 不支持) SQL> select table_name,ROW_MOVEMENT from user_tables; TABLE_NAME ROW_MOVE ------------------------------ -------- T DISABLED SYS_TEMP_FBT DISABLED TT DISABLED SQL> select t.*,rowid from t; ID ROWID ---------- ------------------ 3 AAAE45AAEAAAB1IAAA 3 AAAE45AAEAAAB1IAAB SQL> alter table t enable row movement; 表已更改。 SQL> flashback table t to scn 2306145; 闪回完成。 SQL> select * from t; ID ---------- 1 2 4.flashback version query select versions_xid,name from t2 versions between scn minvalue and maxvalue; VERSIONS_XID VERSIONS_OPERATION VERSIONS_STARTSCN VERSIONS_STARTTIME VERSIONS_ENDSCN VERSIONS_ENDTIME ID NAME 1 040022004C020000 D 2308064 07-12月-13 04.15.12 下午 3 c 2 0900020066020000 U 2308015 07-12月-13 04.14.06 下午 1 abc 3 2308015 07-12月-13 04.14.06 下午 1 a 4 2 b 5 2308064 07-12月-13 04.15.12 下午 3 c 6 4 d 5.flashback transaction query select * from flashback_transaction_query where xid='0900020066020000' XID START_SCN START_TIMESTAMP COMMIT_SCN COMMIT_TIMESTAMP LOGON_USER UNDO_CHANGE# OPERATION TABLE_NAME TABLE_OWNER ROW_ID UNDO_SQL 1 0900020066020000 2308005 2013-12-7 16:13:39 2308015 2013-12-7 16:14:06 TEST 1 UPDATE T2 TEST AAAE47AAEAAAB1QAAA update "TEST"."T2" set "NAME" = 'a' where ROWID = 'AAAE47AAEAAAB1QAAA'; 2 0900020066020000 2308005 2013-12-7 16:13:39 2308015 2013-12-7 16:14:06 TEST 2 UNKNOWN T2 3 0900020066020000 2308005 2013-12-7 16:13:39 2308015 2013-12-7 16:14:06 TEST 3 BEGIN SQL> select * from t2; ID NAME ---------- ---------- 1 abc 2 b 4 d SQL> update "TEST"."T2" set "NAME" = 'a' where ROWID = 'AAAE47AAEAAAB1QAAA'; --select * from flashback_transaction_query where xid='0900020066020000'中的UNDO_SQL 已更新 1 行。 SQL> select * from t2; ID NAME ---------- ---------- 1 a 2 b 4 d SQL> commit; 6.flashback database select flashback_on from v$database; select * from v$flashback_database_logfile --闪回日志文件 select * from v$flashback_database_log --查询闪回可以退到的点 select * from v$flashback_database_stat select * from v$process SQL> select log_mode,flashback_on from v$database; LOG_MODE FLASHBACK_ON ------------ ------------------ ARCHIVELOG NO SQL> alter database flashback on; 数据库已更改。 SQL> show parameter db_recovery NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string C:oracleproduct10.2.0flash _recovery_area db_recovery_file_dest_size big integer 2G SQL> select flashback_on from v$database; --模拟误删了用户,用flashback database闪回到没有删除用户之前 SQL> select current_scn from v$database; CURRENT_SCN ----------- 2324494 SQL> drop user test; drop user test * 第 1 行出现错误: ORA-01922: 必须指定 CASCADE 以删除 'TEST' SQL> drop user test cascade; 用户已删除。 SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup mount ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务 SQL> disc 从 Oracle Database 10g Enterprise Edition Release 10.2.0. With the Partitioning,OLAP and Data Mining options 断开 SQL> connect /@jingtai1 as sysdba 已连接到空闲例程。 SQL> startup mount; ORACLE 例程已经启动。 Total System Global Area 209715200 bytes Fixed Size 1289724 bytes Variable Size 142606852 bytes Database Buffers 58720256 bytes Redo Buffers 7098368 bytes 数据库装载完毕。 SQL> flashback database to scn 2324494; 闪回完成。 SQL> select file#,checkpoint_change# from datafile; SQL> select file#,checkpoint_change# from v$datafile; FILE# CHECKPOINT_CHANGE# ---------- ------------------ 1 2324497 2 2324497 3 2324497 4 2324497 5 2324497 6 2324497 7 2324497 8 2324497 9 2324497 10 2324497 11 2324497 已选择11行。 SQL> select file#,checkpoint_change# from v$datafile_head FILE# CHECKPOINT_CHANGE# ---------- ------------------ 1 2324497 2 2324497 3 2324497 4 2324497 5 2324497 6 2324497 7 2324497 8 2324497 9 2324497 10 2324497 11 2324497 已选择11行。 SQL> alter database open read only; alter database open read only * 第 1 行出现错误: ORA-16006: audit_trail 目标与数据库打开模式不兼容 SQL> show parameter audit; NAME TYPE VALUE ------------------------------------ ----------- -------- audit_file_dest string C:ORACL TESTAD audit_sys_operations boolean FALSE audit_trail string DB_EXTEN SQL> alter system set audit_trail=none scope=spfile; 系统已更改。 SQL> shutdown immediate ORA-01109: 数据库未打开 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup; ORACLE 例程已经启动。 Total System Global Area 209715200 bytes Fixed Size 1289724 bytes Variable Size 150995460 bytes Database Buffers 50331648 bytes Redo Buffers 7098368 bytes 数据库装载完毕。 ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOG SQL> alter database open read only; 数据库已更改。 SQL> select usrname from dba_users; SQL> select username from dba_users; USERNAME ------------------------------ TEST1 TEST TEST2 DIP TSMSYS SYSMAN DBSNMP WMSYS SYSTEM SYS MGMT_VIEW USERNAME ------------------------------ OUTLN 已选择12行。 SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup mount ORACLE 例程已经启动。 Total System Global Area 209715200 bytes Fixed Size 1289724 bytes Variable Size 159384068 bytes Database Buffers 41943040 bytes Redo Buffers 7098368 bytes 数据库装载完毕。 SQL> alter database open resetlogs; 数据库已更改。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |