oracle其它高可用性,(2)
时间:2025-02-24
时间:2025-02-24
使用闪回删除来恢复被删除的表,flashback database命令,使用logminer,联机对象重组织
450 第III部分 高 可 用 性
据库结构(DDL操作)所做的变更。
14.1 使用闪回删除来恢复被删除的表
当删除一个表(及其相关的索引、约束和嵌套表)时,Oracle并不会立即释放该表的磁盘空间供表空间中的其他对象使用。相反,对象仍维护在回收站(recycle bin)中,直到对象被其所有者清除,或者有新的对象需要已删除对象所占用的空间。
在此例中,考虑AUTHOR表,它定义如下:
SQL> describe AUTHOR
Name Null? Type
---------------- -------- ----------------------------
AUTHORNAME NOT NULL VARCHAR2(50)
COMMENTS VARCHAR2(100)
现在,假设意外地删除了该表。当一个用户对存在于多个环境中的一个表拥有权限,他打算在开发环境中删除一个表,但在命令执行时却实际指向了产品数据库的时候,就会出现这种情况。
SQL> drop table AUTHOR cascade constraints;
Table dropped.
如何才能恢复该表呢?自从Oracle Database 10g以来,删除的表并没有完全消失。它的块仍旧保持在其表空间中,并且仍旧占用空间限额。可以通过查询RECYCLEBIN数据字典视图来查看删除的对象。需要注意的是,在不同的版本之间OBJECT_NAME列的格式可能有所不同:
SQL> select object_name, original_name, operation, type, user,
2 can_undrop, space from recyclebin;
OBJECT_NAME ORIGINAL_NAME OPERATION
----------------------------- -------------------- ---------
TYPE USER CAN_UNDROP SPACE
------------------------ --------------- ---------- --------
BIN$OyXS+NT+J47gQKjAXwJcSA==$0 AUTH_NAME_IDX DROP
INDEX HR NO 384
BIN$OyXS+NT/J47gQKjAXwJcSA==$0 AUTHORS DROP
TABLE HR YES 1152
SQL>
RECYCLEBIN是用于USER_RECYCLEBIN数据字典视图的公共同义词,为当前的用户显示了回收站表项。数据库管理员可以通过DBA_RECYCLEBIN数据字典视图来查看所有删除的对象。
使用闪回删除来恢复被删除的表,flashback database命令,使用logminer,联机对象重组织
第14章 其他各种高可用性特性 451
从上面的清单中可以看到,一个用户已经删除了AUTHOR表及其相关的主键索引。尽管删除了它们,它们仍可用于闪回。索引不能独自恢复(它的CAN_UNDROP列的值是'NO',同时AUTHOR表的CAN_UNDROP值为'YES')。
可以使用flashback table to before drop命令从回收站中恢复该表:
SQL> flashback table AUTHOR to before drop;
Flashback complete.
此时,已经恢复了该表以及它的行、索引和统计信息。
如果删除AUTHOR表,重新创建该表,然后再次删除它,那么会出现什么情况呢?回收站将会包含这两个表。回收站中的每个表项将会通过它的SCN和删除时间戳来标识。
注意:
flashback table to before drop命令不会恢复引用的约束。
为了从回收站中清除旧的记录项,可以使用purge命令。可以清除所有删除的对象、数据库中所有已删除的对象(如果您是数据库管理员)、特定的表空间中的所有对象或者特定的表空间中针对某个特定用户的所有对象。当闪回表时,可以使用flashback table命令的rename to子句对该表重命名。
在Oracle Database 10g和11g中,默认情况下,回收站是启用的。可以使用初始化参数RECYCLEBIN打开和关闭回收站,也可以在会话级别打开和关闭回收站,如下例所示:
alter session set recyclebin = off;
临时禁用回收站功能并不影响回收站中的当前对象。即使在回收站被禁用时,仍然可以恢复回收站中的当前对象。只有回收站被禁用时删除的对象不能恢复。
14.2 flashback database命令
flashback database命令将数据库返回到一个过去的时间或SCN,提供了一种执行不完整的数据库恢复的快速替换方法。采用flashback database操作时,为了具有到闪回的数据库的写访问权,必须使用alter database open resetlogs命令再次打开它。必须拥有SYSDBA系统权限,以便使用flashback database命令。
注意:
必须已经使用alter database flashback on命令将数据库置于FLASHBACK模式。当执行该命令时,必须以独占的模式安装数据库但不打开它。
flashback database命令的语法如下:
flashback [standby] database [database]
{ to {scn | timestamp} expr
| to before {scn | timestamp } expr
}
使用闪回删除来恢复被删除的表,flashback database命令,使用logminer,联机对象重组织
452 第III部分 高 可 用 性
可以使用to scn或to timestamp子句来设置应将整个数据库闪回到的时间点。可以闪回到一个临界点(例如一个对多个表产生了未预料的结果的事务处理)之前。使用ORA_ROWSCN伪列来查看最近作用于行上的事务处理的SCN。
如果还没有这样做的话,需要关闭数据库,并在启动过程中使用如下命令启用闪回: startup mount exclusive;
alter database archivelog;
alter database flashback on;
alter database open;
注意:
在执行alter database flashback on命令之前,必须通过alter database archivelog命令启用介质恢复。
有两个初始化参数用来控制保留在 …… 此处隐藏:12075字,全部文档内容请下载后查看。喜欢就下载吧 ……
上一篇:干部民主测评表