例程恢复是指当出现例程失败时由后台进程SMON自动同步数据文件、控制文件和重做日志并打开数据的过程。
例程失败是指与例程相关的后台进程及内存结构出现故障。
例程失败类似于执行SHUTDOWN ABORT命令关闭数据库。
例程恢复只需要执行STARTUP命令就可以了,后台进程SMON自动执行例程恢复,最终使得数据库所有文(数据文件、控制文件、重做日志)完全同步。
● fast_start_mttr_target : 用于指定例程恢复的最大时间(单位:秒)
● log_checkpoint_timeout : 用于指定发出检查点的时间间隔(单位:秒)
● log_checkpoint_inteval : 用于指定发出检查点的重做日志块间隔(单位:OS块)
通过查询v$instance_recovery,可以监视例程恢复的动态信息。
select actual_redo_blks, target_redo_blks, estimated_mttr from v$instance_recovery;
actual_redo_blks 用于标识当前情况下例程恢复实际需要应用的重做块个数
target_redo_blks 用于标识当前情况下例程恢复最多需要应用的重做块个数
estimated_mttr 用于标识例程恢复的预计时间
因为例程恢复时间主要由REDO和UNDO时间确定,为了降低例程恢复的实际时间,应调整REDO和UNDO时间
1.调整REDO时间
例程恢复的REDO操作是由SMON进程来完成的
通过配置初始化参数recovery_parallelism可以指定启动多个Slave进程的个数,来降低REDO时间
SQL> alter system set recovery_parallelism = 3 scope = spfile;
系统已更改。
SQL> shutdown immediate;
2.调整UNDO时间
例程恢复的UNDO操作是由后台进程SMON来完成的。为了降低例程恢复的UNDO时间,可以启动多个Slave进程
参数fast_start_parallel_rollback可以控制SLAE进程的个数
该参数为FALSE,则不会启用SLAVE进程,如果为LOW,则SLAVE进程个数为2倍的CPU个数,如果为HIGH,则Slave进程个数为4倍的CPU个数
SQL> show parameter fast_start_parallel_rollback
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fast_start_parallel_rollback string LOW
当执行例程恢复时,通过查询v$fast_start_servers可以监视执行UNDO操作的进程信息。
select pid, state, undoblocksdone from v$fast_start_servers;
PID STATE UNDOBLOCKSDONE
---------- ----------- --------------
12 RECOVERING 4293
13 IDLE 0
14 IDLE 0
15 IDLE 0
PID用于惟一地标识恢复进程,STATE用于标识恢复进程的状态(IDLE:代闲状态,RECOVERING:正在恢复)
UNDOBLOCKSDONE用于标识已经回退的UNDO块个数。
当执行例程恢复时,通过查询v$fast_start_transactions,可以用于监视事务恢复的信息。
select pid, undoblocksdone, undoblockstotal from v$fast_start_transactions;
阅读(962) | 评论(0) | 转发(0) |