转自:http://blog.sina.com.cn/s/blog_4ab088470106b36f.html
闪回恢复区主要通过3个初始化参数来设置和管理
db_recovery_file_dest:指定闪回恢复区的位置
db_recovery_file_dest_size:指定闪回恢复区的可用空间大小
db_flashback_retention_target:指定数据库可以回退的时间,单位为分钟,默认1440分钟,也就是一天。当然,实际上可回退的时间还决定于闪回恢复区的大小,因为里面保存了回退所需要的flash
log。所以这个参数要和db_recovery_file_dest_size配合修改。
SQL>
ALTER SYSTEM SET db_recovery_file_dest_size=3g SCOPE=BOTH;
System altered.
SQL>
ALTER SYSTEM SET db_recovery_file_dest=' D:\app\Administrator\flash_recovery_area ' SCOPE=BOTH;
System altered.
SQL>
show parameter db_recovery_file_dest
NAME TYPE
VALUE
------------------------------------
----------- ------------------------------
db_recovery_file_dest
string D:\app\Administrator\flash_recovery_area
db_recovery_file_dest_size
big integer 3852M
SQL>
show parameter db_flashback
NAME TYPE
VALUE
------------------------------------
----------- ------------------------------
db_flashback_retention_target
integer 1440
2. 启动flashback
database
默认情况数据库的flashback
database是关闭,可以在mount exclusive状态下打开。在设置了闪回恢复区后,可以启动闪回数据库功能。
SQL> archive log list; --数据库必须已经处于归档模式
数据库日志模式 存档模式
自动存档 启用
存档终点 d:\archivelog
最早的联机日志序列 60
下一个存档日志序列 62
当前日志序列 62
SQL>
shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>
startup mount;
ORACLE 例程已经启动。
Total System
Global Area 849530880 bytes
Fixed Size
1377896 bytes
Variable
Size 637536664 bytes
Database
Buffers 205520896 bytes
Redo Buffers
5095424 bytes
数据库装载完毕。
SQL>
alter database flashback on;
数据库已更改。
SQL>
alter database open;
数据库已更改。
SQL>
select flashback_on from 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: 无法禁用恢复区 - 闪回数据库已启用
SQL>
shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>
startup mount;
ORACLE 例程已经启动。
Total System
Global Area 849530880 bytes
Fixed Size
1377896 bytes
Variable
Size 637536664 bytes
Database
Buffers 205520896 bytes
Redo Buffers
5095424 bytes
数据库装载完毕。
SQL>
alter database flashback off;
数据库已更改。
SQL>
alter database open;
数据库已更改。
SQL>
alter system set db_recovery_file_dest='';
系统已更改。
SQL>
show parameter db_recovery_file_dest
NAME TYPE
VALUE
------------------------------------
----------- ------------------------------
db_recovery_file_dest
string
db_recovery_file_dest_size
big integer 3852M
SQL>
注意:
(1)DB_RECOVERY_FILE_DEST_SIZE 只有在 DB_RECOVERY_FILE_DEST 清空之后才可以清空。
(2)初始化参数 db_recovery_file_dest_size 的设定有一点点需要注意的地方:
文件的第0块和操作系统数据块头的空间大小不包含在内,该参数并不代表实际占用的空间大小。如果空间被压缩、镜像、RAID 的话,该参数的值意义是不一样的
4. 闪回恢复区的内容
所有和恢复相关的文件都可以存放到闪回恢复区
SQL> select file_type from v$flash_recovery_area_usage;
FILE_TYPE
--------------------
CONTROL FILE
REDO LOG
ARCHIVED
LOG
BACKUP PIECE
IMAGE COPY
FLASHBACK
LOG
FOREIGN ARCHIVED
LOG
已选择7行。
上面视图中查询的结果列出的所有类型的文件,都可以利用闪回恢复区来存放、管理。
在一些 10g 的动态视图里(
V$CONTROLFILE, V$LOGFILE, V$ARCHIVED_LOG, V$DATAFILE_COPY 等 )的新的列IS_RECOVERY_DEST_FILE
,指明相关的文件是否在恢复区内。
SELECT recid, blocks, is_recovery_dest_file
FROM v$archived_log
WHERE recid < 5;
RECID BLOCKS
IS_
----------
---------- ---
1 14141 NO
2 52 NO
3 7 NO
4 138 NO
SQL>
5 . 闪回恢复区的一些限制
如果设置了闪回恢复区,则log_archive_dest和log_archive_duplex_dest将不可用。
SQL> alter system set log_archive_dest='e:/' ;
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:/';