创建TEST表:
Create table test as select * from user_objects;
创建TEST_BAK表:
Create table test_bak as select * from test;
创建procedure:
createorreplaceprocedurepro_test
is
id_cntnumber;
begin
selectcount(object_id)intoid_cntfromtest;
dbms_output.put_line('Object_id:'||id_cnt);
end;
创建trigger:
CREATE OR REPLACE TRIGGER "HAO"."TRG_TEST"
after insert or delete on TEST
for each row
begin
dbms_output.put_line('modified!');
exception
when others then
dbms_output.put_line(sqlerrm);
end;
/
创建index:
Create index idx_test_object_id on test(object_id);
创建约束:
主键:
alter table test_bak add constraint pk_test_bak primary key (object_id);
外键:
alter table test add constraint fk_test foreign key (object_id) references test_bak(object_id);
SQL> select object_name,object_type,status from user_objects;
OBJECT_NAME OBJECT_TYPE STATUS
------------------------------ ------------------- -------
TEST TABLE VALID
TEST_BAK TABLE VALID
PRO_TEST PROCEDURE VALID
IDX_TEST_OBJECT_ID INDEX VALID
PK_TEST_BAK INDEX VALID
TRG_TEST TRIGGER VALID
SQL> select constraint_name,constraint_type,status from user_constraints;
CONSTRAINT_NAME C STATUS
------------------------------ - --------
FK_TEST R ENABLED
PK_TEST_BAK P ENABLED
SQL> drop table test;
表已删除。
SQL> select object_name,object_type,status from user_objects;
OBJECT_NAME OBJECT_TYPE STATUS
------------------------------ ------------------- -------
TEST_BAK TABLE VALID
BIN$qdWcERzdS+yMK7Vqv9E1UA==$0 TRIGGER INVALID
PRO_TEST PROCEDURE INVALID
BIN$v6zc94PYQCON0EGJ9tMvQQ==$0 TABLE VALID
PK_TEST_BAK INDEX VALID
BIN$MEmOkWEiQ8GnifY4O+9Y8g==$0 INDEX VALID
已选择6行。
SQL> select constraint_name,constraint_type,status from user_constraints;
CONSTRAINT_NAME C STATUS
------------------------------ - --------
PK_TEST_BAK P ENABLED
SQL> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ ----------------
TEST BIN$v6zc94PYQCON0EGJ9tMvQQ==$0 TABLE 2008-11-24:20:17
SQL> flashback table test to before drop;
闪回完成。
SQL> select object_name,object_type,status from user_objects;
OBJECT_NAME OBJECT_TYPE STATUS
------------------------------ ------------------- -------
TEST TABLE VALID
TEST_BAK TABLE VALID
BIN$qdWcERzdS+yMK7Vqv9E1UA==$0 TRIGGER INVALID
PRO_TEST PROCEDURE INVALID
PK_TEST_BAK INDEX VALID
BIN$MEmOkWEiQ8GnifY4O+9Y8g==$0 INDEX VALID
已选择6行。
SQL> alter index "BIN$MEmOkWEiQ8GnifY4O+9Y8g==$0" rename to IDX_TEST_OBJECT_I
索引已更改。
SQL> select object_name,object_type,status from user_objects;
OBJECT_NAME OBJECT_TYPE STATUS
------------------------------ ------------------- -------
TEST TABLE VALID
TEST_BAK TABLE VALID
BIN$qdWcERzdS+yMK7Vqv9E1UA==$0 TRIGGER INVALID
PRO_TEST PROCEDURE INVALID
IDX_TEST_OBJECT_ID INDEX VALID
PK_TEST_BAK INDEX VALID
已选择6行。
SQL> alter trigger "BIN$qdWcERzdS+yMK7Vqv9E1UA==$0" rename to trg_test;
触发器已更改
SQL> select object_name,object_type,status from user_objects;
OBJECT_NAME OBJECT_TYPE STATUS
------------------------------ ------------------- -------
TEST TABLE VALID
TEST_BAK TABLE VALID
PRO_TEST PROCEDURE INVALID
IDX_TEST_OBJECT_ID INDEX VALID
PK_TEST_BAK INDEX VALID
TRG_TEST TRIGGER INVALID
已选择6行。
SQL> alter trigger trg_test compile;
触发器已更改
SQL> select object_name,object_type,status from user_objects;
OBJECT_NAME OBJECT_TYPE STATUS
------------------------------ ------------------- -------
TEST TABLE VALID
TEST_BAK TABLE VALID
PRO_TEST PROCEDURE INVALID
IDX_TEST_OBJECT_ID INDEX VALID
PK_TEST_BAK INDEX VALID
TRG_TEST TRIGGER VALID
已选择6行。
SQL> alter procedure pro_test compile;
过程已更改。
SQL> select object_name,object_type,status from user_objects;
OBJECT_NAME OBJECT_TYPE STATUS
------------------------------ ------------------- -------
TEST TABLE VALID
TEST_BAK TABLE VALID
PRO_TEST PROCEDURE VALID
IDX_TEST_OBJECT_ID INDEX VALID
PK_TEST_BAK INDEX VALID
TRG_TEST TRIGGER VALID
已选择6行。
SQL> select constraint_name,constraint_type,status from user_constraints;
CONSTRAINT_NAME C STATUS
------------------------------ - --------
PK_TEST_BAK P ENABLED
Flashback drop并没有把FK恢复!
总结:
在recyclebin on的状态下,Drop table之后,会将table和trigger重新命名,procedures则不会重命名,flashback drop可以恢复表以及相关object,但是对于procedures和trigger需要自己手动rename和compile,FK不能被恢复,需要手动创建。
分享到:
相关推荐
为了使 Oracle 数据库从任何逻辑误操作中迅速地恢复...进行了全面扩展,提供了闪回数据库、闪回删除、闪回表、闪回事物及闪回版本查询等功能,本 文将重点说闪回删除、闪回表的使用。(本文使用oracle 版本10.2.0.3.0)
文档中详细介绍oracle 闪回删除的表,供大家参考!一起进步
首先你应该明白闪回删除操作的对象仅仅是表,它允许你将之前删除的表恢复到删除它之前的状态,同时还会恢复所有索引以及任何权限和触发器,的主键和非空约束也会被恢复(注意不包括外键)。 Oracle 10g开始,drop...
可以有效的解决初学者遇到的删除问题。详细介绍了oracle中删除的问题
oracle闪回操作,闪回表,闪回删除,闪回版本,闪回事务几种类型都介绍到了
完整的描述了ORACLE闪回的整个过程,参数和配置开关以及部分注意事项.包含ORACLE中:闪回表、闪回删除、闪回数据库等操作。
Oracle9i Database 推出了闪回查询选项的概念,以便检索过去某个时间点的数据,但它不能闪回 DDL 操作,如删除表的操作。唯一的恢复方法是在另一个数据库中使用表空间的时间点恢复,然后使用导出/导入或其他方法,在...
删除的数据库表可以通过数据库闪回找回来,但前提是要求数据开了归档模式哟。truncate,delete,drop.都可以
Oracle 的表删除后,或表数据删除后,数据找回的方法一览。
闪回数据库,还原点和保证还原点 恢复已经删除的数据表 介绍19C数据泵的新特性
闪回事务查询,闪回查询语句!关于闪回数据归档FBDA等等
利用oracle闪回技术恢复数据,在因误操作导致删除数据时,可以进行数据恢复。
利用oracle10g的新特性flashback闪回功能快速恢复oracle中被删除的表
介绍oracle闪回,包括数据库闪回、表闪回、删除闪回、闪回事务查询
Oracle 9i 开始支持闪回,Oracle10g开始全面支持闪回功能,Oracle11g有所完善,为大家快速的恢复数据,查询历史数据提供了很大的便捷方法。 本文主要对Oracle常用闪回使用做些详细介绍,其中对于不常用的事务和版本...
oracle通过恢复闪回技术,用来恢复已删除的表或数据。
2、表的数据错误删除或修改后,没有后续数据变化,可以快速恢复 2、使用sys登陆,查看过去某一段时间内对表的操作,以确认需要恢复到的时间点select SQL_
批量删除数据库表及批量闪回删除的表!实际情况根据自己的坏境修改!
在Oracle10g中,引入了一个回收站(Recycle Bin)的概念。...常常看到开发人员误删除表,我们可以充分利用10g的闪回(FLASHBACK)功能来避免类似的人为操作。不能对已经放到回收站(Recycle Bin)中的对象执行DDL/DML语句。