概述
今天看了下 oracle归档相关的三个参数(db_recovery_file_dest,log_archive_dest,log_archive_dest_n ),也做了下实验,体会了一下三个参数的区别,就将相关的内容记录下来。
下面对三个参数进行简单的说明:
DB_RECOVERY_FILE_DEST:指定闪回恢复区路径,默认的归档日志存放于DB_RECOVERY_FILE_DEST指定的闪回恢复区中;
LOG_ARCHIVE_DEST:指定归档文件存放的路径,该路径只能是本地磁盘,默认为’’;
LOG_ARCHIVE_DEST_n:默认值为’’。Oracle最多支持把日志文件归档到31个地方,n从1到31(好像oracle 10g是10个地方)。归档地址可以为本地磁盘,或者网络设备。
查看oracle的版本 及 是否归档
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
SQL> archive log list;
Database log mode<span style="white-space:pre"> </span> Archive Mode
Automatic archival<span style="white-space:pre"> </span> Enabled
Archive destination<span style="white-space:pre"> </span> USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 98
Next log sequence to archive 100
Current log sequence<span style="white-space:pre"> </span> 100
查看参数 db_recovery_file_dest
SQL> show parameter db_recovery;
NAME
TYPE
VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest
string
/u01/app/fast_recovery_area
db_recovery_file_dest_size
big integer 4122M
查看参数 log_archive_dest,log_archive_dest_n
SQL> show parameter log_archive
NAME
TYPE
VALUE
------------------------------------ ----------- ------------------------------
log_archive_config
string
log_archive_dest
string
log_archive_dest_1
string
log_archive_dest_10
string
log_archive_dest_11
string
log_archive_dest_12
string
log_archive_dest_13
string
log_archive_dest_14
string
log_archive_dest_15
string
log_archive_dest_16
string
log_archive_dest_17
string
NAME
TYPE
VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_18
string
log_archive_dest_19
string
log_archive_dest_2
string
log_archive_dest_20
string
log_archive_dest_21
string
log_archive_dest_22
string
log_archive_dest_23
string
log_archive_dest_24
string
log_archive_dest_25
string
log_archive_dest_26
string
log_archive_dest_27
string
NAME
TYPE
VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_28
string
log_archive_dest_29
string
log_archive_dest_3
string
log_archive_dest_30
string
log_archive_dest_31
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
log_archive_dest_9
string
NAME
TYPE
VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_1
string
enable
log_archive_dest_state_10
string
enable
log_archive_dest_state_11
string
enable
log_archive_dest_state_12
string
enable
log_archive_dest_state_13
string
enable
log_archive_dest_state_14
string
enable
log_archive_dest_state_15
string
enable
log_archive_dest_state_16
string
enable
log_archive_dest_state_17
string
enable
log_archive_dest_state_18
string
enable
log_archive_dest_state_19
string
enable
NAME
TYPE
VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_2
string
enable
log_archive_dest_state_20
string
enable
log_archive_dest_state_21
string
enable
log_archive_dest_state_22
string
enable
log_archive_dest_state_23
string
enable
log_archive_dest_state_24
string
enable
log_archive_dest_state_25
string
enable
log_archive_dest_state_26
string
enable
log_archive_dest_state_27
string
enable
log_archive_dest_state_28
string
enable
log_archive_dest_state_29
string
enable
NAME
TYPE
VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_3
string
enable
log_archive_dest_state_30
string
enable
log_archive_dest_state_31
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_duplex_dest
string
log_archive_format
string
%t_%s_%r.dbf
NAME
TYPE
VALUE
------------------------------------ ----------- ------------------------------
log_archive_local_first
boolean
TRUE
log_archive_max_processes
integer
4
log_archive_min_succeed_dest
integer
1
log_archive_start
boolean
FALSE
log_archive_trace
integer
0
可以看到,log_archive_dest,log_archive_dest_n都是没有设置值的,是处于默认状态, 且log_archive_dest_n中的n是从1-31的,与10g好像是不同的。
看看归档日志记录
SQL> SELECT RECID,STAMP,NAME,SEQUENCE#,ARCHIVED,DELETED,STATUS FROM V$ARCHIVED_LOG;
RECID STAMP NAME
SEQUENCE# ARC DEL S
---------- ---------- ---------------------------------------------------------------------------------------------------- ---------- --- --- -
1
871828407 /u01/app/fast_recovery_area/ORCL/archivelog/2015_02_16/o1_mf_1_98_bg33sqkz_.arc
98 YES NO
A
2
871828746 /u01/app/fast_recovery_area/ORCL/archivelog/2015_02_16/o1_mf_1_99_bg344b4q_.arc
99 YES NO
A
可以发现,目前的归档日志都在闪回恢复区 db_recovery_file_dest 指定的路径” /u01/app/fast_recovery_area“中
上面只是查看一下基本信息,下面来对相关的参数进行设置
先来设置参数
log_archive_dest
SQL> alter system set log_archive_dest='/home/oracle/archivelog' scope=both;
alter system set log_archive_dest='/home/oracle/archivelog' scope=both
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-16018: cannot use LOG_ARCHIVE_DEST with LOG_ARCHIVE_DEST_n or DB_RECOVERY_FILE_DEST
SQL> alter system set db_recovery_file_dest='' scope=both;
System altered.
SQL> alter system set log_archive_dest='/home/oracle/archivelog' scope=both;
System altered.
可以看到,当db_recovery_file_dest 或者 log_archive_dest_n 有值的时候,是不能设置 log_archive_dest,所以需现将db_recovery_file_dest 和 log_archive_dest_n中的非空值设置为空。
再来切换归档日志,看看日志的相关信息
SQL> alter system switch logfile;
System altered.
SQL> SELECT RECID,STAMP,NAME,SEQUENCE#,ARCHIVED,DELETED,STATUS FROM V$ARCHIVED_LOG;
RECID STAMP NAME
SEQUENCE# ARC DEL S
---------- ---------- ---------------------------------------------------------------------------------------------------- ---------- --- --- -
1
871828407 /u01/app/fast_recovery_area/ORCL/archivelog/2015_02_16/o1_mf_1_98_bg33sqkz_.arc
98 YES NO
A
2
871828746 /u01/app/fast_recovery_area/ORCL/archivelog/2015_02_16/o1_mf_1_99_bg344b4q_.arc
99 YES NO
A
3
871831654 /home/oracle/archivelog/1_100_870599824.dbf
100 YES NO
A
可以看出,新的归档日志已经在log_archive_dest 设置的目录中了。
使用了log_archive_dest 这个参数,还有一个配套使用的参数
log_archive_duplex_dest :该初始化参数用于指定归档日志所在的第二个目录,它与参数LOG_ARCHIVE_DEST同时使用,但不能与LOG_ARCHIVE_DEST_n同时使用。该初始化参数是动态参数,可以使用ALTER SYSTEM命令进行修改
SQL> alter system set log_archive_duplex_dest='/home/oracle/archivelog_duplex' scope=both;
System altered.
SQL> alter system switch logfile;
System altered.
SQL> SELECT RECID,STAMP,NAME,SEQUENCE#,ARCHIVED,DELETED,STATUS FROM V$ARCHIVED_LOG;
RECID STAMP NAME
SEQUENCE# ARC DEL S
---------- ---------- ---------------------------------------------------------------------------------------------------- ---------- --- --- -
1
871828407 /u01/app/fast_recovery_area/ORCL/archivelog/2015_02_16/o1_mf_1_98_bg33sqkz_.arc
98 YES NO
A
2
871828746 /u01/app/fast_recovery_area/ORCL/archivelog/2015_02_16/o1_mf_1_99_bg344b4q_.arc
99 YES NO
A
3
871831654 /home/oracle/archivelog/1_100_870599824.dbf
100 YES NO
A
4
871832397 /home/oracle/archivelog/1_101_870599824.dbf
101 YES NO
A
5
871832397 /home/oracle/archivelog_duplex/1_101_870599824.dbf
101 YES NO
A
可以看到新切换的归档日志已经 1_101_870599824.dbf 在目录 /home/oracle/archivelog 和 /home/oracle/archivelog_duplex 同时存在
log_archive_dest_n
下面看看这个参数,先来更改这个参数
SQL> alter system set log_archive_dest_1='location=/home/oracle/archivelog/log_archive_dest_1' scope=both;
alter system set log_archive_dest_1='location=/home/oracle/archivelog/log_archive_dest_1' scope=both
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-16019: cannot use LOG_ARCHIVE_DEST_1 with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST
也报错了,在LOG_ARCHIVE_DEST 或 LOG_ARCHIVE_DUPLEX_DEST 不为空时,是不能设置这个值,因为上面的实验我将这两个个值已经设置了。
还有一点要注意,由于log_archive_dest_n 可以备份到远程机器上,所以在路径的地方加了 location关键字,通过设置关键词location或service,该参数指向的路径可以是本地或远程的。
将参数 LOG_ARCHIVE_DEST 和 LOG_ARCHIVE_DUPLEX_DEST 设置为空
SQL> alter system set log_archive_dest='' scope=both;
alter system set log_archive_dest='' scope=both
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-16022: LOG_ARCHIVE_DEST cannot be NULL because LOG_ARCHIVE_DUPLEX_DEST is non-NULL
SQL> alter system set LOG_ARCHIVE_DUPLEX_DEST='' scope=both;
System altered.
SQL> alter system set LOG_ARCHIVE_DEST='' scope=both;
System altered.
再次验证了,LOG_ARCHIVE_DUPLEX_DEST 是依赖与LOG_ARCHIVE_DEST的,在 LOG_ARCHIVE_DUPLEX_DEST不为空的情况下,是不能单独设置LOG_ARCHIVE_DEST为空的。
下面设置 log_archive_dest_1 和 log_archive_dest_2 两个参数
SQL> alter system set log_archive_dest_1='location=/home/oracle/archivelog_dest_1' scope=both;
System altered.
SQL> alter system set log_archive_dest_2='location=/home/oracle/archivelog_dest_2' scope=both;
System altered.
SQL> alter system switch logfile;
System altered.
SQL> SELECT RECID,STAMP,NAME,SEQUENCE#,ARCHIVED,DELETED,STATUS FROM V$ARCHIVED_LOG;
RECID STAMP NAME
SEQUENCE# ARC DEL S
---------- ---------- ---------------------------------------------------------------------------------------------------- ---------- --- --- -
1
871828407 /u01/app/fast_recovery_area/ORCL/archivelog/2015_02_16/o1_mf_1_98_bg33sqkz_.arc
98 YES NO
A
2
871828746 /u01/app/fast_recovery_area/ORCL/archivelog/2015_02_16/o1_mf_1_99_bg344b4q_.arc
99 YES NO
A
3
871831654 /home/oracle/archivelog/1_100_870599824.dbf
100 YES NO
A
4
871832397 /home/oracle/archivelog/1_101_870599824.dbf
101 YES NO
A
5
871832397 /home/oracle/archivelog_duplex/1_101_870599824.dbf
101 YES NO
A
6
871834042 /home/oracle/archivelog_dest_1/1_102_870599824.dbf
102 YES NO
A
7
871834042 /home/oracle/archivelog_dest_2/1_102_870599824.dbf
102 YES NO
A
7 rows selected.
现在新的归档日志 1_102_870599824.dbf 已经分别存在于 /home/oracle/archivelog_dest_1 和 /home/oracle/archivelog_dest_2 中
总结:
1、 如果设置了DB_RECOVERY_FILE_DEST,就不能设置LOG_ARCHIVE_DEST,默认的归档日志存放于DB_RECOVERY_FILE_DEST指定的闪回恢复区中。可以设置LOG_ARCHIVE_DEST_n,如果这样,那么归档日志不再存放于DB_RECOVERY_FILE_DEST中,而是存放于LOG_ARCHIVE_DEST_n设置的目录中。如果想要归档日志继续存放在DB_RECOVERY_FILE_DEST中,可以通过如下命令:alter system set log_archive_dest_1=’location=USE_DB_RECOVERY_FILE_DEST’;
2、 如果设置了LOG_ARCHIVE_DEST,就不能设置LOG_ARCHIVE_DEST_n和DB_RECOVERY_FILE_DEST。如果设置了LOG_ARCHIVE_DEST_n,就不能设置LOG_ARCHIVE_DEST。也就是说,LOG_ARCHIVE_DEST参数和DB_RECOVERY_FILE_DEST、LOG_ARCHIVE_DEST_n都不共存。而DB_RECOVERY_FILE_DEST和LOG_ARCHIVE_DEST_n可以共存。
3、 LOG_ARCHIVE_DEST只能与LOG_ARCHIVE_DUPLEX_DEST共存。这样可以设置两个归档路径。LOG_ARCHIVE_DEST设置一个主归档路径,LOG_ARCHIVE_DUPLEX_DEST设置一个从归档路径。所有归档路径必须是本地的。
4、 如果LOG_ARCHIVE_DEST_n设置的路径不正确,那么Oracle会在设置的上一级目录归档。
其他的相关参数说明
LOG_ARCHIVE_DEST_STATE_N
该初始化参数用于指定归档目录的可用状态,默认值为ENABLE。当设置该参数为ENABLE时,会激活相应的归档位置;当设置该参数为DEFER时,会禁用相应的归档位置;当设置该参数为ALTERNATE时,如果归档到其他位置失败,则会使用该归档位置。该初始化参数是动态参数,可以使用ALTER SESSION或ALTER SYSTEM命令进行修改。
LOG_ARCHIVE_FORMAT
该初始化参数用于指定归档日志文件名称的格式。当指定归档日志的名称格式时,可以使用多种格式符,其中%S和%S(用0填充)用于标记日志序列号,%T和%T(用0填充)用于标记线程号,%D用于标记数据库ID号,%R用于标记数据库副本的ID号。因为该初始化参数是静态参数,所以修改后必须重新启动例程。
LOG_ARCHIVE_MAX_PROCESSES
该初始化参数用于指定要启动的归档进程个数,其数值范围为1~10,默认值为2。该初始化参数是动态参数,可以使用ALTER SYSTEM命令进行修改。一般情况下不建议修改该值。
LOG_ARCHIVE_MIN_SUCCEED_DEST
该初始化参数用于指定归档到本地位置的最小成功次数,默认值为1.注意,当设置了该参数之后,只有归档到本地位置个数达到该参数值时,重做日志才能被覆盖。该初始化参数是动态参数,可以使用ALTER SESSION或ALTER SYSTEM命令进行修改。
LOG_ARCHIVE_TRACE
该初始化参数用于控制归档日志的跟踪级别,其数值范围为0、1、2、4、8、16、32、64、128,默认值为0。当设置该参数为0时,会禁止跟踪归档日志;当设置该参数为1时,会激活跟踪归档日志文件;当设置该参数为2时,会跟踪每个归档位置的状态;当设置该参数为4时,会跟踪归档操作步骤;当设置该参数为8时,会跟踪归档位置活动;当设置该参数为16时,会跟踪详细的归档位置活动;当设置该参数为32时,会跟踪归档位置参数的修改;当设置该参数为64时,会跟踪ARCn进程活动;当设置该参数为128时,会跟踪FAL进程的相关活动。该初始化参数是动态参数,可以使用ALTER SYSTEM命令进行修改。
参考文档:
http://blog.itpub.net/25744374/viewspace-732083
http://blog.csdn.net/tanguooo19866/article/details/8508953
最后
以上就是粗犷大神为你收集整理的参数db_recovery_file_dest,log_archive_dest,log_archive_dest_n的全部内容,希望文章能够帮你解决参数db_recovery_file_dest,log_archive_dest,log_archive_dest_n所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复