您的位置:首页 > 数据库 > Oracle

Oracle数据库中闪回恢复的详细分析

2014-05-20 11:46 330 查看
Oracle9i开始提供闪回查询,以便能在需要的时候查到过去某个时刻的一致性数据,这是通过Undo实现的。这个功能有很大的限制,就是相关事务的undo不能被覆盖,否则就无力回天了。oracle10g大大的增强了闪回查询的功能,并且提供了将整个数据库回退到过去某个时刻的能力,这是通过引入一种新的flashback log实现的。

flashback log有点类似redo log,只不过redo log将数据库往前滚,flashback log则将Oracle数据库往后滚。为了保存管理和备份恢复相关的文件,oracle10g提供了一个叫做闪回恢复区(Flashback recovery area)的新特性,可以将所有恢复相关的文件,比如flashback log,archive log,backup set等,放到这个区域集中管理。

1.设置闪回恢复区

闪回恢复区主要通过3个初始化参数来设置和管理

db_recovery_file_dest:指定闪回恢复区的位置

db_recovery_file_dest_size:指定闪回恢复区的可用空间大小

db_flashback_retention_target:指定Oracle数据库可以回退的时间,单位为分钟,默认1440分钟,也就是一天。当然,实际上可回退的时间还决定于闪回恢复区的大小,因为里面保存了回退所需要的 flash log。所以这个参数要和db_recovery_file_dest_size配合修改。

2.启动flashback database

设置了闪回恢复区后,可以启动闪回数据库功能。

首先,数据库必须已经处于归档模式

那么如何设置归档呢?很简单的步骤

1.关闭数据库

SQL> shutdown immediate;

2.启动Oracle数据库为mount模式

SQL> startup mount

3.显示和修改归档模式

SQL> archive log list

SQL> alter database archivelog;

SQL> alter database open

4.设置归档日志的格式

SQL>alter system set log_archive_format='ARC%s%t%r.log' scope=spfile;

5.设置归档日志的存放路径

SQL>alter system set log_archive_dest='+data/arcl' scope=spfile;

SQL>shutdown immediate

SQL>startup

6.强制切换归档日至

SQL>alter system switch logfile;

7.取消归档

SQL>alter database noarchivelog;

参数

1.格式参数

%s 日志序列号

%S 日志序列号(带前导的0)

%t 重做线程编号

%a 活动的ID号

%dOracle 数据库ID号

%r RESELOGS的iD值

SQL> archive log list;

Database log mode Archive Mode

Automatic archival Enabled

Archive destination USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence 156

Next log sequence to archive 158

Current log sequence 158

然后,启动Oracle数据库到mount状态

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup mount

ORACLE instance started.

Total System Global Area 285212672 bytes

Fixed Size 1218992 bytes

Variable Size 75499088 bytes

Database Buffers 205520896 bytes

Redo Buffers 2973696 bytes

Database mounted.

SQL>alter database flashback on;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: