搜档网
当前位置:搜档网 › Oracle_10g中使用闪回技术详解

Oracle_10g中使用闪回技术详解

Oracle_10g中使用闪回技术详解
Oracle_10g中使用闪回技术详解

Oracle 10g中使用闪回技术

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

1、行级闪回

可以使用行闪回技术撤销对个别行的错误更改。有三种行级闪回技术,他们全都依赖于存储在撤销表空间中的撤销数据。

(1)闪回查询:允许根据时间点或SCN(System Change Number)查看旧的行数据。可以查看更旧的数据,并且,如果需要可以检索它并撤销错误的更改。

(2)闪回版本查询:允许查看相同行在一段时间内的所有版本,以便可撤销逻辑错误。它还可以提供更改的审计历史,允许比较当前数据与历史数据而不用执行DML活动。

(3)闪回事务查询:允许查看事务级所做的更改。此技术帮助分析和审计事务,例如,一个批作业执行了两次,你想确定哪些对象受到影响等。使用此技术可撤销指定时间段内某个事务所做的更改。

2、表级闪回

(1)闪回表:复原一个表到某个时间点,或者到指定的SCN而不用恢复数据文件。此特性使用DML更改撤销表中的更改。闪回表特性依赖于撤销数据。

(2)闪回删除:允许倒退一条DROP TABLE语句的结果,而不用进行时间点恢复。闪回删除特性使用回收站复原被删除的表。

3、数据库级闪回

闪回数据库特性允许复原整个数据库到某个时间点,从而撤销自该时间以来的所有更改。闪回数据库主要利用闪回日志检索数据块的更旧的版本,它也依赖归档重做日志完全地恢复数据库,不用复原数据文件和执行传统的介质恢复。

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

与传统恢复技术不同,闪回技术的主要目的不是从介质丢失中恢复,而是从人为错误中恢复。例如:用户可能错误的删除了某个表或者错误的更改了某个表的数据。这时候你想撤销你刚才的操作。

传统上,从人为错误中恢复数据唯一的办法就是采用用户管理的备份和恢复技术。先复原数据库文件然后利用所有重做日志文件前滚的过程需要长时间的停机。

而闪回技术提供了从逻辑错误中恢复的更有效和更快的方法,多数情况下,在用这种技术进行恢复时数据库仍然联机并对用户可用。此外,闪回技术允许选择性地复原某些对象。使用传统的技术,从某种意义上说某有选择,只能恢复整个数据库。

闪回删除-Flashback Table

Oracle Flashback Table特性允许利用Flashback Table语句,确保闪回到表的前一个时间点。与Oracle 9i中的Flashback Query相似,利用回滚段信息来恢复一个或一些表到以前的一个时间点(一个快照)。要注意的是,Flashback Table不等于Flashback Query,Flashback Query 仅仅是查询以前的一个快照点而已,并不改变当前表的状态,而Flashback Table将改变当前表及附属对象一起回到以前的时间点

语法:

flashback table tablename to timestamp xxx或

flashback table tablename to scn xxx

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

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

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

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

这时alter table Test enable row Movement,即可保证表row movement

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

SQL>flashback table test to timestamp to_timestamp('2008-12-25 19:52:00','yyyy-mm-dd hh24:mi:ss');

闪回删除-Flashback Drop

闪回删除特性提供了恢复被意外删除的表(或索引)而不丢失最近事务的一种手段。在Oracle10g中,在删除一个表时,Oracle并不立即丢弃它。而是把它放在回收站中列出该表以及其依赖的对象,并保留尽可能长的时间。如果你很快意识到自己犯了错误,可以简单的使用一些命令即可找回被你删除的表。

SQL> conn rocky/rocky

已连接。

SQL> select * from emp;

EID NAME SEX ID

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

aa bb B 11

SQL> drop table emp;

表已删除。

SQL> select * from emp;

select * from emp

*

第1 行出现错误:

ORA-00942: 表或视图不存在

SQL> flashback table emp to before drop;

闪回完成。

SQL> select * from emp;

EID NAME SEX ID

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

aa bb B 11

SQL>

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

闪回如何工作?

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

在Oracle10g中,表及其依赖对象不会被立即删除,而是被重命名了,他们仍然保留在原位置,Oracle将根据空间紧迫情况尽可能长的保留它们。在Oracle10中,有一个回收站的概念:回收站是一个逻辑容器(一个数据字典表,它保存被删除的表的相关信息,如它们的新名字和原来的名字等)信息。

SQL> desc recyclebin;

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

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

SQL> select object_name,droptime,dropscn,purge_object from recyclebin;

OBJECT_NAME DROPTIME DROPSCN PURGE_OBJECT

BIN$ugr+dcX2R1Kk6imZ2wEQOQ==$0 2007-08-10:21:33:43 5456762 54660

在Oracle10g Release 2版本中,可以使用RECYCLEBIN初始化参数关闭闪回删除功能。默认是,此参数设置为ON,表示所有删除的表都要进入回收站,可以利用闪回删除特性恢复它们。通过设置此参数的值为OFF,关闭闪回删除特性,表在被删除后不进入回收站。

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

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

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

如果需要真正删除表

SQL> drop table emp purge;

表已删除。

SQL> select object_name,droptime,dropscn,purge_object from recyclebin;

OBJECT_NAME DROPTIME DROPSCN PURGE_OBJECT

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

这样就找不到表了。

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

什么是回收站?

回收站是一个逻辑结构,一个名为RECYCLEBIN的数据字典。你可以通过USER_RECYCLEBIN视图,查看自己在回收站中当前登记的内容。

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

SQL> select owner,original_name,object_name,ts_name,droptime from dba_recyclebin; OWNER ORIGINAL_NAME OBJECT_NAME TS_NAME

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

SCOTT BONUS BIN$FTNAGvFJS6K7oLxGNemsfg==$0 USERS

SCOTT SALGRADE BIN$myTqyz98SN6Oi6IAmPA4LA==$0 USERS

可以看到,当一个表被移动到回收站,Oracle给他指派一个系统生成的名字,此名字通常有30个字符长。如果你相在回收站中查询一个对象,则必须使用用其系统生成的名字,扩在双引号中:

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

M1 M2 N1

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

abc xyz

def hyk

abc xyzabc

def hykdddd

defgdbbea hykdddd

SQL>

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

恢复被删除的表

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

FLASHBACK TABLE table_name TO BEFORE DROP

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

永久删除表

在删除表示使用命令

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

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

还有:

清除整个回收站:purge recyclebin

除回收站中的单个表:purge table test_drop

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

必须的权限

为使用FLASHBACK TABLE TABLE_NAME TO BEFORE DROP命令取回一个表,你必须拥有它或者在具有此表的删除权限(DROP TABLESPACE或者DROP ANY TABLE)。为使用PURGE命令,需要类似的权限。为了查询回收站中的对象,必须具有SELECT权限和FLASHBACK权限。

