Oracle10g中使用闪回技术详解.docx

上传人:b****1 文档编号:2412657 上传时间:2022-10-29 格式:DOCX 页数:17 大小:24.45KB
下载 相关 举报
Oracle10g中使用闪回技术详解.docx_第1页
第1页 / 共17页
Oracle10g中使用闪回技术详解.docx_第2页
第2页 / 共17页
Oracle10g中使用闪回技术详解.docx_第3页
第3页 / 共17页
Oracle10g中使用闪回技术详解.docx_第4页
第4页 / 共17页
Oracle10g中使用闪回技术详解.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

Oracle10g中使用闪回技术详解.docx

《Oracle10g中使用闪回技术详解.docx》由会员分享,可在线阅读,更多相关《Oracle10g中使用闪回技术详解.docx(17页珍藏版)》请在冰豆网上搜索。

Oracle10g中使用闪回技术详解.docx

Oracle10g中使用闪回技术详解

Oracle10g中使用闪回技术

在Oracle10g中,可以在行、表和数据库级别使用闪回技术,具体分类如下:

1、行级闪回

可以使用行闪回技术撤销对个别行的错误更改。

有三种行级闪回技术,他们全都依赖于存储在撤销表空间中的撤销数据。

(1)闪回查询:

允许根据时间点或SCN(SystemChangeNumber)查看旧的行数据。

可以查看更旧的数据,并且,如果需要可以检索它并撤销错误的更改。

(2)闪回版本查询:

允许查看相同行在一段时间内的所有版本,以便可撤销逻辑错误。

它还可以提供更改的审计历史,允许比较当前数据与历史数据而不用执行DML活动。

(3)闪回事务查询:

允许查看事务级所做的更改。

此技术帮助分析和审计事务,例如,一个批作业执行了两次,你想确定哪些对象受到影响等。

使用此技术可撤销指定时间段内某个事务所做的更改。

2、表级闪回

(1)闪回表:

复原一个表到某个时间点,或者到指定的SCN而不用恢复数据文件。

此特性使用DML更改撤销表中的更改。

闪回表特性依赖于撤销数据。

(2)闪回删除:

允许倒退一条DROPTABLE语句的结果,而不用进行时间点恢复。

闪回删除特性使用回收站复原被删除的表。

3、数据库级闪回

闪回数据库特性允许复原整个数据库到某个时间点,从而撤销自该时间以来的所有更改。

闪回数据库主要利用闪回日志检索数据块的更旧的版本,它也依赖归档重做日志完全地恢复数据库,不用复原数据文件和执行传统的介质恢复。

闪回和传统的恢复技术对比

与传统恢复技术不同,闪回技术的主要目的不是从介质丢失中恢复,而是从人为错误中恢复。

例如:

用户可能错误的删除了某个表或者错误的更改了某个表的数据。

这时候你想撤销你刚才的操作。

传统上,从人为错误中恢复数据唯一的办法就是采用用户管理的备份和恢复技术。

先复原数据库文件然后利用所有重做日志文件前滚的过程需要长时间的停机。

而闪回技术提供了从逻辑错误中恢复的更有效和更快的方法,多数情况下,在用这种技术进行恢复时数据库仍然联机并对用户可用。

此外,闪回技术允许选择性地复原某些对象。

使用传统的技术,从某种意义上说某有选择,只能恢复整个数据库。

闪回删除-FlashbackTable

OracleFlashbackTable特性允许利用FlashbackTable语句,确保闪回到表的前一个时间点。

与Oracle9i中的FlashbackQuery相似,利用回滚段信息来恢复一个或一些表到以前的一个时间点(一个快照)。

要注意的是,FlashbackTable不等于FlashbackQuery,FlashbackQuery仅仅是查询以前的一个快照点而已,并不改变当前表的状态,而FlashbackTable将改变当前表及附属对象一起回到以前的时间点

语法:

flashbacktabletablenametotimestampxxx或

flashbacktabletablenametoscnxxx

注意:

如果需要闪回一个表,需要以下条件:

·需要有flashbackanytable的系统权限或者是该表的flashback对象权限;

·需要有该表的select,insert,delete,alter权限;

·必须保证该表rowmovement,否则提示因为未启用行移动功能,不能闪回表。

这时altertableTestenablerowMovement,即可保证表rowmovement

例:

执行将test表闪回到2008年12月25日下午19点。

