閃回和drop原 undo tbs的一點分析
Flashback閃回,表級閃回是由undo回滾段作支撐的(表的結構不能改變,不能alter,truncate等ddl操作),而10g的閃回drop的表是由於表空間的虛擬回收站來閃回的,被刪除的表只是被重新命名而已,在空間足夠情況下並沒有徹底清除。而10g的資料庫級的閃回則是又閃回日誌來支撐的!
表級閃回跟undo表空間
SQL> select * from xiaoyu.test03;
ID
----------
44
11
22
33
44
11
22
33
8 rows selected
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
2133219
SQL> insert into xiaoyu.test03 select * from xiaoyu.test03;
8 rows inserted
SQL> commit;
Commit complete
SQL> create undo tablespace undotbspace01 datafile 'd:oracleproduct10.2.0oradataxiaoyuundotbspace01.dbf' size 50M;
Tablespace created
SQL> alter system set undo_tablespace=undotbspace01;
System altered
SQL> drop tablespace undotb including contents and datafiles;
Tablespace dropped
SQL> select * from xiaoyu.test03 as of scn 2133219;
select * from xiaoyu.test03 as of scn 2133219
ORA-01555: 快照過舊: 回退段號 (名稱為 "") 過小
可以看出drop原xiaoyu.test03的在insert時期的回滾段所在的回滾表空間,閃回查詢時已經無法查詢到以前的回滾段出現ora-01555
再看下面的這個例子:
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
2134728
SQL> create undo tablespace undotbs02 datafile 'd:oracleproduct10.2.0oradataxiaoyuundotbs02.dbf' size 50M;
Tablespace created
SQL> insert into xiaoyu.test03 select * from xiaoyu.test03;
32 rows inserted
SQL> commit;
Commit complete
SQL> alter system set undo_tablespace=undotbs02;
System altered
SQL> select count(*) from xiaoyu.test03;
COUNT(*)
----------
64
SQL> select count(*) from xiaoyu.test03 as of scn 2134728;
COUNT(*)
----------
32
SQL> drop tablespace undotbs01 including contents and datafiles;
Tablespace dropped
SQL> select count(*) from xiaoyu.test03 as of scn 2134728;
COUNT(*)
----------
32
看出第二個例子即使刪除了原undo的回滾段資訊,還是可以進行基於原undo表空間所記錄的回滾段的閃回查詢,第二個例子在刪除原undo表空間前進行了一次閃回查詢,個人推斷刪除表空間前的閃回查詢獲取了原undo表空間的undo段儲存在cache buffer中並結合block構造cr塊,所以drop原undo tablespace後閃回查詢可以從cache buffer中獲取undo block進行查詢。
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25362835/viewspace-1057010/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 還原點和閃回資料庫資料庫
- 閃回查詢(undo sql)SQL
- 閃回還原點restore pointREST
- 【PDB】pdb閃回,Oracle還原點Oracle
- Orace Flash Restore Point(閃回還原點)REST
- Flashback Drop閃回刪除功能實踐
- Backup And Recovery User's Guide-使用閃回資料庫和還原點-閃回資料庫的限制GUIIDE資料庫
- Backup And Recovery User's Guide-使用閃回資料庫和還原點-閃回資料庫GUIIDE資料庫
- 【Flashback】使用Flashback Drop技術閃回被DROP表的指定版本資料
- Backup And Recovery User's Guide-使用閃回資料庫和還原點-正常的還原點GUIIDE資料庫
- 【Flashback】Flashback Drop閃回刪除功能實踐
- Backup And Recovery User's Guide-使用閃回資料庫和還原點-保證的還原點GUIIDE資料庫
- Backup And Recovery User's Guide-使用閃回資料庫和還原點-閃回資料庫視窗GUIIDE資料庫
- 利用undo的閃回特性恢復錯誤操作的表
- 基本閃回查詢和閃回表
- Backup And Recovery User's Guide-理解閃回資料庫、還原點和保證還原點GUIIDE資料庫
- 利用可靠還原點進行資料庫閃回資料庫
- 閃回技術一:閃回查詢
- truncate,delete,drop的異同點(原)delete
- 【備份恢復】閃回資料庫(四)基於可靠還原點閃回資料庫資料庫
- (f)--閃回恢復區---實踐3---閃回查詢(基於AUM (auto undo managemet))
- 【FLASHBACK】關於閃回資料庫的一點說明資料庫
- Backup And Recovery User's Guide-閃回資料庫日誌和保證的還原點GUIIDE資料庫
- Flashback Drop閃回刪除功能實踐(基於回收站)
- 閃回之 回收站、Flashback Drop (table、index、trigger等)Index
- redo與undo的一點點思考
- 關於UNDO 內部一致性讀和回滾依賴的UNDO CHAIN描述AI
- Oracle 回滾(ROLLBACK)和撤銷(UNDO)Oracle
- ora-01555模擬以及undo tbs的guarantee特性測試!
- 閃回表、閃回查詢
- Backup And Recovery User's Guide-使用閃回資料庫和還原點-保證還原點與儲存快照對比GUIIDE資料庫
- Oracle 閃回刪除表原理分析Oracle
- Backup And Recovery User's Guide-閃回資料庫和保證還原點的先決條件GUIIDE資料庫
- 【備份恢復】閃回資料庫(一)閃回資料庫的管理資料庫
- 閃回(關於閃回查詢)
- 閃回刪除、閃回查詢
- 閃回技術二:閃回表
- SQLServer的檢查點、redo和undoSQLServer