闪回数据库

闪回数据库的条件

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

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

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

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

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

在Oracle10g中,闪回数据库功能恢复数据文件但不需要备份的数据文件,他只能使用部分归档重做日志信息。闪回数据库操作将数据库的所有数据文件倒退到以前的某个特定的时间点。

Oracle Flashback Database(闪回数据库)特性允许通过SQL语句Flashback Database语句,让数据库前滚到当前的前一个时间点或者SCN,而不需要做时间点的恢复。闪回数据库可以迅速将数据库回到误操作或人为错误的前一个时间点,如Word中的"撤消"操作,可以不利用备份就快速的实现基于时间点的恢复。Oracle通过创建新的Flashback Logs(闪回日志),记录数据库的闪回操作。如果希望能闪回数据库,需要设置如下参数:DB_RECOVER_FILE_DEST日志的存放位置,DB_RECOVER_FILE_DEST_SIZE恢复区的大小。在创建数据库的时候,Oracle将自动创建恢复区,但默认是关闭的,需要执行alter database flashback on命令。

例:执行Flashback Database命令格式。

SQL>flashback database to time to_timestamp(xxx);

SQL>flashback database to scn xxx

Flash Version Query

Oracle Flashback Version Query特性,利用保存的回滚信息,可以看到特定的表在时间段内

的任何修改,如电影的回放一样,可以了解表在该期间的任何变化。Flashback version query 一样依赖于AUM,提供了一个查看行改变的功能,能找到所有已经提交了的行的记录,分析出过去时间都执行了什么操作。Flashback version query采用VERSIONS BETWEEN语句来进行查询,常用的方法:

·VERSIONS_SCN - 系统改变号

·VERSIONS_TIMESTAMP - 时间

例如:在test表中,时间1插入一条记录,时间2删除了这条记录,对于时间3执行select * from test当然查询不到这条记录,只能看到该表最后的提交记录。这时如果利用Flash Table 或者是Flash Query,只能看到过去的某一时间点的一个快照,而利用Flashback V ersion Query,能够把时间1、时间2的操作给记录下来,并详细的查询出对表进行的任何操作。SQL>select versions_starttime,versions_endtime, versions_xid,versions_operation from test versions

between timestamp minvalue and maxvalue

order by versions_starttime;

在上述查询中,列

versions_starttime、versions_endtime、versions_xid、versions_operation是伪列,还有一些伪列,如versions_startscn和versions_endscn显示了该时刻的系统更改号。列versions_xid显示了更改该行的事务标识符。

当然,除了分析以上所有的变更之外,可以根据需要指定时间段,如显示在2008-12-25时间在15:30到16:30之间test表的所有变更。

SQL>select id from test

versions between timestamp to_date(‘2008-12-2515:30:00’,’yyyy-mm-dd hh24:mi:ss’) and to_date(‘2008-12-25 16:30:00’,’yyyy-mm-dd hh24:mi:ss’)

Flashback Transaction Query

Oracle Flashback Transaction

Query特性确保检查数据库的任何改变在一个事务级别,可以利用此功能进行诊断问题、性能分析和审计事务。它其实是Flashback Version

Query查询的一个扩充,Flashback V ersion

Query说明了可以审计一段时间内表的所有改变,但是也仅仅是能发现问题,对于错误的事务,没有好的处理办法。而Flashback Transaction

Query提供了从FLASHBACK_TRANSACTION_QUERY视图中获得事务的历史以及Undo_sql(回滚事务对应的sql语句),也就是说审计一个事务到底做了什么,甚至可以回滚一个已经提交的事务。

例:Flashback Transaction Query的操作实例。

(1)在test表中删除记录,获得事务的标识XID,然后提交。

SQL>delete from test where id=2;

SQL>select xid from v$transaction;

XID

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

04001200AE010000

SQL>commit;

在测试中方便起见,在事务没有提交的时候,获得事务的XID为04001F0035000000。实际情况下,不可能去跟踪每个事务,想要获得已提交事务的XID,就必须通过上面的Flashback Version Query。

(2)进行Flashback Transaction Query SQL>select * from FLASHBACK_TRANSACTION_QUERY

where xid=’04001F0035000000’;

UNDO_SQL

insert into "FLASHTEST"."TEST"("ID") values (’2’);

注意:这个删除语句对应的是1个Insert语句,如果想回滚这个事务,执行这个Insert语句即可。

可以看到,Flashback Transaction Query主要用于审计一个事务,并可以回滚一个已经提交的事务。如果确定出错的事务是最后一个事务,我们利用Flashback Table或者Flashback Query 就可以解决问题。但是,如果执行了一个错误的事务之后,又执行了一系列正确的事务,那么上面的方法就无能为力,利用Flashback Transaction Query可以查看或回滚这个错误的事务。

可以在下述情况下使用闪回操作:

1、找回某个删除的模式

2、在某个用户错误影响到整个数据库时

3、在错误的截断一个表时

4、在一个批作业只执行了部分更改时

oracle误删除表数据后的恢复详解

一、undo_retention参数的查询、修改:

用show parameter undo;命令查看当时的数据库参数undo_retention设置。显示如下:

undo_management string AUTO

undo_retention integer 10800

undo_suppress_errors boolean FALSE

undo_tablespace string UNDOTBS1

undo_retention(保持力),10800单位是秒。即3个小时。

修改默认的undo_retention参数设置:

ALTER SYSTEM SET undo_retention=10800 SCOPE=BOTH;

二、oracle误删除表数据后的的快速恢复功能方法:

【方法一】:

通过oracle提供的回闪功能:

