managing database availability--flashback

7/24-7/25
managing database availability--flashback
+
config rac database to use flash recovery
[1]em configure rac recovery setting
ALTER SYSTEM SET fast_start_mttr_target = 60 SCOPE=BOTH SID='*'
FAST_START_MTTR_TARGET 初始化参数用于指定崩溃恢复的估计秒数。Oracle 将此数字转换为一组内部参数, 并将恢复时间设置得尽可能与这些参数接近。
将 FAST_START_MTTR_TARGET 设置为 0 将禁用此功能
log_archive_dest 归档日志目标位置
db_recovery_file_dest 闪回恢复区
视图:v$recovery_file_dest

SQL> select * from v$recovery_file_dest;

NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
---- -------  ---------- ----------------- ---------------
+DGA 2147483648   288879616                 0              16

-------------------------------------------------
闪回恢复区是所有与恢复有关的文件的默认位置
[1]归档日志
[2]rman备份
[3]控制文件自动备份
[4]复用的控制文件
[5]重做日志副本
[6]闪回日志文件
除了闪回日志文件其他的文件都可以重定向--启用flashback database时必须定义闪回恢复区
归档日志重定向参数:

-----------------------------------------------------------------------------
ALTER SYSTEM SET db_flashback_retention_target = 1 SCOPE=SPFILE SID='*'
设置闪回保留生存期
启动闪回恢复
SQL> alter database flashback on;
alter database flashback on
*
ERROR at line 1:
ORA-01126: database must be mounted in this instance and not open in any
instance
shutdown immediate重启再次执行
查看进程
[oracle@rac1 ~]$ ps -ef|grep rvwr
oracle    3840  9106  0 14:03 pts/1    00:00:00 grep rvwr
oracle   24041     1  0 13:46 ?        00:00:00 ora_rvwr_rac1
或查看视图
select log_mode , flashback_on from v$database;

select * from v$flashback_database_log;
这个视图的数据所db_flashback_retention_target
的影响  用于监视当前的闪回性能及估计闪回日志满足指定目标所需的空间
select * from v$flashback_database_stat;


SQL*PLUS中闪回
只接受时间戳和系统改变号实参

SQL> flashback database to  scn 875370;

Flashback complete.
SQL> alter database open resetlogs;
rman中闪回
可接受时间(date) 系统改变号 日志切换序列号
flashback database to time =to_date();
RMAN> flashback database to scn=875370;

Starting flashback at 26-JUL-10
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=119 instance=rac1 devtype=DISK


starting media recovery
media recovery failed
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of flashback command at 07/26/2010 14:34:27
ORA-38757: Database must be mounted and not open to FLASHBACK.
-------------------------------------------
mount后
RMAN> flashback database to scn=875370;

Starting flashback at 26-JUL-10
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=142 instance=rac1 devtype=DISK


starting media recovery

archive log thread 1 sequence 16 is already on disk as file +DGA/rac/archivelog/2010_07_26/thread_1_seq_16.290.725380299
archive log thread 2 sequence 4 is already on disk as file +DGA/rac/archivelog/2010_07_26/thread_2_seq_4.293.725380315
media recovery complete, elapsed time: 00:00:04
Finished flashback at 26-JUL-10
从上面看来 使用日志切换序列号的方法是:
flashback database to sequence =16   thread =1;

 

应用 flashback drop  和 flashback query恢复数据
[1]flashback table name to before drop;
[2]flashback table name to timestamp to_timestamp();
[3]flashback table name to scn  scn-value;
--注需alter table name enable row movement;
[4]查询过去某个时间的数据
select * from table name as of timestamp to_timestamp();
select * from table name as of scn  scn-value;
exec dbms_flashback.enable_at_time(to_timestamp());
[5]查看提交版本
select table_name,versions_starttime,versions_startscn,versions_operation
from  user_tables  versions between timestamp  *** and  ***;
--scn  minvalue and maxvalue
[5]用flashback versions query的结果xid 查看undo_sql
select operation,undo_sql from flashback_transaction_query where
xid=hextoraw('');

 

