分类: Oracle
2008-05-19 15:36:32
create restore point my_restore_point; Operation 206 succeeded. |
或者创建重新存储点my_restrore_point来保证重现数据库;
注意:重新存储点并不会保证所有的事务都在那个时间点上提交。它不应该与DB2的关系型数据库管理系统中的静默点混淆了。
模拟数据库损坏
70. 模拟数据库损坏 71. insert into my_table values (2); 72. 73. 1 row created. 74. 75. commit; 76. 77. 提交完成 78. 判断数据库是否由于人为错误导致逻辑损坏。 79. select c1, ora_rowscn from my_table; 80. 81. C1 ORA_ROWSCN 82. ---------- ---------- 83. 1 1320954 84. 2 1321231 |
注意:在默认情况下,Oracle在时钟级别上检索SCN。当然,时钟当中的所有行都有一样的SCN。激活行级别的SCN检索,可以在CREATE TABLE命令中使用ROWDEPENDENCIES关键字。
检验重现数据库是可能的。 判断你可以重现的最早的时间。
SELECT OLDEST_FLASHBACK_SCN ,to_char(OLDEST_FLASHBACK_TIME,'YYYY-MM-DD:HH24:MI:SS') "OLDEST_FLASHBACK_TIME" FROM V$FLASHBACK_DATABASE_LOG; OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI -------------------- ------------------- 1319629 2006-09-23:19:51:56 |
判断你是否有重新存储点。
select name, scn, time from v$restore_point; NAME SCN TIME ---------------- ---------- ---------------------------- MY_RESTORE_POINT 1321136 23-SEP-06 08.16.24.000000000 PM |
这里是一些你感兴趣的视图。
重现数据库
你可以在SQL*Plus 或者 RMAN中执行重现数据库。重现数据库可以是基于修改和重新存储点的时间。RMAN提供了额外的基于选项的日志顺序。
使用先前创建的重新存储点来重现数据库。
SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount ORACLE instance started. . . . Database mounted. SQL> flashback database to restore point my_restore_point; Flashback complete. |
在警告日志中检查重现数据库消息
. . . Sat Sep 23 20:38:11 2006 flashback database to restore point my_restore_point Sat Sep 23 20:38:12 2006 Flashback Restore Start Flashback Restore Complete Flashback Media Recovery Start parallel recovery started with 2 processes Sat Sep 23 20:38:14 2006 Recovery of Online Redo Log: Thread 1 Group 2 Seq 33 Reading mem 0 Mem# 0 errs 0: C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG Sat Sep 23 20:38:16 2006 Incomplete Recovery applied until change 1321137 Flashback Media Recovery Complete Completed: flashback database to restore point my_restore_point |
验证你的数据库恢复到你想要的状态如果你不满意,你可以再次重现,把数据库向前恢复,直到或者执行了完全恢复:recover database.注意:重现数据库可以通过RESETLOGS执行。
SQL> alter database open read only; Database altered. SQL> select c1, ora_rowscn from my_table; C1 ORA_ROWSCN ---------- ---------- 1 1321002 |
为一般用途打开数据库
对我们的恢复满意了之后,为了一般用途打开数据库。
SQL> shutdown; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount; ORACLE instance started. . . . Database mounted. SQL> alter database open resetlogs; Database altered. |
结论
重现数据库将会成为我最喜欢的Oracle10g特性之一。无论你是否纠正了用户的错误,只是看看先前的数据库状态,或者在衰退测试之后回到测试环境中,这个特性都是减少恢复时间的最好策略。我们看到这项技术很容易使用,比传统的恢复更快,并且最好的是,它是免费的!我希望你也会认为重现数据库是可用性体系结构中的一项主要组件。