ORACLE flashback 為什麼要啟動行遷移功能(轉)
因為被flashback回來的資料的rowid可能會發生變化
SQL> create table tt (id int,name varchar2(4000)) tablespace users;
表已建立。
SQL> alter table tt pctfree 50;
表已更改。
SQL> insert into tt values(1,rpad('a',4000,'+'));
已建立 1 行。
SQL> commit;
提交完成。
SQL> insert into tt values(2,rpad('b',4000,'+'));
已建立 1 行。
SQL> commit;
提交完成。
SQL> select id,substr(name,1,1),rowid from tt;
ID SU ROWID
---------- -- ------------------
1 a AAAC+FAAEAAAGt3AAA
2 b AAAC+FAAEAAAGt4AAA
SQL> analyze table tt compute statistics;
表已分析。
SQL> delete from tt;
已刪除2行。
SQL> commit;
提交完成。
SQL> insert into tt values(3,rpad('c',4000,'+'));
已建立 1 行。
SQL> commit;
提交完成。
--插入id=3時顯然已經重複使用了刪除id=1時的rowid
SQL> select id,substr(name,1,1),rowid from tt;
ID SU ROWID
---------- -- ------------------
3 c AAAC+FAAEAAAGt3AAA
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
379146
SQL> set time on
11:58:34 SQL> select id from tt as of scn 379146;
ID
----------
3
11:58:37 SQL> select id from tt as of scn 379140;
ID
----------
3
11:58:42 SQL> select id from tt as of scn 379130;
ID
----------
3
11:58:47 SQL> select id from tt as of scn 379100;
ID
----------
1
2
11:58:52 SQL> flashback table tt to scn 379100;
flashback table tt to scn 379100
*
第 1 行出現錯誤:
ORA-08189: 因為未啟用行移動功能, 不能閃回表
11:59:42 SQL> alter table tt enable row movement;
表已更改。
11:59:57 SQL> flashback table tt to scn 379100;
閃回完成。
--tt被flashback回來rowid發生了變化,這也是為什麼flashback table 需要enable row movement的原因,正常情況表中資料的rowid是絕對不可以改變的
12:00:25 SQL> select id,substr(name,1,1),rowid from tt;
ID SU ROWID
---------- -- ------------------
2 b AAAC+FAAEAAAGt3AAB
1 a AAAC+FAAEAAAGt4AAA
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24104518/viewspace-713891/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle中flashback table功能為什麼需要開啟row movement功能Oracle
- 為什麼我要遷移 SpringBoot 到函式計算Spring Boot函式
- 為什麼我要遷移SpringBoot到函式計算Spring Boot函式
- SAP系統為什麼要遷移上雲?
- 開啟oracle的flashback閃回功能Oracle
- 為什麼要虛擬化,為什麼要容器,為什麼要Docker,為什麼要K8S?DockerK8S
- 為什麼遊戲要提供視角X\Y軸反轉功能?遊戲
- redis為什麼要提供pipeline功能Redis
- 什麼是遷移學習?什麼時候使用遷移學習?遷移學習
- 轉:VMware遷移的真實教訓:為什麼備份如此重要
- CRM移動軟體有什麼功能?
- Oracle的flashback功能Oracle
- Oracle 11g開啟閃回功能FlashbackOracle
- Oracle行遷移實驗Oracle
- 啟用flashback database 功能Database
- 為什麼我們要從 NodeJS 遷移到 Ruby on RailsNodeJSAI
- 為什麼ORACLE收購SUN要歐盟批准Oracle
- 在Oracle DG Standby庫上啟用flashback database功能OracleDatabase
- 為什麼要removeREM
- 為什麼要敏捷?敏捷
- 分析師認為Oracle將啟動開源行動(轉)Oracle
- 為什麼要早點進入IT行業?行業
- 為什麼要轉行Java開發?十個理由夠不夠Java
- 我們為什麼要從 HTTPRunner 轉向 MeterSphereHTTP
- assm下oracle為什麼為segment提供了shrink功能SSMOracle
- CAMIA:為什麼企業要將資料中心遷往東南亞
- 企業為什麼要進行專案控制?
- 為什麼要選擇代理來進行抓取?
- 【Flashback】啟用Flashback Database閃回資料庫功能Database資料庫
- 為什麼要code reviewView
- 為什麼不斷做遷移,那是在還技術債
- 為什麼移動Web應用程式很慢Web
- GC 為什麼要掛起使用者執行緒? 什麼愁什麼怨?GC執行緒
- 模擬Oracle行遷移和行連結Oracle
- 為什麼Oracle要搞出兩個髒連結串列Oracle
- 科普:為什麼玩遊戲要開啟這個選項?遊戲
- KVM線上遷移(動態遷移)
- 遷移和移動 UNIX 檔案系統(轉)