oracle闪回恢复区区满,Oracle数据库的闪回恢复区及多归档路径的设置

Oracle9i开始提供闪回查询,以便能在需要的时候查到过去某个时刻的一致性数据,这是通过Undo实现的。这个功能有很大的限制,就是

Oracle9i开始提供闪回查询,以便能在需要的时候查到过去某个时刻的一致性数据,这是通过Undo实现的。这个功能有很大的限制,就是相关事务的undo不能被覆盖,否则就无力回天了。oracle10g大大的增强了闪回查询的功能,并且提供了将整个数据库回退到过去某个时刻的能力,这是通过引入一种新的flashback log实现的。flashback log有点类似redo log,只不过redo log将数据库往前滚,flashback log则将数据库往后滚。为了保存管理和备份恢复相关的文件,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:指定数据库可以回退的时间,单位为分钟,默认1440分钟,也就是一天。当然,实际上可回退的时间还决定于闪回恢复区的大小,因为里面保存了回退所需要的 flash log。所以这个参数要和db_recovery_file_dest_size配合修改。

2.启动flashback database

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

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

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

1.关闭数据库

SQL> shutdown immediate;

2.启动数据库为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号

%d 数据库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

然后,启动数据库到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;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL>selectFLASHBACK_ONfrom v$database;

FLASHBACK_ON

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

YES

3.取消闪回恢复区

将db_recovery_file_dest参数设置为空,可以停用闪回恢复区。

如果已经启用flashback database,则不能取消闪回恢复区。

SQL> alter system set db_recovery_file_dest='';

alter system set db_recovery_file_dest=''

*

第 1 行出现错误:

ORA-02097: 无法修改参数, 因为指定的值无效

ORA-38775: 无法禁用快速恢复区 - 闪回数据库已启用

所以,,必须先禁用flashback database,才能取消闪回恢复区

SQL> shutdown immediate;

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup mount;

ORACLE 例程已经启动。

Total System Global Area 142606336 bytes

Fixed Size 1247732 bytes

Variable Size 83887628 bytes

Database Buffers 50331648 bytes

Redo Buffers 7139328 bytes

数据库装载完毕。

SQL>alter database flashback off;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL> alter system set db_recovery_file_dest='';

系统已更改。

4.闪回恢复区的内容

所有和恢复相关的文件都可以存放到闪回恢复区

SQL>select file_type from v$flash_recovery_area_usage;

FILE_TYPE

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

CONTROLFILE

ONLINELOG

ARCHIVELOG

BACKUPPIECE

IMAGECOPY

FLASHBACKLOG

已选择6行。

上面的视图中可以看出,包括controfile,online redo logfile,archive logfile,rman backup

piece,rman image copy, flashback log等,都可以利用闪回恢复区来存放、管理。

5.闪回恢复区的一些限制

如果设置了闪回恢复区,则log_archive_dest和log_archive_duplex_dest将不可用

alter system set log_archive_dest='e:/'

*

第 1 行出现错误:

ORA-02097: 无法修改参数, 因为指定的值无效

ORA-16018: 无法将 LOG_ARCHIVE_DEST 与 LOG_ARCHIVE_DEST_n 或

DB_RECOVERY_FILE_DEST 一起使用

SQL> alter system set log_archive_duplex_dest='e:/';

alter system set log_archive_duplex_dest='e:/'

*

第 1 行出现错误:

ORA-02097: 无法修改参数, 因为指定的值无效

ORA-16018: 无法将 LOG_ARCHIVE_DUPLEX_DEST 与 LOG_ARCHIVE_DEST_n 或

DB_RECOVERY_FILE_DEST 一起使用

logo.gif

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值