首页 > 数据库 > Oracle > flashback对模式对象的影响
原创
[@more@]--检查是否可以闪回
Select flashback_on from v$database; --闪回数据库
--建立表
Create table t(id int);
Create or replace procedure p_t
As
V_count int;
Begin
Select count(*) into v_count from t;
End;
/
--建立触发器
Create or replace trigger tri_t_ariud
After insert or update or delete on t
For each row
Is
V_rtn int;
Begin
V_rtn := 2;
End;
/
--建立索引
Create index idx_t_id on t(id);
--检查当前的scn方便返回
Select dbms_flashback.get_system_change_number from v$database;
--插入记录
Insert into t values(1);
Insert into t values(2);
Commit;
--drop table
Drop table t;
--检查dba_objects的状态和recyclebin中的对象,schema等存在于数据字典视图中的对象应该不会体现在recyclebin需要段空间
--删除对象的先后顺序
Select * From Recyclebin
OBJECT_NAME ORIGINAL_NAME TYPE DROPSCN OPERATION
BIN$W5ddb4tAShebj5P91Lnnww==$0 IDX_T_ID INDEX 444381 DROP--first
BIN$zMZug55lRnySCQS57LluLQ==$0 TRI_T_ARIUD TRIGGER 444383 DROP--third
BIN$77Mp5uLGQkiYjHl3TgjBfQ==$0 T TABLE 444392 DROP –second
Select * From user_objects
OBJECT_NAME SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE STATUS
P_T 49643 PROCEDURE INVALID
BIN$zMZug55lRnySCQS57LluLQ==$0 49645 TRIGGER INVALID
BIN$77Mp5uLGQkiYjHl3TgjBfQ==$0 49639 49639 TABLE VALID
BIN$W5ddb4tAShebj5P91Lnnww==$0 49644 49644 INDEX VALID
结论:索引删除;存放在数据字典中的对象无效;
--闪回到scn
Flashback table t to before drop ;
Select * From user_objects
OBJECT_NAME SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID STATUS OBJECT_TYPE
T 49639 49639 VALID TABLE
P_T 49643 INVALID PROCEDURE
BIN$zMZug55lRnySCQS57LluLQ==$0 49645 INVALID TRIGGER
BIN$W5ddb4tAShebj5P91Lnnww==$0 49644 49644 VALID INDEX
结论:索引返回可以起作用,但是名称无法返回;存放在数据字典中的对象无效,需要重新编译—过程可以,但是索引和触发器内容已经改变了,无法回到以前的名称了
Create Or Replace Trigger "BIN$zMZug55lRnySCQS57LluLQ==$0"
After insert or update or delete on T
For each row
Declare
V_rtn int;
Begin
V_rtn := 2;
End;在user_objects中标记为invalid但是在调用的时候自动编译成有效,但是触发器名称不会变过来…
Flashback table t to scn …;
Flashback table t to timestamp scn_to_timestamp(…);
--检查dba_objects的状态和recyclebin中的对象的恢复情况,procedure对象需要重新编译
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/450962/viewspace-1027679/ ,如需转载,请注明出处,否则将追究法律责任。