ITPub博客

首页 > 数据库 > Oracle > flashback对模式对象的影响

flashback对模式对象的影响

原创 Oracle 作者:yaoronghui2005 时间:2009-10-09 17:21:01 0 删除 编辑

原创

[@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/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: oracle常用命令
下一篇: flashback小结
请登录后发表评论 登录
全部评论
  • 博文量
    153
  • 访问量
    176623