Oracle10g更强大的回闪数据库功能.doc

Oracle10g更强大的回闪数据库功能.doc

ID:50992504

大小:48.02 KB

页数:8页

时间:2020-03-08

Oracle10g更强大的回闪数据库功能.doc_第1页
Oracle10g更强大的回闪数据库功能.doc_第2页
Oracle10g更强大的回闪数据库功能.doc_第3页
Oracle10g更强大的回闪数据库功能.doc_第4页
Oracle10g更强大的回闪数据库功能.doc_第5页
资源描述:

《Oracle10g更强大的回闪数据库功能.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Oracle10g更强大的回闪数据库功能【IT168服务器学院】用一个简单的SQL语句将一个表或者整个数据库恢复到以前的某一点。    除夕之夜,Acme银行的数据库管理员(DBA)John正在和他的朋友们一起狂欢,倒计时迎接新的一年的到来。就在子夜钟声敲响、人群欢呼之时,他的寻呼机突然响了。在银行的数据中心,在年末进行利息累机批处理簿记过程中发生了错误,所有的利息计算都不准确。幸好开发团队找出了错误所在,并开发一个应急纠正模块,但这一纠正模块不能恢复已经造成的破坏。部门经理问John是否有什么方法能往回倒一些时间,将数据库恢复至该批处理开始之前的状态,该批处理大约是在晚上

2、11:00开始的。    对于DBA们来说,这不是一件很熟悉的事吗?John的选择是什么呢?    在Oracle数据库10g之前,John可能会做一个"时间点"恢复,来将数据库恢复至所希望的某一时刻的状态。不幸的是,银行的定期日常备份大约就是在那个时间开始,这就意味着他将不得不用接近24小时的有价值的归案日志来恢复数据库。    Oracle9i数据库中提供的另一种选择是使用回闪查询特性来重建到晚上11:00为止的该表的各行,并手动生成一组不同的表。这一方法尽管理论上可行,但如果表的数量很大,则会变得不切合实际。    幸运的是,John现在的数据库是Oracle数据库1

3、0g,所以他拥有更多的选择。    回闪表    让我们来看一下上面的情况。出问题的年末批处理可能仅影响少数表。例如,它可能仅用新的账户结余更新了ACCOUNTS表。如果确实是这种情况,则John可以使用回闪表特性,它会将一个表恢复到一个过去的时间点的状态。    执行回闪表操作不需要特殊的设置。唯一的要求是表必须具有可移动的行--或者是在创建表时设置,或者是在以后利用ALTERTABLEACCOUNTSENABLEROWMOVEMENT语句设置。FLASHBACKTABLE语句从撤消段中(undosegment)读取该表的过去映像,并利用Oracle9i中引入的回闪查询重

4、建表行。    如果模式所有者之外的非DBA用户执行回闪表操作,她需要拥有对该表的SELECT、DELETE、INSERT、ALTER和FLASHBACK权限,或者拥有等价的ANYTABLE系统权限。    对于John来说,ACCOUNTS像以下的样子:    ACCOUNT_NO NUMBER(12),  BALANCE   NUMBER(15,2)  STATUS   CHAR(1)  STATUS的列值通常为"A"(active,活动),但是当利息计算应用程序启动时,所有的账户均被冻结,此状态也被更新为"F"(frozen,冻结)。当对每一账户都计算了利息后,该状态

5、被更新为"I"(interestapplied,利息已计算)。    下面是John用使用回闪表特性的步骤:    他索要一个大概的时间点,在这一点上数据库必须被重新检查,答案是大约晚上11:00。    他定义一个期望返回到的逻辑参考点。下面是他现在查询该表时所看到的内容:    selectstatus,count(*)  fromACCOUNTS  groupbystatus;      STATUS COUNT(*)    ------ --------    I     27088    F     19999    该输出显示到目前为止已经有27088个账户被处

6、理(状态=I)。此前的状态为"A",这不是John所希望返回的位置。所希望的逻辑参考点应该是所有账户的状态都为"F"的时间点。他必须恢复到所有账户状态都为"F"的状态,这大约发生于晚上11:00。    他检查一个状态="I"的当前示例账户,以便为未来的校验测试设定一个基线:    selectaccount_no,balance  fromACCOUNTS  wherestatus='I'  andrownum<2;  ACCOUNT_NO  BALANCE  ----------- --------    21633  3913.49    他发出这一语句将ACCOUN

7、TS表恢复至那个时间:    flashbacktableACCOUNTStotimestamp  to_timestamp('12/31/200323:00:00','mm/dd/yyyyhh24:mi:ss');    瞧!整个表被恢复到那个时间的状态了。只要撤消段中所保存的撤消数据允许,John便可以回闪到过去的某个时间点。John也可以不用时间标记(stamp),而是使用系统改变数目(systemchangenumber,SCN),如下所示:    flashbacktableACCOUNTS  toSCN

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。