| 网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 |
![]() |
| Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道 |
删除表的恢复
如果某个用户不小心删除了一个十分重要的表,后果将非常严重。在9i中提供的闪回特性只能恢复DML语句造成的影响,而无法恢复DDL语句的影响。DBA只能通过重建一张表,然后从备份数据中导入。 网管论坛bbs_bitsCN_com
利用Oracle 10G中的闪回表的特性,DBA可以轻松完成这项工作,并将影响降到最小。下面就举一个例子说明:
创建表:
| SQL> create table abc (f number(9)); |
| SQL> create index idx_test on abc(f); |
索引已创建。
| SQL> insert into abc values(1); |
已创建 1 行。
| SQL> insert into abc values(2); |
已创建 1 行。
| SQL> insert into abc values(3); |
已创建 1 行。 网管u家bitscn.net
删除表:
| SQL> drop table abc; |
| SQL> select * from tab; TNAME TABTYPE CLUSTERID ------------------ -------------- ---------- BIN$XXUGsbYvSqa8Mrd6GstP+g==$0 TABLE |
请注意,在原表abc被删除后,abc没有了,却出现了一张新表BIN$XXUGsbYvSqa8Mrd6GstP+g==$0。这就是Oracle 10G中对删除表的处理,原表实际上并没有完全删除掉,而是被系统重新命名成了一个系统定的新表。它还存在于原先的表空间,并且保持了原有的结构。
中国网管论坛bbs.bitsCN.com
依赖于原表的存储过程都失效了。而建在表上的索引和触发器也会被重新命名。
| SQL> select index_name, index_type, table_name from ind; INDEX_NAME INDEX_TYPE TABLE_NAME ------------------- ------------------- ---------------------- BIN$1++ilvsQQ7mfPh2pvont5A==$0 NORMAL BIN$XXUGsbYvSqa8Mrd6GstP+g==$0 |
被删除的表及其相关对象都会被放置在一个称为recyclebin的逻辑容器中:
| SQL> show recyclebin ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME ---------------- ---------------------------- ------------ --------------- ABC BIN$XXUGsbYvSqa8Mrd6GstP+g==$0 TABLE 2005-08-29:18:03:10 |
显示了被删除对象的原有名字,删除后的名字,对象类型以及删除时间。
通过使用flashback table语句就可以恢复表!
闪回完成。
| SQL> select * from tab; TNAME TABTYPE CLUSTERID ------------------ -------------- ---------- ABC TABLE |
这样就轻松的将对象恢复了! 网管联盟bitsCN_com
注意,对象被恢复后,它在recyclebin中占用的空间并不会被释放。必须使用PURGERECYCLEBIN来清空占用的空间。
| SQL> PURGE RECYCLEBIN; |
回收站已清空。 网管网www.bitscn.com
当然,如果想要彻底删除一个对象,让它不占用回收站的空间,可以用以下语句实现:
| SQL> DROP TABLE ABC PURGE; |
网管论坛bbs_bitsCN_com
|
0
|
评论加载中…