备忘:
SQL> show parameter log_archive

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_config                   string
log_archive_dest                     string      LOCATION=+DGA
log_archive_duplex_dest              string
如果不使用备用数据库,只需要将归档日志存放到本地目录.配置本地归档位置可以使用初始
化参数LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST,其中,第一个参数用于设置第一个归档
位置,第二个参数用于指定第二个归档位置
log_archive_dest_1                   string
log_archive_dest_10                  string
log_archive_dest_2                   string
log_archive_dest_3                   string
log_archive_dest_4                   string
log_archive_dest_5                   string
log_archive_dest_6                   string
log_archive_dest_7                   string
log_archive_dest_8                   string

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_9                   string
log_archive_dest_state_1             string      enable
log_archive_dest_state_10            string      enable
log_archive_dest_state_2             string      enable
log_archive_dest_state_3             string      enable
log_archive_dest_state_4             string      enable
log_archive_dest_state_5             string      enable
log_archive_dest_state_6             string      enable
log_archive_dest_state_7             string      enable
log_archive_dest_state_8             string      enable
log_archive_dest_state_9             string      enable
-------------------
初始化参数LOG_ARCHIVE_DEST_n用于指定多个归档位置,该参数最多可以指定10个归档位置.通过使用初始化参数LOG_ARCHIVE_DEST_n,不仅可以配置本地归档位置,还可以配置远程归档位置.
   
    如果既要在主节点上生成归档日志,又要将归档日志传递到备用节点,那么必须使用参数LOG_ARCHIVE_DEST_n.该参数与LOG_ARCHIVE_DEST具有如下区别;
  
    初始化参数LOG_ARCHIVE_DEST_n可以配置本地归档位置和远程归档位置,而初始化参数LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST只能配置本地归档位置.
   
    初始化参数LOG_ARCHIVE_DEST_n可以配置多达10个归档位置,而初始化参数LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST最多只能配置两个归档位置.
  
    初始化参数LOG_ARCHIVE_DEST_n 不能与初始化参数LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST同时使用.
  
    因为初始化参数LOG_ARCHIVE_DEST_n不能与初始化参数LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST同时使用,所以必须禁用初始化参数LOG_ARCHVE_DEST和LOG_ARCHIVE_DUPLEX_DEST.当使用初始化参数LOG_ARCHIVE_DEST_n配置本地归档位置时,需要指定LOCALTION选项.当配置远程归档位置时,需要指定SERVICE选项.
使用初始化参数LOG_ARCHIVE_DEST_STATE_n控制归档位置的可用性.设置该参数为ENABLE(默认值),表示会激活相应的归档位置;设置该参数为DEFER,表示禁用相应归档位置.当归档日志所在磁盘损坏或填满时,DBA需要暂时禁用该归档位置
使用LOG_ARCHIVE_DEST_n选项
   
    使用初始化参数LOG_ARCHIVE_DEST_n配置归档位置时,可以在归档位置上指定OPTIONAL或MANDATORY选项.指定MANDATORY选项时,可以设置REOPEN属性.

  OPTIONAL:该选项是默认选项.使用该选项时,无论归档是否成功,都可以覆盖重做日志.

  MANDATORY:强制归档.使用该选项时,只有在归档成功之后,重做日志才能被覆盖.

  REOPEN:该属性用于指定重新归档的时间间隔,默认值为300秒,必须跟在MANDATORY后.

  例:

  Alter system set log_archive_dest_1=’location=d:demoarchive1 mandatory’;

  Alter system set log_archive_dest_2=’location=d:demoarchive2 mandatory reopen=500’;

  Alter system set log_archive_dest_3=’location=d:demoarchive3 optional’;

--------------------
重要视图:
SQL> select dest_name from v$archive_dest;

DEST_NAME
--------------------------------------------------------------------------------
LOG_ARCHIVE_DEST_1
LOG_ARCHIVE_DEST_2
LOG_ARCHIVE_DEST_3
LOG_ARCHIVE_DEST_4
LOG_ARCHIVE_DEST_5
LOG_ARCHIVE_DEST_6
LOG_ARCHIVE_DEST_7
LOG_ARCHIVE_DEST_8
LOG_ARCHIVE_DEST_9
LOG_ARCHIVE_DEST_10
--------------------
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_format                   string      %t_%s_%r.dbf
--归档日志的默认文件格式
    %s: 日志序列号:   --sequence
  %S: 日志序列号(带有前导0)
  %t: 重做线程编号. --thread
  %T: 重做线程编号(带有前导0)
  %a: 活动ID号  --active
  %d: 数据库ID号 --database
  %r RESETLOGS的ID值.
  从10g开始,配置归档日志文件格式时,必须带有%s,%t和%r匹配符,配置了归档文件格式后,必须重启数据库.

log_archive_local_first              boolean     TRUE
log_archive_max_processes            integer     2
--用于指定例程初始启动的最大归档进程个数,当将数据库转变为ARCHIVELOG模式时,默认情况下oracle会自动启动两个归档进程
log_archive_min_succeed_dest         integer     1
--控制本地归档成功的最小个数.
log_archive_start                    boolean     FALSE
--这个参数在10g中已作废
log_archive_trace                    integer     0

请使用浏览器的分享功能分享到微信等