SQL>flashbacktabletesttotimestampto_timestamp('2008-12-2519:

52:

00','yyyy-mm-ddhh24:

mi:

ss');

闪回删除-FlashbackDrop

闪回删除特性提供了恢复被意外删除的表(或索引)而不丢失最近事务的一种手段。

在Oracle10g中,在删除一个表时,Oracle并不立即丢弃它。

而是把它放在回收站中列出该表以及其依赖的对象,并保留尽可能长的时间。

如果你很快意识到自己犯了错误,可以简单的使用一些命令即可找回被你删除的表。

SQL>connrocky/rocky

已连接。

SQL>select*fromemp;

EIDNAMESEXID

-----------------------------------

aabbB11

SQL>droptableemp;

表已删除。

SQL>select*fromemp;

select*fromemp

*

第1行出现错误:

ORA-00942:

表或视图不存在

SQL>flashbacktableemptobeforedrop;

闪回完成。

SQL>select*fromemp;

EIDNAMESEXID

-----------------------------------

aabbB11

SQL>

这样就可对误删除表进行恢复;

闪回如何工作?

在Oracle10g之前,执行DROPTABLE命令将导致表以及其所有依赖对象立即被删除,并且表段中所有相关的空间都被释放回数据库。

在Oracle10g中,表及其依赖对象不会被立即删除,而是被重命名了,他们仍然保留在原位置,Oracle将根据空间紧迫情况尽可能长的保留它们。

在Oracle10中,有一个回收站的概念:

回收站是一个逻辑容器(一个数据字典表,它保存被删除的表的相关信息,如它们的新名字和原来的名字等)信息。

SQL>descrecyclebin;

通过上述命令可以看到回收站的系统字段

如果想查看回收站中的内容可以使用

SQL>selectobject_name,droptime,dropscn,purge_objectfromrecyclebin;

OBJECT_NAMEDROPTIMEDROPSCNPURGE_OBJECT

BIN$ugr+dcX2R1Kk6imZ2wEQOQ==$02007-08-10:

21:

33:

43545676254660

在Oracle10gRelease2版本中,可以使用RECYCLEBIN初始化参数关闭闪回删除功能。

默认是,此参数设置为ON,表示所有删除的表都要进入回收站,可以利用闪回删除特性恢复它们。

通过设置此参数的值为OFF,关闭闪回删除特性,表在被删除后不进入回收站。

如果需要真正的删除掉一张表,那就需要清空回收站。

u用户使用PURGE命令(DROPTABLEtable_namePURGE)从回收站中永久删除对象

uOracle迫于空间压力(如果Oracle在表空间中没有足够的可用空间创建新对象或不能为现有对象扩展更过空间时)自动删除回收站中的对象。

如果需要真正删除表

SQL>droptableemppurge;

表已删除。

SQL>selectobject_name,droptime,dropscn,purge_objectfromrecyclebin;

OBJECT_NAMEDROPTIMEDROPSCNPURGE_OBJECT

-----------------------------------------------------------------------

这样就找不到表了。

我们在删除的同时,也从回收站情况了它。

什么是回收站?

回收站是一个逻辑结构,一个名为RECYCLEBIN的数据字典。

你可以通过USER_RECYCLEBIN视图,查看自己在回收站中当前登记的内容。

或者通过dba_recyclebin视图也可以查看回收站中的内容

SQL>selectowner,original_name,object_name,ts_name,droptimefromdba_recyclebin;

OWNERORIGINAL_NAMEOBJECT_NAMETS_NAME

-------------------------------------------------------------------------------------------------

SCOTTBONUSBIN$FTNAGvFJS6K7oLxGNemsfg==$0USERS

SCOTTSALGRADEBIN$myTqyz98SN6Oi6IAmPA4LA==$0USERS

可以看到,当一个表被移动到回收站,Oracle给他指派一个系统生成的名字,此名字通常有30个字符长。

如果你相在回收站中查询一个对象,则必须使用用其系统生成的名字,扩在双引号中:

SQL>select*from"BIN$FTNAGvFJS6K7oLxGNemsfg==$0";

M1M2N1

------------------------------

abcxyz

defhyk

abcxyzabc

defhykdddd

defgdbbeahykdddd

SQL>

注意:

回收站中的对象只能进行查询,任何的DML操作将不起作用。

恢复被删除的表

只要回收站中列出被删除的表,就可以使用命令恢复它。

FLASHBACKTABLEtable_nameTOBEFOREDROP

在恢复之后,Oracle将把它们从回收站中删除。

永久删除表

在删除表示使用命令

还可以使用PURGETABLE或者PURGEINDEX命令从回收站中永久除去以前删除的表或索引。

可以使用PURGETABLESPACE命令从回收站中删除作为相应表空间成分的所有对象,如:

PURGETABLESPACEusersUSERscott

还有:

清除整个回收站:

purgerecyclebin

除回收站中的单个表:

purgetabletest_drop

上述命令将从USERS表空间中删除单一用户scott的所有对象(以及存在于其他表空间中的所有依赖对象)。

必须的权限

为使用FLASHBACKTABLETABLE_NAMETOBEFOREDROP命令取回一个表,你必须拥有它或者在具有此表的删除权限(DROPTABLESPACE或者DROPANYTABLE)。

为使用PURGE命令,需要类似的权限。

为了查询回收站中的对象,必须具有SELECT权限和FLASHBACK权限。

闪回数据库

闪回数据库的条件

1、数据库日志系统必须在归档模式下。

2、如果丢失了一个数据文件,或者由于某种原因不能使用特定的数据文件,则不能使用闪回数据库进行恢复。

3、如果已经在想闪回的时间范围内复原或重建了一个控制文件,则不能使用闪回数据库特性。

4、不能闪回一个数据库到RESETLOGS操作之前。

5、不能闪回在被闪回表操作覆盖的时间范围内缩短或删除的数据文件。

在Oracle10g中,闪回数据库功能恢复数据文件但不需要备份的数据文件,他只能使用部分归档重做日志信息。

闪回数据库操作将数据库的所有数据文件倒退到以前的某个特定的时间点。

OracleFlashbackDatabase(闪回数据库)特性允许通过SQL语句FlashbackDatabase语句,让数据库前滚到当前的前一个时间点或者SCN,而不需要做时间点的恢复。

闪回数据库可以迅速将数据库回到误操作或人为错误的前一个时间

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1