flashback與dmt tbs以及trigger,materialized view log之間的關係!
參加ocp考試的時候其中有一個題就問到了有關flashback和trigger以及materialized view log相關的問題,這裡做了一個簡單的測試!
SQL> create table t3(id int);
表已建立。
SQL> create table t4(time date);
表已建立。
SQL> edit
已寫入 file afiedt.buf
1 create or replace trigger trigg_flashback
2 before ddl on xys.schema
3 begin
4 insert into t4 values(sysdate);
5* end;
SQL> /
觸發器已建立
SQL> insert into t3 values(1);
已建立 1 行。
SQL> insert into t3 values(2);
已建立 1 行。
SQL> commit;
提交完成。
SQL> select * from t4;
未選定行
SQL> drop table t3;
表已刪除。
SQL> select *from t4;
TIME
--------------
30-9月 -07
SQL> flashback table t3 to before drop;
flashback table t3 to before drop
*
第 1 行出現錯誤:
ORA-38305: 物件不在回收站中
--當物件在dmt表空間中刪除之後不能被flashback!
SQL> show user
USER 為 "XYS"
SQL> select username , default_tablespace from dba_users where username='XYS';
USERNAME DEFAULT_TABLESPACE
------------------------------ ------------------------------
XYS DMT
SQL> SELECT tablespace_name , extent_management from dba_tablespaces where table
space_name='DMT';
TABLESPACE_NAME EXTENT_MAN
------------------------------ ----------
DMT DICTIONARY
--===================================
SQL> SELECT tablespace_name , extent_management from dba_tablespaces ;
TABLESPACE_NAME EXTENT_MAN
------------------------------ ----------
SYSTEM DICTIONARY
UNDOTBS1 LOCAL
SYSAUX LOCAL
TEMP LOCAL
TEST LOCAL
DMT DICTIONARY
已選擇6行。
SQL> create table t3(id int) tablespace test;
表已建立。
SQL> select *from t4;
TIME
--------------
30-9月 -07
30-9月 -07
SQL> drop table t3;
表已刪除。
SQL> select *from t4;
TIME
--------------
30-9月 -07
30-9月 -07
30-9月 -07
SQL> flashback table t3 to before drop;
閃回完成。
SQL> select *from t4;
TIME
--------------
30-9月 -07
30-9月 -07
30-9月 -07
SQL> edit
已寫入 file afiedt.buf
1 create or replace trigger trigg_dml
2 after insert or update or delete on t3
3 begin
4 insert into t4 values(sysdate);
5* end;
SQL> /
觸發器已建立
SQL> select *from t4;
TIME
--------------
30-9月 -07
30-9月 -07
30-9月 -07
30-9月 -07
SQL> drop table t3;
表已刪除。
SQL> select trigger_name from user_triggers;
TRIGGER_NAME
------------------------------
BIN$gNBYIm15Sayuj586xqJA0w==$0
TRIGG_FLASHBACK
SQL> select trigger_name , status from user_triggers;
TRIGGER_NAME STATUS
------------------------------ --------
BIN$aV3SGlwWTsmWXSOFGbtsjg==$2 ENABLED
TRIGG_FLASHBACK ENABLED
--我們看到t3上的trigger當t3被刪除之後也被刪除,當t3被flashback之後,triggre也被flashback回來了,但是名字以及不是原來的名字了,依然是recyclebin中的名字,這個也index是一樣的,不知道oracle是出於什麼目的,flashback之後名字不是原來的名字了?而且值得注意的是trigger不論在被刪除還是flashback的過程中都不觸發!被flashback之後其status還是enable,這一點和index被flashback之後也是一樣的!
SQL> select * from t4;
TIME
--------------
30-9月 -07
30-9月 -07
30-9月 -07
30-9月 -07
30-9月 -07
SQL> flashback table t3 to before drop;
閃回完成。
SQL> select *from t4;
TIME
--------------
30-9月 -07
30-9月 -07
30-9月 -07
30-9月 -07
30-9月 -07
SQL> select trigger_name from user_triggers;
TRIGGER_NAME
------------------------------
BIN$gNBYIm15Sayuj586xqJA0w==$0
TRIGG_FLASHBACK
SQL> create materialized view log on t3;
create materialized view log on t3
*
第 1 行出現錯誤:
ORA-12014: 表 'T3' 不包含主鍵約束條件
SQL> alter table t3 add constraint pk_t3 primary key (id);
表已更改。
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
T
T1
T_1
T3
T4
SYS_TEMP_FBT
T2
已選擇7行。
SQL> create materialized view log on t3;
實體化檢視日誌已建立。
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
T
T1
T_1
T3
T4
MLOG$_T3
RUPD$_T3
SYS_TEMP_FBT
T2
已選擇9行。
SQL> drop table t3;
表已刪除。
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
T
T1
T_1
T4
SYS_TEMP_FBT
T2
已選擇6行。
SQL> flashback table t3 to before drop;
閃回完成。
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
T
T1
T_1
T3
T4
SYS_TEMP_FBT
T2
已選擇7行。
SQL>
我們看到當表上存在materialized view log的時候,如果table被drop,那麼materialized view log也被drop掉了,但是flashback table之後,materialized view log並沒有被flashback回來!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/19602/viewspace-61735/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- archivelog模式和flashback db以及guarantee restore point之間的相互制約關係!Hive模式REST
- Window、WindowManager、View 之間的關係View
- Activity、View、Window之間關係的分析View
- 資料庫的FLASHBACK 與ARCHIVELOG模式的關係資料庫Hive模式
- Materialized View Logs (190)ZedView
- 11g中的materialized view logZedView
- Android 中Activity,Window和View之間的關係AndroidView
- ODS與DW之間的關係
- Materialized ViewZedView
- TLS與SSL之間關係TLS
- ps 與 svmon之間關係
- 類與類之間的基本關係
- PHP的工作原理以及lamp四者之間的關係PHPLAMP
- DDD與團隊拓撲以及微服務之間的關係圖 - aleixmorgadas微服務
- 思考 TPS 與 RT 之間的關係
- 談Ubuntu與FOSS之間的關係(轉)Ubuntu
- FAILGROUP和REDUNDANCY之間的關係關係!AI
- materialized view 的總結ZedView
- 建立Materialized view log時是否使用sequence clause的差別ZedView
- 類之間的關係
- 成員方法與const之間的關係
- 專案,計劃以及總體工作之間的關係(轉)
- drop materialized view hung !!!ZedView
- MySQL中redo log、undo log、binlog關係以及區別MySql
- 【java】類之間的關係Java
- slf4j-api、slf4j-log4j12以及log4j之間什麼關係?API
- 探索“精益”與“智慧製造”之間的關係
- dispaly、position、float之間的關係與相互作用
- ERP與精益生產之間的關係
- 前端之DOM解析和渲染與CSS、JS之間的關係前端CSSJS
- about materialized view and long(turn)ZedView
- materialized view (物化檢視)ZedView
- UML中類之間的關係
- tablespace和datafile之間的關係
- 不同層之間的物件關係物件
- 詳解js原型,建構函式以及class之間的原型關係JS原型函式
- 關於叢集與分散式,反向代理正向代理的概念以及叢集與反向代理伺服器之間的關係分散式伺服器
- 大資料技術與Hadoop之間的關係大資料Hadoop