[原创]ORACLE 10g 中闪回表的特性_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3510 | 回复: 0   主题: [原创]ORACLE 10g 中闪回表的特性        下一篇 
大红薯
注册用户
等级:少校
经验:1440
发帖:159
精华:0
注册:2011-7-21
状态:离线
发送短消息息给大红薯 加好友    发送短消息息给大红薯 发消息
发表于: IP:您无权察看 2011-8-29 10:39:45 | [全部帖] [楼主帖] 楼主

目的

——————

这份报告是为了阐明10g数据库中闪回表提供的新特性

范围及应用

——————

可以被用于ORACLE支持分析和DBA

闪回查询概念已经在ORACLE9i中被介绍。但是它不可以闪回DDL操作例如丢弃表。RAOCEL10g中的闪回表特性实现了丢弃表的恢复功能通过执行一些语句。

让我们来看看闪回表是如何工作的….

SQL> Create table TESTFLASH (id number);
SQL> Insert into TESTFLASH values (1);
SQL> Insert into TESTFLASH values (2);
SQL> Insert into TESTFLASH values (3);
SQL> Insert into TESTFLASH values (4);
SQL> Insert into TESTFLASH values (5);
SQL> Commit;
SQL> select * from TESTFLASH;
ID
----------
1
2
3
4
5
5 rows selected.


让我们来看看表中现在的方案。

==========================================
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------ ------- ----------
TESTFLASH TABLE


现在,我们意外的删除表

====================================
SQL> drop table TESTFLASH;
Table dropped.


现在让我检查表的状态

========================================
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
BIN$04LhcpndanfgMAAAAAANPw==$0 TABLE


TESTFLASH表是消失了,但是要注意新出现的表BIN$04LhcpndanfgMAAAAAANPw==$0.取代被丢弃的表TESTFLASH,完全消失,被重命名为系统指定的名字。存在同一个表空间当中,与原来的表保持相同的构架。如果在表中建立有索引或者触发器,那么它们也被重命名了,使用与表相同的命名方式,任何相关的得资源例如程序,将失效;原表的触发器和索引则存在于重命名表BIN$04LhcpndanfgMAAAAAANPw==$0上,保存被丢弃表的完整对象构架。

该表和它的相关对象被存放在一个被称为“回收站”的逻辑容器当中,和我们个人PC中的回收站概念很相似。但是对象并没有从它们原先的表空间移出;它们仍旧占用这那里的空间。回收站只不过是一个逻辑架构记录所有被丢弃的对象。在SQL*PLUS中使用如下命令去查看它的内容(你将要使用SQL*Plus 10.1来完成它):

SQL> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ ------------------
TESTFLASH BIN$04LhcpndanfgMAAAAAANPw==$0 TABLE 2004-02-16:21:13:31


这将展示表的原始名,TESTFLASH,回收站中的新名字(BIN$04LhcpndanfgMAAAAAANPw==$0)。使用闪回表命令来恢复该表:

SQL> FLASHBACK TABLE TESTFLASH TO BEFORE DROP;
FLASHBACK COMPLETE.


现在来查询TESTFLASH表

ID
----------
1
2
3
4
5
5 rows selected.


让我们来看现在的方案:

==========================================
SQL> SELECT * FROM TAB;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
TESTFLASH TABLE


该表已经轻松被恢复,如果你现在检查回收站,它将是空的。

SQL> Show Recyclebin
SQL>




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论