exec dbms_flashback.enable_at_time(to_date('2007-07-23

10:21:00','yyyy-mm-dd hh24:mi:ss'));

set serveroutput on

DECLARE r_temp hr.job_history%ROWTYPE;

CURSOR c_temp IS SELECT * FROM hr.job_history;

BEGIN

OPEN c_temp;

dbms_flashback.disable;

LOOP

FETCH c_temp INTO r_temp;

EXIT WHEN c_temp%NOTFOUND;

insert into hr.job_history(EMPLOYEE_ID,JOB_ID,START_DATE,END_DATE) values

(r_temp.EMPLOYEE_ID,r_temp.JOB_ID,r_temp.START_DATE,r_temp.END_DATE); commit;

END LOOP;

CLOSE c_temp;

END;

这种办法可以将删除的数据恢复到对应的表中,首先要保证该用户有执行

dbms_flashback包的权限

【方法二】:

insert into hr.job_history

select * from hr.job_history as of timestamp to_timestamp('2007-07-23 10:20:00', 'yyyy-mm-dd hh24:mi:ss');

这种方法简单,容易掌握,功能和上面的一样时间为你误操作之前的时间,最好是离误操作比较近的,因为oracle保存在回滚保持段里的数据时间有一定的时间限制由undo_retention 这个参数值决定。

SQL> col fscn for 9999999999999999999 SQL> col nscn for

9999999999999999999 SQL> select name,FIRST_CHANGE#

fscn,NEXT_CHANGE# nscn,FIRST_TIME from

v$archived_log; ................... NAME FSCN NSCN FIRST_TIME

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

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

/mwarch/oracle/1_52413.dbf 12929941968 12929942881 2005-06-22

14:38:28 /mwarch/oracle/1_52414.dbf 12929942881 12929943706

2005-06-22 14:38:32 /mwarch/oracle/1_52415.dbf 12929943706 12929944623 2005-06-22 14:38:35 /mwarch/oracle/1_52416.dbf 12929944623 12929945392 2005-06-22 14:38:38

/mwarch/oracle/1_52417.dbf 12929945392 12929945888 2005-06-22

14:38:41 /mwarch/oracle/1_52418.dbf 12929945888 12929945965

2005-06-22 14:38:44 /mwarch/oracle/1_52419.dbf 12929945965 12929948945 2005-06-22 14:38:45 /mwarch/oracle/1_52420.dbf 12929948945 12929949904 2005-06-22 14:46:05

/mwarch/oracle/1_52421.dbf 12929949904 12929950854 2005-06-22

14:46:08 /mwarch/oracle/1_52422.dbf 12929950854 12929951751

2005-06-2 14:46:11

/mwarch/o acle/1_52423.dbf

当前的SCN为:

SQL> select dbms_flashback.get_system_change_number fscn from

dual; FSCN -------------------- 12930142214

使用应用用户尝试闪回

SQL> connect username/password Connected.

现有数据:

SQL> select count(*) from hs_passport; COUNT(*) ---------- 851998

创建恢复表

SQL> create table hs_passport_recov as select * from hs_passport where 1=0; Table created.

选择SCN向前恢复

SQL> select count(*) from hs_passport as of scn 12929970422; COUNT(*) ---------- 861686

尝试多个SCN,获取最佳值(如果能得知具体时间,那么可以获得准确的数据闪回)

SQL> select count(*) from hs_passport as of scn &scn; Enter value

for scn: 12929941968 old 1: select count(*) from hs_passport as

of scn &scn new 1: select count(*) from hs_passport as of scn 12929941968 COUNT(*) ---------- 861684 SQL> / Enter value for scn: 12927633776 old 1: select count(*) from hs_passport as of scn &scn

new 1: select count(*) from hs_passport as of scn 12927633776

select count(*) from hs_passport as of scn 12927633776 * ERROR at

line 1: ORA-01466: unable to read data - table definition has changed SQL> / Enter value for scn: 12929928784 old 1: select

count(*) from hs_passport as of scn &scn new 1: select count(*)

from hs_passport as of scn 12929928784 COUNT(*) ---------- 825110 SQL> / Enter value for scn: 12928000000 old 1: select count(*) from

hs_passport as of scn &scn new 1: select count(*) from hs_passport

as of scn 12928000000 select count(*) from hs_passport as of scn 12928000000 * ERROR at line 1: ORA-01466: unable to read data -

table definition has changed

最后选择恢复到SCN为12929941968的时间点

SQL> insert into hs_passport_recov select * from hs_passport as

of scn 12929941968; 861684 rows created. SQL> commit; Commit complete.

数据恢复简单例子

简介

在过去,如果用户误删/更新了数据后,作为用户并没有什么直接的方法来进行恢复,他们必须求助DBA来对数据库进行恢复,到了Oracle9i,这一个难堪局面有所改善。Oracle 9i中提供了一项新的技术手段--闪回查询,用户使用闪回查询可以及时取得误操作前的数据,并可以针对错误进行相应的恢复措施,而这一切都无需DBA干预。

下面我们通过一个例子来具体说明闪回查询的用法。

二、示例

1、使用闪回查询前必须确定下面两个参数:

UNDO_MANAGEMENT = AUTO

undo_retention = 1200; #这个时间可以随便设,他表示在系统中保留提交了的UNDO信息的时间,1200就是保留20分钟。

2、使用闪回查询

SQL> conn sys/sys as sysdba

Connected.

SQL> create user flash identified by flash;

User created.

SQL> grant connect, resource to flash;

Grant succeeded.

SQL> grant execute on dbms_flashback to flash;

Grant succeeded.

SQL> conn flash/flash

Connected.

SQL> set echo on

SQL> create table t (a varchar2(10));

Table created.

SQL> insert into t values('gototop');

1 row created.

SQL> insert into t values('https://www.sodocs.net/doc/7314093720.html,');

1 row created.

SQL> /

SQL> select * from t;

----------

gototop

https://www.sodocs.net/doc/7314093720.html,

https://www.sodocs.net/doc/7314093720.html,

SQL> set time on

15:00:22 SQL>

15:00:22 SQL>

15:00:23 SQL> delete t where a='gototop';

1 row deleted.

15:00:35 SQL> commit;

Commit complete.

15:00:38 SQL> select * from t;

A

----------

https://www.sodocs.net/doc/7314093720.html,

https://www.sodocs.net/doc/7314093720.html,

15:08:22 SQL> execute

DBMS_FLASHBACK.ENABLE_AT_TIME(to_date('2003-05-16 15:00:00')); PL/SQL procedure successfully completed.

15:09:02 SQL> select * from t;

A

----------

gototop

https://www.sodocs.net/doc/7314093720.html,

https://www.sodocs.net/doc/7314093720.html,

15:16:43 SQL> execute DBMS_FLASHBACK.DISABLE;

PL/SQL procedure successfully completed.

15:17:05 SQL> select * from t;

A

----------

https://www.sodocs.net/doc/7314093720.html,

https://www.sodocs.net/doc/7314093720.html,

3、使用闪回查询恢复数据:

15:36:55 SQL> select * from t;

no rows selected

15:36:57 SQL> insert into t values('https://www.sodocs.net/doc/7314093720.html,');

1 row created.

15:37:15 SQL> /

1 row created.

15:37:16 SQL> /

1 row created.

15:37:17 SQL> /

1 row created.

15:37:18 SQL> /

1 row created.

15:37:19 SQL> commit;

Commit complete.

15:37:21 SQL> /

Commit complete.

15:37:22 SQL> /

Commit complete.

15:37:23 SQL> select * from t; A

----------

https://www.sodocs.net/doc/7314093720.html,

https://www.sodocs.net/doc/7314093720.html,

https://www.sodocs.net/doc/7314093720.html,

https://www.sodocs.net/doc/7314093720.html,

https://www.sodocs.net/doc/7314093720.html,

https://www.sodocs.net/doc/7314093720.html,

6 rows selected.

15:37:28 SQL>

15:38:44 SQL> delete t;

6 rows deleted.

15:38:50 SQL> commit;

Commit complete.

15:38:53 SQL> commit;

Commit complete.

15:38:54 SQL> /

Commit complete.

15:38:57 SQL> declare

15:39:28 2 cursor flash_recover is

15:39:28 3 select * from t;

15:39:28 4 t_recode t%rowtype;

15:39:28 5 begin

15:39:28 6 DBMS_FLASHBACK.ENABLE_AT_TIME(to_date('2003-05-16 15:37:23'));

15:39:28 7 open FLASH_RECOVER;

15:39:28 8 DBMS_FLASHBACK.DISABLE;

15:39:28 9 loop

15:39:28 10 FETCH FLASH_RECOVER INTO t_recode;

15:39:28 11 EXIT WHEN FLASH_RECOVER%NOTFOUND;

15:39:28 12 insert into t values (t_recode.a);

15:39:28 13 end loop;

15:39:28 14 CLOSE FLASH_RECOVER;

15:39:28 15 commit;

15:39:28 16 end;

15:39:28 17 /

PL/SQL procedure successfully completed.

15:39:28 SQL> 15:39:28 SQL>

15:39:31 SQL> select * from t;

A

----------

https://www.sodocs.net/doc/7314093720.html,

https://www.sodocs.net/doc/7314093720.html,

https://www.sodocs.net/doc/7314093720.html,

https://www.sodocs.net/doc/7314093720.html,

https://www.sodocs.net/doc/7314093720.html,

15:39:35 SQL>

我们可以已经恢复了5条纪录,但我们要恢复的6条纪录,为什么会少一条呢?原因就在下面。

三、局限性

1、闪回查询是基于SCN的,虽然我执行的是:

DBMS_FLASHBACK.ENABLE_AT_TIME(to_date('2003-05-16 15:37:23'));

但Oracle并不会精确的这个时间点,而是ROUND DOWN到最近的一次SCN,然后从这个SCN开始进行恢复。而Oracle 9i是每五分钟记录一次SCN的,并将SCN 和对应时间的映射做个纪录。

这正是上面我们进行恢复时少了一条的原因。因此如果使用

DBMS_FLASHBACK.ENABLE_AT_TIME来进行恢复,为了避免恢复失败,我可以先等5分钟,然后再进行恢复。

使用DBMS_FLASHBACK.ENABLE_AT_TIME进行恢复还有一个缺点,那就是在Oracle 9i中SCN和对应时间的映射信息只会保留5天,因此我们无法通过

DBMS_FLASHBACK.ENABLE_AT_TIME来恢复5天前的数据。如果你想使用闪回查询来恢复5天前的数据,你必须自己来确定需要恢复的SCN,然后使用

DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER(SCN_NUMBER); 来定位你的恢复时间点,下面是使用方法:

15:58:58 SQL> VARIABLE SCN_SAVE NUMBER;

16:13:43 SQL> EXECUTE :SCN_SAVE :=

DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER;

PL/SQL procedure successfully completed.

16:13:50 SQL> print SCN_SAVE;

SCN_SAVE

----------

2.1202E+11

16:28:34 SQL> execute

DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER(:SCN_SAVE);

PL/SQL procedure successfully completed.

另外,在使用DBMS_FLASHBACK.ENABLE_AT_TIME前,你必须设定你的

NLS_DATE_FORMAT的精确程度,Oracle默认的是精确到天,如果你不设定,像上面的例子你不会得到预期结果。

2、如果你使用sysdate和DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER来获取时间点或者SCN值,你必须注意它们取得都是当前的时间点和SCN值。

3、你只能在事务开始时进入闪回查询模式,如果之前有DML操作,则必须COMMIT。

4、闪回查询无法恢复到表结构改变之前,因为闪回查询使用的当前的数据字典。

Oracle发展历程

Oracle数据库发展历程 一、oracle数据库的发展历程 本节中,我们主要介绍Oracle的发展历程。 1977年,Larry Ellison、Bob Miner和Ed Oates等人组建了Relational软件公司(Relational Software Inc.,RSI)。他们决定使用C语言和SQL界面构建一个关系数据库管理系统(Relational Database Management System,RDBMS),并很快发布了第一个版本(仅是原型系统)。 1979年,RSI首次向客户发布了产品,即第2版。该版本的RDBMS可以在装有RSX-11操作系统的PDP-11机器上运行,后来又移植到了DEC VAX系统。 1983年,发布的第3个版本中加入了SQL语言,而且性能也有所提升,其他功能也得到增强。与前几个版本不同的是,这个版本是完全用C语言编写的。同年,RSI更名为Oracle Corporation,也就是今天的Oracle公司。 1984年,Oracle的第4版发布。该版本既支持VAX系统,也支持IBM VM操作系统。这也是第一个加入了读一致性(Read-consistency)的版本。 1985年,Oracle的第5版发布。该版本可称作是Oracle发展史上的里程碑,因为它通过SQL*Net引入了客户端/服务器的计算机模式,同时它也是第一个打破640KB内存限制的MS-DOS 产品。 1988年,Oracle的第6版发布。该版本除了改进性能、增强序列生成与延迟写入(Deferred Writes)功能以外,还引入了底层锁。除此之外,该版本还加入了PL/SQL和热备份等功能。这时Oracle已经可以在许多平台和操作系统上运行。 1991年,Oracle RDBMS的6.1版在DEC VAX平台中引入了Parallel Server选项,很快该选项也可用于许多其他平台。 1992年,Oracle 7发布。Oracle 7在对内存、CPU和I/O的利用方面作了许多体系结构上的变动,这是一个功能完整的关系数据库管理系统,在易用性方面也作了许多改进,引入了SQL*DBA工具和database角色。

Oracle数据库10g备份与恢复(技术白皮书)

Oracle数据库10g备份和恢复:RMAN和闪回技术 Oracle 白皮书 2004 年 6 月

发展和革命 (3) 恢复管理器 (3) 快速恢复区 (4) 自动存储管理 (6) 更改跟踪文件 (6) 增量更新备份 (7) Oracle 建议的策略 (7) 备份管理 (9) 跨平台的传输 (10) 革命还未结束 (11) RMAN 比对用户管理的恢复 (11) 网格集群 (13) 人为错误的挑战 (13) 人为错误纠正—闪回技术 (13) 人为错误的传统恢复 (14) 恢复时间目标 (14) 何时使用闪回与传统恢复的对比 (14) 闪回数据库 (15) 闪回表 (17) 闪回删除 (18) 什么是回收站? (18) 闪回查询 (18) 闪回版本查询 (20) 闪回事务查询 (20) 实例 (21) 结论 (22)

发展和革命 数据库备份可能是防止 Oracle 数据库发生介质故障的唯一方式。使用提供给 DBA 的大量工具和方法来恢复关键数据的重要性是毋庸置疑的。保护 Oracle 数据的成本和复杂性包括,从简单的每周备份到磁带,到记录更加繁复的文件快照或备用数据库。Oracle Data Guard1.的体系结构有助于企业恢复对 Oracle 数据库造成不利影响的灾难、人为错误和损坏。每个工具和选项都有其自己的持续可用性优势,并且可以快速备份和/或恢复 Oracle 数据库。 为了保护和恢复数据所采纳的方法或工具应该具有: 可靠性。所有需要恢复的文件都进行了备份,且通过恢复操作能够方便地恢复文件。 灵活性。Oracle 数据库可以在数据库、表空间、数据文件和块级上备份或恢复。 可管理性组织和管理备份文件以便用于恢复操作。 可用性。备份操作不应该干扰数据库事务处理过程同时恢复操作应该快速、有效。 Oracle 恢复管理器通过新的版本和 Oracle 数据库 10g 包含的革命性技 术进步继续得以完善,并提供您一直期待的简单、可靠和自动的恢复工具。此白皮书列出了 Oracle 数据库 10g 用于备份和恢复文件管理的新功能,增强的增量备份和异构平台上相同表空间数据的共享。让革命开始吧! 恢复管理器 恢复管理器 (RMAN) 是管理备份和更重要的数据库恢复的 Oracle 公用程序。提供数据库高级的性能和可用性的同时消除了操作的复杂性。从 Oracle8 开始,恢复管理器为 DBA 提供了集成的备份和恢复解决方案。 1有关 Data Guard 的详细信息,请访问 https://www.sodocs.net/doc/7314093720.html,/deploy/availability/htdocs/odg_overview.html。

Oracle闪回特性

在Oracle的操作工程中,会不可避免地出现操作失误或者用户失误,例如不小心删除了一个表等,这些失误和错误可能会造成重要数据的丢失,最终导致Oracle数据库停止。 闪回的基本概念 在Oracle的操作工程中,会不可避免地出现操作失误或者用户失误,例如不小心删除了一个表等,这些失误和错误可能会造成重要数据的丢失,最终导致Oracle数据库停止。在传统意义上,当发生数据丢失、数据错误问题时,解决的主要办法是数据的导入导出、备份恢复技术,这些方法都需要在发生错误前,有一个正确的备份才能进行恢复。为了减少这方面的损失,Oracle提供了闪回技术。有了闪回技术,就可以实现数据的快速恢复,而且不需要数据备份。闪回的类型: 闪回表(flashback table) :恢复到过去的一个是时间点 闪回删除(flashback drop) :回收站中将已删除的对象恢复到删除之前的状态 闪回版本查询(flashback version query) :查看用户提交了的增删改的操作以及相应操作时间的记录 闪回事务查询(flashback transaction query) :查询某个事务甚至撤销一个已经 提交的事务 闪回的益处 恢复中,闪回技术是革命性的进步 传统的恢复技术缓慢: ?它是整个数据库或者一个文件恢复,不只恢复损坏的数据 ?在数据库日志中每个修改都必须被检查 闪回速度快: ?通过行和事务把改变编入索引 ?仅仅改变了的数据会被恢复 闪回命令很容易: ?没有复杂棘手的多步程序 闪回表 闪回表,实际上是将表中的数据快速恢复到过去的一个是时间点或者系统改变号SCN 上。实现表的闪回,需要使用到与撤销表空间相关的undo信息,通过show parameter undo 命令可以了解这些信息。 用户对表数据的修改操作,都记录在撤销表空间中,这为表的闪回提供了数据恢复的基础。例如,某个修改操作在提交后被记录在撤销表空间中,保留时间为900秒,用户可以 在这900秒的时间内对表进行闪回操作,从而将表中的数据恢复到修改之前的状态。 闪回表的步骤: 1.执行表的闪回要设置用户权限:grant flashback any table to scott; 2. 获取要恢复的点(SCN号): select sysdate 时间, timestamp_to_scn(sysdate) SCN from dual; 3. 将表的行移动功能打开:alter table flshback_table enable row movement; 4. 执行闪回表:flashback table flashback_table to scn 945018(获取到的scn号,也可指定在某个时间段恢复); 闪回删除 闪回删除,实际上从系统的回收站中将已删除的对象,恢复到删除之前的状态。系统的回收站只对普通用户有作用。回收站是所有被删除对象及其相依对象的逻辑存储容器,例如当一个表被删除(drop)时,该表及其相依对象并不会马上被数据库彻底删除,而是被保

Oracle 11g数据库管理及其开发技术(doc 8页)

Oracle 11g数据库管理及其开发技术(doc 8页)

课程摘要:本课程主要介绍Oracle数据库的基本概念、安装方法及数据库的启动与关闭、与数据库设计、开发和管理密切相关的SQL语言,以及Oracle对SQL语言应用进行增强的PLSQL语言和SQL*Plus管理工具,并结合大量的实例帮助学员学习Oracle数据库系统的相关知识;数据库的备份与恢复技术,包括基础知识、RMAN工具、闪回、OEN 及逻辑备份工具(数据泵技术)、数据库优化、SQL优化和系统调整方面的知识;

内容大纲: 数据库的基础知识 数据库的产生、数据库的特征 数据库的组成、数据库的管理系统、关系数据库 初识Oracle Oracle 数据库系统的特点、发展历史 Oracle 版本号的含义、Oracle 11g 的新特性 Oracle 11g 数据库安装/启动/关闭 Oracle 11g 在Windows 下的安装概述 在Windows 环境下安装Oracle 11g 在Linux 环境下安装前的准备、在Linux 环境下安装Oracle 11g Oracle 11g 数据库实例的创建 在Windows 环境下创建数据库 在Linux 环境下用DBCA 创建数据库 Oracle 11g 实例启动与关闭 Linux 环境下Oracle 实例的关闭、Linux 环境下Oracle 监听进程的启动和关闭 SQL 语言概述 使用SQL*Plus 用SQL*Plus 与数据库交互 SQL*Plus 的主要功能、启动SQL*Plus 连接数据库 1. 管理表 建表时的考量、列数据类型、创建表的语法、创建表的实例、查看表的信息 、修改表结构、重命名表、监控表的存储空间、修改表空间的存储设置、删除表、外部表的管理

ORACLE 11g 技术白皮书

ORACLE 11g 技术白皮书 1概要 过去30年来。信息技术成熟到全球经济几乎全都仰赖电子撷取、分析与分享信息的地步。 各企业持续扩大自己的信息基础架构,想要满足以更短时间存取信息而且不断成长的业务需求。然而,企图勉强结合青黄不接的技术与流程,导致各企业信息技术(IT)基础架构普遍的严重复杂性与效率不彰。由于日常作业完全仰赖信息技术基础架构,这种复杂性威胁到了企业快速应变的能力。 Oracle Database 11g提供绝佳创新,使各企业能够更快速应变。高成本的负担与瞬息万变的业务需求息息相关,各企业可以仰赖Oracle Database 11g帮助创新,以妥善掌控、具备成本效益的方式执行IT变革。 Oracle Database 11g解决阻碍各IT组织进步的核心问题:自信满怀地执行变革的能力。运用Oracle Database 11g,各企业可以统合所有信息,而简化自己的信息基层架构。Oracle Database 11g也不断地为更高价值的规划工作而释出宝贵的技术资源,使管理工作自动化进而建置崭新的业务流程。 Oracle Database 11g彻底改变了具有前瞻视野的公司对于数据库平台的需求。由于Oracle Database 11g与企业级网格运算,各企业现在可以毫无羁绊地追求创新。 2增益网格实力 Oracle倡导企业网格(enterprise grids),挑战建置和维护企业IT基础架构的高昂成本。企业网格运用Oracle Database 11g以及商用服务器和存储,让各企业能够简化自己的基础架构,进而顺应变革,而非管理昂贵的垂直扩展服务器孤岛;Oracle企业网格以最低成本独家提供效能、可用性与基础架构灵活性的绝妙组合。 Oracle企业网格包括Oracle Fusion Middleware可以扩展应用软件、Oracle Real Application Clusters (Oracle R AC)以提供扩展性和高可用性,还有Automatic Storage Management (ASM)以简化管理基本存储基础架构的工作,并使其自动化。Enterprise Manager Grid Control简化企业网格和一体化业务流程的管理,以确保快速、安全而且可靠的服务品质。 网格运算

oracle闪回技术

亚存整理 闪回作用 自动的基于磁盘的备份与恢复,能把表恢复到过去的某个时间点 查看闪回区 Show parameter db_recovery_file_dest 查看闪回区详细信息 Select flashback_on from v$database 查看闪回区是否开启 2,修改闪回功能 SQL> startup mount 数据库启动到mount下 SQL> alter database flashback on (off); 开启关闭闪回区 注:如遇到38706事件错误,可能是因为归档不正确。先启用归档 SQL>alter database archivelog SQL> alter system set db_flashback_retention_target=2880 修改闪回时间,默认是1440 闪回时间是指数据库能回退的时间 闪回使用实例:(注:sys用户下不可用闪回) 1,闪回drop的表 在非sys用户下创建表和表上索引,插入相关数据 create table abc (f number(9)); create index idx_test on abc(f); insert into abc values(1); insert into abc values(2); insert into abc values(3); 删除表 drop table abc; 删除表之后,表并没有被真正删除,而是重命名之后放在同一用户下的回收站内,同时表上的索引等也会被如此处理。回收站满后以先进先出的原则管理 查看表语句select * from tab; 查看索引语句select index_name, index_type, table_name from ind; 查看回收站语句show recyclebin 清空回收站语句PURGE RECYCLEBIN; 注:没有放入回收站的表不能被闪回 闪回之后,即可再次看到表 flashback table abc to before drop; 但是表闪回后相应的索引等需要重新编译 2,闪回DML语句 Flashback table abc to timestamp to_timestamp(‘2014-02-14 16:00:00’,’yyyy-mm-dd hh24:mi:ss’) 闪回可能会遇到08189错误,执行下列语句

oracle闪回

闪回基本参数 企业版才支持数据闪回 打开重置日志ALTER DATABASE OPEN RESETLOGS 必须在归档模式archive log list; 开启mount状态startup mount exclusive; 查看闪回参数show parameter db_recovery show parameter flashback 设置闪回空间alter system set db_recovery_file_dest='/u01/app/oracle/flashback_area' scope=spfile; 设置闪回区大小alter system set db_recovery_file_dest_size=20g scope=spfile; 设置保留时间 alter system set db_flashback_retention_target=4320; 开启闪回alter database flashback on; 查看闪回开启select flashback_on from v$database; 具体闪回待添加----搭建rac之后 创建可靠还原点 sys@WZXIS>create restore point b1 guarantee flashback database;

闪回表 scott@DJJXIS>drop table emp; Table dropped. scott@DJJXIS>select * from tab; TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- BIN$R+Kc8tW4kBTgVQAAAAAAAQ==$0 TABLE BONUS TABLE DEPT TABLE SALGRADE TABLE 查看回收站 scott@DJJXIS>show recyclebin; ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME ---------------- ------------------------------ ------------ -------- EMP BIN$R+Kc8tW4kBTgVQAAAAAAAQ==$0 TABLE 2017-02-07:03:31:11 scott@DJJXIS>flashback table emp to before drop; Flashback complete. 彻底删除表:purge选项 scott@DJJXIS>drop table T purge; Table dropped. scott@DJJXIS>select * from tab; TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- BIN$R+Kc8tW4kBTgVQAAAAAAAQ==$0 TABLE BONUS TABLE DEPT TABLE SALGRADE TABLE 闪回查询 这个可能用EM来做更加方便

Oracle Flashback 技术 总结

Oracle Flashback 技术总结 Flashback 技术是以Undo segment中的内容为基础的,因此受限于UNDO_RETENTON参数。要使用flashback 的特性,必须启用自动撤销管理表空间。 在Oracle 10g中,Flash back家族分为以下成员:Flashback Database,Flashback Drop,Flashback Query(分Flashback Query,Flashback V ersion Query,Flashback Transaction Query 三种) 和Flashback Table。 一.Flashback Database Flashback Database 功能非常类似与RMAN的不完全恢复,它可以把整个数据库回退到过去的某个时点的状态,这个功能依赖于Flashback log 日志。比RMAN更快速和高效。因此Flashback Database 可以看作是不完全恢复的替代技术。但它也有某些限制: 1. Flashback Database 不能解决Media Failure,这种错误RMAN恢复仍是唯一选择 2. 如果删除了数据文件或者利用Shrink技术缩小数据文件大小,这时不能用Flashback Database技术回退到改变之前的状态,这时候就必须先利用RMAN把删除之前或者缩小之前的文件备份restore 出来,然后利用Flashback Database 执行剩下的Flashback Datbase。 3. 如果控制文件是从备份中恢复出来的,或者是重建的控制文件,也不能使用Flashback Database。 4. 使用Flashback Database锁能恢复到的最早的SCN,取决与Flashback Log中记录的最早SCN。 Flashback Database 架构 Flashback Database 整个架构包括一个进程Recover Writer(RVWR)后台进程,Flashback Database Log日志和Flash Recovery Area。一旦数据库启用了Flashback Database,则RVWR 进程会启动,该进程会向Flash Recovery Area中写入Flashback Database Log,这些日志包括的是数据块的" 前镜像(before image)",这也是Flashback Database 技术不完全恢复块的原因。

[Oracle 10g] 闪回恢复区 (Flash Recovery Area)

[O RACLE 10G]闪回恢复区(F LASH R ECOVERY A REA) 何为闪回恢复区 Oracle 10g 有一项新功能称为:自动的基于磁盘的备份与恢复( Automatic Disk-Based Backup and Recovery )。实现该功能的基础为本文要讲述的闪回恢复区( Flash Recovery Area )。闪回恢复区是Oracle 10g 中的新事物。简单的说,闪回恢复区是一块用以存储恢复相关的文件的存储空间。允许用户集中存储所有恢复相关的文件。 闪回恢复区可以放在如下几种存储形式上: ?目录 ?一个文件系统 ?自动存储管理(ASM)磁盘组 在RAC 环境中,这个该位置必须为集群文件系统(cluster file system) 或是ASM 磁盘组亦或是通过NFS 控制的文件共享目录,还要注意的是,所有实例的位置和操作系统的磁盘限额(disk quota) 必须一致。 如下几种文件可以放到闪回恢复区中: ?控制文件 ?归档的日志文件(注:Oracle 手册上所说的在设定flash recovery area之后, LOG_ARCHIVE_DEST_10的值将自动设定为flash recovery area的位置,这个变化在笔者测试过程中观察不到) ?闪回日志 ?控制文件和SPFILE 自动备份 ?RMAN 备份集 ?数据文件拷贝 为何要用闪回恢复区? 如前所述,闪回恢复区提供了一个集中化的存储区域,很大程度上减小了管理开销。这是其最主要的优点。与RMAN 结合使用可以进行快速恢复。 近年来随着存储技术的发展,单个磁盘的存储能力已经加强。这使自动的基于磁盘的备份与恢复的技术实现成为可能。而闪回恢复区恰是基于磁盘的备份与恢复的基础。把闪回恢复区和OMF 与ASM 结合运用看起来是比较完美的方案。当然,不可否认的是,自动备份恢复技术还远远不够成熟。 设定闪回恢复区 如果您使用DBCA创建的数据库,在安装时可以设定闪回恢复区的位置以及大小(点击这里查看安装截图)--这也是Oracle 10g OUI 的新功能之一。如果在开始的时候没有启用闪回恢复区,可以通过如下方式设定。 调整如下两个动态初始化参数(无需重新启动实例): SQL> ALTER SYSTEM SET db_recovery_file_dest_size=2g SCOPE=BOTH;

oracle数据备份与还原

在Oracle11g及以上版本中建议使用数据泵来代替EXP和IMP实用程序,数据泵技术提供了许多新的特性,可以中断导出\导入作业然后恢复作业的执行,从一个会话中监控数据泵取作业,在作业执行过程中修改作业属性,以及重启一个失败的数据泵取作业等。 ?数据泵导入导出技术的结构 当启动数据泵导入或导出程序时,在数据库服务器端启动相应的服务器进程,完成数据的导入及导出任务,所以我们也称数据泵技术是基于Oracle数据库服务器的,导入及导出的数据文件也保存在数据库服务器端。 数据泵取即EXPDP程序启动数据库服务器端的服务器进程,服务器进程完成数据的备份并将备份文件写入数据库服务器端的 计算机磁盘空间,文件格式filename.dat。导出的备份文件在导 入时只能通过数据泵的导入实用程序IMPDP完成,将数据导入到运行在其他平台上的数据库中。 ?数据泵导入导出与EXP/IMP技术的区别 ?Oracle数据泵技术是对传统的EXP和IMP实用程序扩展,使得在数据库服务器端快速的移动数据。这里我们给出二者的主要区别,使得读者在使用时根据需要有所取舍。 ?数据泵技术比传统的EXP/IMP技术更快速的移动大量数据,因为数据泵技术采用并行流技术实现快速的并行处理。

?数据泵技术基于数据库服务器,在启动数据泵导入导出实用程序时在数据库服务器端产生服务器进程负责备份或导入数据,并且将备份的数据备份在数据库 服务器端。而且服务器进程与EXPDP客户机建立的会话无关。 ?传统的EXP/IMP是类似于普通的用户进程,执行象SELECT、INSERT、CREATE等的SQL语句。而数据泵技术类似于启动作业的控制进程,不但启动 客户端进程建立会话,还控制整个导入或导出过程,如重启作业。 ?使用传统的EXP/IMP实用程序导出的数据格式与数据泵技术导出的数据格式不兼容。 ?数据泵技术与传统的导入导出实用程序不同,它使用目录和目录对象存储数据泵导出文件,使用数据泵导出数据前必须先创建目录对象,否则无法使用数据 泵导入和导出作业。 数据泵技术比传统的导入导出程序具有更多的优点, ?数据泵导入导出技术的优点 ?导入导出速度更快:因为在数据泵导入导出作业中可以启动多个线程,所以可以并行的实现作业,对于移动大数据量,性能显著提高。 ?重启失败的作业:这个功能是传统的EXP/IMP程序无法实现的,不论是数据泵导入导出作业停止还是失败,都可以很容易的重启作业。同时也支持手动停止 或重启作业。 ?实时交互能力:在一个运行的数据泵作业中,可以从其他屏幕或控制终端与当前数据泵作业交互,以监控作业的执行以及更改作业的某些参数。 ?独立于客户机:因为数据泵技术是基于数据库服务器的,它是数据库服务器的一部分,一旦启动数据泵作业,则与客户机无关。 ?支持网络操作:支持在两个联网的数据库服务器之间导入和导出数据文件,也支持直接的将数据从一个数据库导入另一个数据库,而不需要备份文件。网络 操作的方式基于数据库连接,在数据库间直接移动数据的方法不需要磁盘存储。 导入功能更加细粒度:在数据泵技术中,使用INCLUDE和EXCLUDE参数使得数据泵 实用程序可以导入或导出更加细粒度的对象,如可以选择只导出过程或函数等。

Oracle Database 19c 技术架构(三)

Oracle Database 19c 技术架构(三) 11.数据库系统?件(Database System Files) 以下数据库系统?件在Oracle数据库操作期间使?,并位于数据库服务器上。请注意,数据?件是属于数据库容器的物理?件,在此不再描述。 ?控制?件:控制?件是必需?件,?于存储有关数据?件和联机重做?志?件的元数据;例如,它们的名称和状态。数据库实例需要此信息才能打开数据库。控制?件还包含在数据库未打开时必须可访问的元数据。强烈建议您在数据库服务器中制作控制?件的多个副本,以实现?可?性。 ?参数?件:此必需?件定义了数据库实例启动时的配置?式。它可以是初始化参数?件(p?le) 或服务器参数?件 (sp?le)。 ?联机重做?志?件:这些必需的?件在发?更改时将更改存储到数据库中,并?于数据恢复。

??动诊断存储库 (ADR):ADR是基于?件的存储库,?于存储数据库诊断数据,例如跟踪,转储,警报?志,运?状况监视器报告等。它具有跨多个实例和多个产品的统??录结构。数据库,Oracle?动存储管理 (Oracle ASM),侦听器, Oracle Clusterware和其他Oracle产品或组件将所有诊断数据存储在ADR中。每个产品的每个实例都将诊断数据存储在ADR中其??的主?录下。 ?备份?件:这些可选?件?于数据库恢复。通常,当介质故障或?户错误损坏或删除原始?件时,可以还原备份?件。 ?存档的重做?志?件:这些可选?件包含数据库实例?成的数据更改的持续历史记录。使?这些?件和数据库备份,您可以恢复丢失的数据?件。也就是说,存档?志可恢复已还原的数据?件。 ?密码?件:此可选?件使使?SYSDBA,SYSOPER,SYSBACKUP, SYSDG,SYSKM,SYSRAC和SYSASM??的?户可以远程连接到数据库实例并执?管理任务。 ?钱包:对于应?程序使?密码凭据连接到数据库的?规模部署,可以将此类凭据存储在客户端Oracle钱包中。 Oracle钱包是?个安全的软件容器,?于存储身份验证和签名凭证。可能的钱包包括?于?户凭证的Oracle钱包,?于透明数据加密 (TDE) 的加密钱包和?于数据库备份云模块的Oracle公共云 (OPC) 钱包。钱包是可选的,但建议使?。?块更改跟踪?件:块更改跟踪通过将更改的块记录在块更改跟踪?件中,从?提?了增量备份的性能。在增量备份过程中,Oracle Recovery Manager (RMAN) ?需扫描所有数据块来确定哪些块已更改,?是使?此?件来标识需要备份的已更改块。块更改跟踪?件是可选的。 ?闪回?志:闪回数据库在效果上类似于常规的时间点恢复。它使您可以将数据库?次恢复到近的状态。闪回数据库使?其??的?志记录机制,创建闪回?志并将其存储在快速

Oracle数据库备份与恢复技术

Oracle数据库备份与恢复技术 Oracle是一个适合于大中型企业的数据库管理系统,它主要应用于:银行、电信、移动通信、航空、保险、金融、跨国公司、和电子商务等。备份与恢复是数据库管理中最重要的方面之一。如果数据库崩溃却没有办法恢复它,那么对企业造成的毁灭性结果可能会是数据丢失、收入减少、客户不满等。不管公司是使用单个数据库还是多个数据库来存储数百GB 或TB 的数据,它们都有一个共同点,即需要制订一个备份与恢复方案来备份重要数据并使自身免于灾难,将损失尽量降低到最小。 备份与恢复概述 备份是数据的一个代表性副本。该副本会包含数据库的重要部分,如控制文件、重做日志和数据文件。备份通过提供一种还原原始数据的方法保护数据不受应用程序错误的影响并防止数据的意外丢失。备份分为物理备份和逻辑备份。物理备份是物理数据库文件的副本。“备份与恢复”通常指将复制的文件从一个位置转移到另一个位置,同时对这些文件执行各种操作。 相比而言,逻辑备份包含使用SQL 命令导出并存储在二进制文件中的数据。Oracle 在重做日志缓冲区中记录提交的和未提交的更改。逻辑备份用于补充物理备份。还原物理备份意味着重建它并将其提供给Oracle 服务器。要恢复还原的备份,需要使用事务日志中的重做记录来更新数据。事务日志记录在执行备份之后对数据库所做的更改。 Oracle 在例程故障之后自动执行崩溃恢复和实例恢复。在出现介质故障的情况下,数据库管理员(DBA) 必须启动恢复操作。恢复备份涉及两种不同的操作:通过应用重做数据将备份前滚至一个较近的时间;将在未提交的事务中所做的所有更改回滚至其原来状态。一般而言,恢复指在还原、前滚和回滚备份中涉及的各种操作。备份与恢复指在防止数据库丢失数据和在丢失数据时重建数据库的过程中涉及的各种策略和操作。 备份与恢复操作 备份是数据文件、表空间或某个时间点的数据库等的快照。如果对数据库进行了周期性备份,则在数据丢失时用户可以将存储的重做信息应用到他们最新的备份中,从而恢复数据库的当前状态。Oracle 使用户能够还原一个较早的备份和仅应用某些重做数据,从而将数据库恢复到一个较早的时间点。这种恢复称为不完全介质恢复。如果备份是一致的,那么根本不需要用户应用任何重做数据。 下面用介质恢复的一个简单例子来解释一下这个概念。假定用户在中午为数据库作了一个备份。从中午开始,每一分钟对数据库进行一次更改。在下午 1 点时,一个磁盘驱动器出现故障,导致那个磁盘上的所有数据丢失。幸运的是,Oracle 在重做日志中记录了所有更改。则用户可以将中午的备份还原到一个正常运转的磁盘驱动器上,使用重做数据将数据库恢复到下午1 点,从而重建丢失的更改。 备份与恢复策略要素 尽管备份与恢复操作非常复杂并随因企业而异,但基本原则均遵循这四个简单的步骤:

oracle特性

Oracle 特性 一、更易于管理。 1、并发集群,9i RAC, 9i结点间采用高速网线的缓存熔合(Cache Fusion)技术交换信息,交换速度较上一代系统提高100倍以上。 2、9i可以在线修改内核参数和内存分配,8i不行。 5、9i比8i增强了故障后的快速恢复(Fast-start)。 6、 9i还增加了支持逻辑备份(logical backup)数据库,使备份数据库除了作为主数据库的镜像外,还可以提供其他数据服务,8i只支持物理备份(physical backup)数据库。 二、支持网格(Grid),支持自动管理(Automatic Management) 1、10g的g是"Grid"缩写,支持网格计算,即,多台结点服务器利用高速网络组成一个虚拟的高性能服务器,负载在整个网格中均衡(Load Balance),按需增删结点,避免单点故障(Single Point of Faliure)。 2、新增基于浏览器的企业管理器(Enterprise Manager)。 3、自动存储管理(ASM),增删硬盘不再需要操作系统管理员设置的镜像、负载均衡、物理卷、逻辑卷、分区、文件系统,只要打一条Oracle命令,ASM会自动管理增加或删除的硬盘。 4、内存自动化,根据需要自动分配和释放系统内存。 5、SQL性能调整自动化。 6、免费提供基于浏览器的小应用开发工具Oracle Application Express(原名HTML DB),支持10g和9i R2。 7、快速纠正人为错误的闪回(Flashback)查询和恢复,可以恢复数据库、表甚至记录。 8、数据泵(Data Pump)高速导入、导出数据,比传统方法导出速度快两倍以上,导入速度快15--45倍。 9、精细审计(Fine-Grained Auditing),记录一切对敏感数据的操作。 10、存储数据的表空间(Tablespace)跨平台复制,极大的提高数据仓库加载速度。 11、 流(Streams)复制,实现低系统消耗、双向(double-direction)、断点续传(resume from break point)、跨平台(cross platform)、跨数据源的复杂复制。 12、容灾的数据卫士(Data Guard)增加了逻辑备份功能,备份数据

相关主题