因为例程恢复时间主要由REDO时间和UNDO时间确定,所以为了降低例程恢复的实际时间,应该调整REDO和UNDO的时间。 ? 调整REDO时间
为了降低例程恢复的REDO时间,可以启动多个SLAVE进程。通过配置静态初始化参数recovery_parallelism, 可以指定SLAVE进程的个数。修改该参数后要重启例程才生效。 SQL>ALTER SYSTEM SET RECOVERY_PARALLELISM=3 SCOPE=SPFILE; SQL>SHUTDOWN IMMEDIATE SQL>STARTUP
? 调整UNDO时间
为了降低例程恢复的UNDO时间,可以启动多个SLAVE进程。通过配置参数FAST_START_PARALLEL_ROLLBACK可以控制SLAVE进程的个数。该参数可以取三个值: ?FALSE: 不启用SLAVE进程
?LOW: 启用SLAVE进程个数为2倍的CPU个数 ?HIGH: 启用SLAVE进程个数为4倍的CPU个数
SQL>ALTER SYSTEM SET FAST_START_PARALLEL_ROLLBACK=HIGH; 监视执行UNDO操作的进程信息:
SQL>select pid, state, undoblocksdone from v$fast_start_servers; 监视事务恢复的信息:
SQL>select pid, undoblocksdone, undoblockstotal from v$fast_start_transactions;
? 实战:监视例程恢复
SCOTT建立会话, 并执行:
Create table demo_tab(cola int, colb int); Begin
For i in 1..100000 loop Insert into demo_tab values(i, i); End loop; END; /
同时,在SYS会话中执行 SHUTDOWN ABORT 命令关闭数据库,然后执行STARTUP 重
启数据库。在数据库打开后,监视事务恢复的进度。
3. 配置日志操作模式
3.1. 日志操作模式简介
? NOARCHIVELOG ? ARCHIVELOG
3.2. 改变日志操作模式
? 检查当前日志操作模式
Sqlplus sys/oracle@demo as sysdba SQL>select log_mode from v$database;
? 改变日志操作模式
SQL>SHUTDOWN IMMEDIATE SQL>STARTUP MOUNT
SQL>ALTER DATABASE ARCHIVELOG; ---- NOARCHIVELOG SQL>ALTER DATABASE OPEN;
3.3. 配置其他归档参数
? 配置归档日志的名称格式
静态初始化参数log_archive_format用于指定归档日志的文件名格式。可以指定的匹配符:
?%s : 日志序列号
?%S : 日志序列号(带有前导0) ?%t : 重做线程号
?%T : 重做线程号(带有前导0) ?%a : 活动ID号
?%d : 数据库ID号 ?%r : RESETLOGS的ID值 设置语句:
SQL>alter system set log_archive_format='ARC_%s_%t_%r.log' scope=SPFILE; SQL>shutdown immediate SQL>startup
注意:如果归档日志被存放在快速恢复区,那么归当日志文件名格式不受此参数约束.
? 使用log_archive_dest_n配置归档日志的位置
配置本地归档位置的语句:
SQL>alter system set log_archive_dest_1='location=c:\\demo\\archive'; SQL>alter system set log_archive_dest_2='location=d:\\demo\\archive'; 配置远程归档位置的语句:
service选项指定到备用数据库的网络服务名.
SQL>alter system set log_archive_dest_3='service=standby';
? log_archive_dest_n的其他常用选项
?OPTIONAL : 默认选项。表示无论归档是否成功,都可以覆盖重做日志。 ?MANDATORY:强制归档。表示只有在归档成功之后,重做日志才能被覆盖。 ?REOPEN:指定重新归档的时间间隔,默认值300秒。注意:REOPEN属性必须跟在MANDATORY选项后。 示例: SQL>alter optional'; SQL>alter mandatory';
? 使用log_archive_dest_state_n控制归档位置的可用性
禁用相应的归档位置2: defer
SQL> alter system set log_archive_dest_state_2=DEFER; 激活相应的归档位置2: enable
SQL> alter system set log_archive_dest_state_2=ENABLE;
system
set
log_archive_dest_1='location=d:\\demo\\archive
system
set
log_archive_dest_1='location=c:\\demo\\archive
? 使用log_archive_max_processes控制归档进程的个数
从而可以动态增加或减少归档进程的个数。
SQL> alter system set log_archive_max_processes=3;
? 使用log_archive_min_succeed_dest控制本地归档的最小成功个数
SQL>alter system set log_archive_min_succeed_dest=2; 注:若小于,则重做日志不能被覆盖
? 使用log_archive_dest和log_archive_duplex_dest配置归档位置
注:此两参数是为了兼容以往版本保留的,不能与log_archive_dest_n同时使用. SQL>alter system set log_archive_dest='location=d:\\demo\\archive1'; SQL>alter system set log_archive_duplex_dest='location=d:\\demo\\archive2';
3.4. 显示归档信息
? 使用archive log list命令
SQL> archive log list;
? 显示日志操作模式
SQL> select name,log_mode from v$database;
? 显示归档日志信息
SQL> col name format a40;
SQL> select name,sequence#,first_change# from v$archived_log;
? 显示归档日志的位置
SQL> col archive_dest format a20; SQL> col destination format a20;
SQL> select archive_dest,destination,status from v$archive_dest;
? 显示日志历史信息
SQL> select * from v$loghist;
? 显示归档进程信息
SQL> select * from v$archive_processes;
相关推荐: