闪回日志管理

来源:互联网 发布:手机虚拟电吉他软件 编辑:程序博客网 时间:2024/05/21 07:51
闪回是在10g之后才有的,他与undo中的前影像数据不同,闪回日志是以数据块为单位的,而undo是以行为单位的
开启闪回
http://blog.csdn.net/zhuxiaoliao/article/details/41076109
查询闪回日志的基本信息
SQL>  select NAME,LOG#,THREAD# ,SEQUENCE#, BYTES,FIRST_CHANGE# ,FIRST_TIME from v$flashback_database_logfile;
NAME                                                     LOG#    THREAD#  SEQUENCE#      BYTES    FIRST_CHANGE# FIRST_TIME
-------------------------------------------------- ---------- ---------- ---------- ---------- ---------------- -----------------
/u01/app/oracle/db_recover_flashback_file/orcl/fl          1          1          1    8192000    1103446979190 20141028 16:15:14
ashback/o1_mf_b4yn4kyx_.flb
在视图v$flashback_database_log中也可以查询到闪回日志的信息,但是不靠谱
闪回日志的参数
db_recovery_file_dest:闪回日志的存放路径
db_recovery_file_dest_size:闪回日志的大小
db_flashback_retention_target:闪回日志保留的时间
SQL> show parameter db_recovery_file_dest
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /u01/app/oracle/db_recover_flashback_file
db_recovery_file_dest_size           big integer 200M
SQL> show parameter db_flashback_retention_target
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target        integer     1440
SQL>column name format a30
SQL>column value format a25
SQL>   select
       x.ksppinm name,
       y.ksppstvl value,
       y.ksppstdf isdefault,
       decode(bitand(y.ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE') ismod,
       decode(bitand(y.ksppstvf,2),2,'TRUE','FALSE') isadj
       from
       sys.x$ksppi x,
       sys.x$ksppcv y
       where
       x.inst_id = userenv('Instance') and
       y.inst_id = userenv('Instance') and
       x.indx = y.indx and
       x.ksppinm like '%_&par%'
       order by
       translate(x.ksppinm, ' _', ' ')
     /
Enter value for par: minimum_db_flashback_retention
old  14:   x.ksppinm like '%_&par%'
new  14:   x.ksppinm like '%_minimum_db_flashback_retention%'


NAME                            VALUE                     ISDEFAULT ISMOD      ISADJ
------------------------------  ------------------------- --------- ---------- -----
_minimum_db_flashback_retention   60                        TRUE      FALSE      FALSE
数据库级别的闪回种类
数据库打开闪回模式
创建普通闪回点
创建强制闪回点
而db_flashback_retention_target只在打开数据库闪回或者创建了普通闪回点时起作用,对强制闪回点是没有作用的!
在闪回中经常会出现闪回区空间不足的问题:
SQL> !oerr ora 19815
19815, 00000, "WARNING: %s of %s bytes is %s%% used, and has %s remaining bytes available."
// *Cause: DB_RECOVERY_FILE_DEST is running out of disk space.
// *Action: One of the following:
//          1. Add disk space and increase DB_RECOVERY_FILE_DEST_SIZE.
//          2. Backup files to tertiary device using RMAN.
//          3. Consider changing RMAN retention policy.
//          4. Consider changing RMAN archivelog deletion policy.
//          5. Delete files from recovery area using RMAN.
估算闪回区的大小
若db_flashback_retention_target=6,每天的归档量是200G,则闪回区至少7*200=1400G
一般情况下,生产库很少开闪回,闪回空间不足时,在alert日志中会有提示;
若在生产库上开了闪回,且配置了dataguard,那么在操作系统空间允许和归档日志应用正常的情况下,往往还会在备库打开闪回。在备库中启动mrp进程应用归档日志的同时,还会启动PVWR进程将日志应用期间的变化块写到闪回日志文件中,通过这一功能可进一步提高生产库的可用性,但当闪回空间不足时,MRP进程应用归档日志时将会挂起,报错:
ORA-38701:flashback database log 119 seq 119 thread 1:
"/u01/app/oracle/db_flashback_files/o1_mf_b4yt92jk_.flb"
ORA-27901:unable to queue I/O
ORA-27901:File I/O error
当空间不足时如何处理
此时千万不要在操作系统层面手动删除闪回日志,否则数据库将无法启动
SQL> select NAME,LOG#,THREAD#,SEQUENCE#,BYTES from v$flashback_database_logfile;
NAME                                                                               LOG#    THREAD#  SEQUENCE#      BYTES
--------------------------------------------------------------------------------  ----- ---------- ---------- ----------
/u01/app/oracle/db_recover_flashback_file/orcl/flashback/o1_mf_b4yn4kyx_.flb         1          1          1    8192000
/u01/app/oracle/db_recover_flashback_file/orcl/flashback/o1_mf_b4yt92jk_.flb         2          1          2    4096000
/u01/app/oracle/db_recover_flashback_file/orcl/flashback/o1_mf_b4z1b3jg_.flb         3          1          3    3981312
SQL> !rm /u01/app/oracle/db_recover_flashback_file/orcl/flashback/o1_mf_b4z1b3jg_.flb 

SQL> startup force
ORACLE instance started.

Total System Global Area  276824064 bytes
Fixed Size                  2095640 bytes
Variable Size             100664808 bytes
Database Buffers          167772160 bytes
Redo Buffers                6291456 bytes
Database mounted.
ORA-38760: This database instance failed to turn on flashback database
此时有两种处理方法:
1)、重建控制文件
2)、关闭闪回
SQL> alter database flashback off;
Database altered.
告警日志中提示:
alter database flashback off
Tue Oct 28 20:03:34 CST 2014
Stopping background process RVWR
Deleted Oracle managed file /u01/app/oracle/db_recover_flashback_file/orcl/flashback/o1_mf_b4yn4kyx_.flb
Deleted Oracle managed file /u01/app/oracle/db_recover_flashback_file/orcl/flashback/o1_mf_b4yt92jk_.flb
Deleted Oracle managed file /u01/app/oracle/db_recover_flashback_file/orcl/flashback/o1_mf_b4z1b3jg_.flb
Flashback Database Disabled 

SQL> alter database open;
Database altered.
正确的处理方法:
1)关闭闪回
2)若创建了普通闪回点,删除之
3)减小db_flashback_retention_target和db_recovery_file_dest_size的大小,间接删除闪回区大小
0 0
原创粉丝点击