检查数据库是否开启闪回:
SQL> select flashback_on from v$database; FLASHBACK_ON
------------------------------------
YES
打开闪回区,必须要将数据库在mount阶段才能开启,否则会报错,如下:
SQL> alter database flashback on;
alter database flashback on
*
ERROR at line 1:
ORA-38759: Database must be mounted by only one instance and not open.
打开闪回区,数据库必须在归档模式下,否则会报错,如下:
SQL> alter database flashback on;
alter database flashback on
*
ERROR at line 1:
ORA-38706: Cannot turn on FLASHBACK DATABASE logging.
ORA-38707: Media recovery is not enabled.
将数据库修改为归档模式:
SQL> alter database archivelog; Database altered
在mount阶段,在归档模式下,打开闪回区:
SQL> alter database open; Database altered.
查看数据库能闪回到最早的SCN:
SQL> select oldest_flashback_scn,oldest_flashback_time from v$flashback_database_log; OLDEST_FLASHBACK_SCN OLDEST_FLASH
-------------------- ------------
648133 13-JUL-14
查看配置的基本参数:
SQL> show parameter db_recovery_file NAME TYPE VALUE
------------------------------------ -------- ------------------------------
db_recovery_file_dest string +RECOVER
db_recovery_file_dest_size big inte 2G
ger
数据库可以恢复到多少分钟前的,默认是一天
SQL> show parameter flash NAME TYPE VALUE
------------------------------------ -------- ------------------------------
db_flashback_retention_target integer 1440
使用flash back area需要在初始化参数中定义两个参数,db_recovery_file_dest定义的是闪回区的位置,db_recovery_file_dest_size定义的是闪回区的大小,在RAC环境下配置时,需要保证每个节点的值是相同的:
修改这两个参数的时候,可以在线进行修改,如下:
SQL> alter system set db_recovery_file_dest = '+ASM' scope=both; System altered. SQL> alter system set db_recovery_file_dest_size='5g' scope=both sid='*'; System altered.
在使用ASM作为闪回区的位置时,只能指定到磁盘组级别,而不能是某个目录,因为ASM使用的是OMF进行管理的,会自动进行目录的创建:
SQL> alter system set db_recovery_file_dest='+recovery/test' scope=both;
alter system set db_recovery_file_dest='+recovery/test' scope=both
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-01261: Parameter db_recovery_file_dest destination string cannot be
translated SQL> alter system set db_recovery_file_dest='+recovery' scope=both; System altered.
监控闪回区空间的大小使用情况:
SQL> col name format a32 heading 'file name'
SQL> col spc_lmt_mb format 9999.99 heading 'space|limit|(mb)'
SQL> col spc_usd_mb format 9999.99 heading 'space|limit|(mb)'
SQL> col spc_rcl_mb format 9999.99 heading 'reclm|space|(mb)'
SQL> col spc_usd_mb format 9999.99 heading 'space|used|(mb)'
SQL> col number_of_files format 99999 heading 'files'
SQL> select name,space_limit/(1024*1024) spc_lmt_mb,space_used/(1024*1024) spc_usd_mb,space_reclaimable/(1024*1024) spc_rcl_mb,number_of_files from v$recovery_file_dest; space space reclm
limit used space
file name (mb) (mb) (mb) files
-------------------------------- -------- -------- -------- ------
+recovery 5120.00 165.20 .00 5
如果空间使用率到达85%,在alert日志中可以看到waring的日志,如果超过了97%,会记录一条critical warning日志。告警日志查看:
SQL> select reason,object_type,suggested_action from dba_outstanding_alerts;
查看是什么文件占用了空间:
SQL> select * from v$flash_recovery_area_usage; FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE files
------------------------ ------------------ ------------------------- ------
CONTROLFILE .13 0 1
ONLINELOG 2.93 0 3
ARCHIVELOG 0 0 0
BACKUPPIECE 0 0 0
IMAGECOPY 0 0 0
FLASHBACKLOG .15 0 1 6 rows selected.
在oracle11g的默认情况下,归档日志是保存在flash back area中的,因此如果空间不够,那么将会造成归档日志无法归档,从而删除过期的归档日志即可:
使用RMAN删除过期归档日志:
[oracle@kel ~]$ rman target / Recovery Manager: Release 10.2.0.1.0 - Production on Mon Jul 14 00:08:02 2014 Copyright (c) 1982, 2005, Oracle. All rights reserved. connected to target database: OMF (DBID=680034237) RMAN> crosscheck archivelog all; using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=154 devtype=DISK
validation succeeded for archived log
archive log filename=+RECOVER/omf/1_1_852236226.dbf recid=1 stamp=852320500
validation succeeded for archived log
archive log filename=+RECOVER/omf/1_2_852236226.dbf recid=2 stamp=852423499
validation succeeded for archived log
archive log filename=+RECOVER/omf/1_3_852236226.dbf recid=3 stamp=852579011
validation succeeded for archived log
archive log filename=+RECOVER/omf/1_4_852236226.dbf recid=4 stamp=852840609
Crosschecked 4 objects RMAN> delete expired archivelog all; released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=154 devtype=DISK
specification does not match any archive log in the recovery catalog