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