LOG_ARCHIVE_DEST_n
Property | Description |
---|---|
Parameter type | String |
Default value | There is no default value. |
Modifiable | ALTER SESSION, ALTER SYSTEM |
Basic | Yes |
Syntax:
LOG_ARCHIVE_DEST_[1 .. 31] = {
null_string |
{ LOCATION=path_name | SERVICE=service_name }
[ MANDATORY ]
[ REOPEN[=seconds] ]
[ DELAY[=minutes] ]
[ NOREGISTER ]
[ PRIORITY=priority ]
[ TEMPLATE=template ]
[ ALTERNATE=destination ]
[ MAX_FAILURE=count ]
[ SYNC | ASYNC ]
[ AFFIRM | NOAFFIRM ]
[ NET_TIMEOUT=seconds ]
[ VALID_FOR=(redo_log_type,database_role) ]
[ DB_UNIQUE_NAME ]
[ COMPRESSION={ENABLE|DISABLE} ]
}
- LOG_ARCHIVE_DEST_n初始化参数定义最多31个(其中n = 1,2,3,... 31)destinations,每个destination必须指定LOCATION或SERVICE属性指定归档日志的位置,所有其他属性都是可选的;无论是指定LOCATION还是SERVICE,它都必须位于属性列表的第一个
- 如果不输入任何属性,则可以输入以下内容来指定NULL字符串:
LOG_ARCHIVE_DEST_n =''
; - 设置LOG_ARCHIVE_DEST_n初始化参数的作用是控制重做传输服务如何将重做数据从生产或主数据库传输到另一个(备用)数据库目标,可以查询V$ARCHIVE_DEST视图以查看每个目标的当前属性设置(n)
- LOG_ARCHIVE_DEST_11到LOG_ARCHIVE_DEST_31不支持SYNC,ARCH,LOCATION,MANDATORY或ALTERNATE属性,也不能指定为ALTERNATE属性的目标 5.LOG_ARCHIVE_DEST_11到LOG_ARCHIVE_DEST_31只能在COMPATIBLE初始化参数设置为11.2.0或更高时使用,它们仅适用于远程
- 对于定义的每个LOG_ARCHIVE_DEST_n初始化参数,必须指定相应的LOG_ARCHIVE_DEST_STATE_n参数,LOG_ARCHIVE_DEST_STATE_n指定对应的dest是否启用
- 除了location和service是本身的配置,别的参数一般是DG的配置
- DG配置中的每个数据库通常都有两个dest,其中一个dest是LOCATION属性,用于在线日志或备用重做日志存档于本地;另一个dest是REMOTE属性,用于配置dg中的其他数据库
- LOG_ARCHIVE_DEST_1到10的每个参数必须包含一个LOCATION或SERVICE属性,以指定本地磁盘目录或远程访问的数据库;LOG_ARCHIVE_DEST_11到31的每个参数都必须包含一个SERVIC属性,其他属性都是可选的
- LOG_ARCHIVE_DEST_11到31不能指定ALTERNATE redo transport location.
==LOCATION=local_disk_directory [USE_DB_RECOVERY_FILE_DEST] | SERVICE== 每个dest必须指定LOCATION或SERVICE属性,以标识本地磁盘目录或重做传输服务可以传输的远程数据库dest 1到10可以包含LOCATION或SERVICE;11到31只能包含SERVICE属性 在V$ARCHIVE_DEST.DESTINATION和V$ARCHIVE_DEST.TARGET查看设置,target标识是主数据库的本地还是远程,DESTINATION标识为目录或service_name
Usage Notes:
- 不管是不是dg环境,必须使用LOCATION指定至少一个本地磁盘目录,这可确保在需要进行数据库的介质恢复时可以访问本地存档的重做日志文件,最多可以指定30个本地或远程目标
- 对于LOCATION,可以指定的值:
- LOCATION= local_disk_directory 在数据库的统上指定唯一的目录路径名,这是归档重做日志文件的本地目录
- LOCATION=USE_DB_RECOVERY_FILE_DEST 配置到快速恢复区域(FRA),或ASM作为FRA
- 当指定SERVICE属性时:
- 通过使用有效的Oracle Net服务名称(SERVICE = net_service_name)指定SERVICE属性来标识远程目标,该服务名标识要将redolog发送到的远程Oracle数据库实例,使用SERVICE指定的Oracle Net服务名称将转换为连接描述符,其中包含连接到远程数据库所需的信息
- 将redolog传输到远程目标需要网络连接和与远程目标关联的Oracle数据库实例来接收传入的重做数据
AFFIRM | NOAFFIRM
控制日志传输服务是异步还是同步写日志数据到磁盘
- AFFIRM 指定dest将接收到的重做数据写入备用重做日志后告知传送者接收到了redo数据
- NOAFFIRM(默认)指定dest将接收到的重做数据写入备用重做日志前告知传送者接收到了redo数据
Notes
- 如果没有指定AFFIRM或NOAFFIRM,则在指定SYNC时默认为AFFIRM,指定ASYNC时默认为NOAFFIRM;即AFFIRM和SYNC类似,NOAFFIRM和ASYNC类似
- 指定AFFIRM时如不指定SYNC将来的版本不支持
区别:
- AFFIRM能确保主库故障后,没有数据丢失
- AFFIRM可以在本地或远程使用
- AFFIRM影响主库的性能,因为一旦备库出问题,主库会一直等待(最大保护模式)
- LGWR和AFFIRM:LGWR写REDO LOG到磁盘前,控制权不交给用户,同时在归档完成之前主库的在线日志可能不可用,而ASYNC和AFFIRM,性能不受影响
- ARCH和AFFIRM,ARCn进程写REDO LOG到磁盘,归档操作可能时间比较长,主库的在线日志在归档完成日志前可能不可用
==ALTERNATE=LOG_ARCHIVE_DEST_n== (不支持11到31) 指定当原始目标归档失败时要使用的另一个存档目标,没有默认值;如果没有指定备用dest,则如果原始dest失败,归档也失败
Notes
- 每个dest只能指定一个ALTERNATE;多个dest可以使用同一个ALTERNATE
- 一般ALTERNATE指定为: 2.1. 如为LOCATION,则指定为不同的disk 2.2 A different network route to the same standby database system 2.3 A remote standby database system that closely mirrors that of the enabled destination
- If no enabled destinations reference an alternate destination, the alternate destination is implied to be deferred, because there is no automatic method of enabling the alternate destination. However, you can enable (or defer) alternate destinations at runtime using ALTER SYSTEM.
- 根据以下限制,任何目的地都可以指定为ALTERNATE:
- 本地dest至少一个
- 启用dest的数量必须满足定义的LOG_ARCHIVE_MIN_SUCCEED_DEST
- 目的地不能是它自己的ALTERNATE
- 最好启用多个dest,少使用ALTERNATE
- 当dest失败时,它的ALTERNATE将在下一次存档操作中启用,不支持在归档操作的中间启用ALTERNATE,因为这需要重新读取已处理的块,这与REOPEN属性行为相同
- 如果REOPEN属性的值非0,则会忽略ALTERNATE,除非MAX_FAILURE属性是非零值;如果MAX_FAILURE和REOPEN都是非零值,且故障计数超过指定的故障阈值,则启用ALTERNATE,因此,ALTERNATE与非零的REOPEN不冲突
==ASYNC | SYNC== (不支持11到31)
- ASYNC:事务提交前不需要确认standby已接收到该redolog
- SYNC:事务提交前需要确认standby已接收到该redolog;影响primary性能 如果未指定,默认为ASYNC
Category | SYNC | ASYNC |
---|---|---|
Data type | Keyword | Keyword |
Valid values | Not applicable | Not applicable |
Default value | Not applicable | None |
Requires attributes | None | None |
Conflicts with attributes | ASYNC, LOCATION | SYNC, LOCATION |
Corresponds to | TRANSMIT_MODE column of the V$ARCHIVE_DESTview | TRANSMIT_MODE and column of the V$ARCHIVE_DEST view |
Notes:
- 11-31不支持SYNC属性
- 在primary和逻辑standby上,1到10默认为ASYNC(实时级联);在物理standby,snapshot standby和far sync instances,1到10默认为ARCH传输模式(注意,不推荐使用ARCH属性;在这种情况下使用ARCH只表示非实时级联。) ;11到31始终默认为ASYNC
- 在V$ARCHIVE_DEST.TRANSMIT_MODE查看同步模式
select TRANSMIT_MODE from v$archive_dest;
==COMPRESSION== 指示是启用网络压缩,或者是否使用ZLIB或LZO算法;指定在传输redo log之前是否压缩重做数据 如果未启用高级压缩选项,则忽略COMPRESSION |Category| COMPRESSION=[ENABLE | DISABLE | ZLIB | LZO]| | --- |--- | |Data Type| Boolean| |Valid values|ENABLE, DISABLE, ZLIB, or LZO| |Default value|DISABLE| |Corresponds to|COMPRESSION column of the V$ARCHIVE_DEST view|
Usage Notes
- The ENABLE option enables compression and uses the ZLIB compression algorithm by default.
- For Oracle Data Guard SYNC connection strings that also use the Oracle Data Guard COMPRESSION attribute, be sure the SQLNET.COMPRESSION configuration parameter is set to disabled (set to off) in the sqlnet.ora file.
==DB_UNIQUE_NAME=name== 指定此dest的数据库的唯一名称,主库与备库连接时会发送自己唯一名称,同时要求备库返回其唯一名称,并结合LOG_ARCHIVE_CONFIG验证其存在性;
Usage Notes:
- This attribute is optional if:
- LOG_ARCHIVE_CONFIG=DG_CONFIG没有指定
- 指定了LOCATION属性
- 如果指定了LOG_ARCHIVE_CONFIG = DG_CONFIG初始化参数,并且这是远程目标(使用SERVICE属性),则需要此属性
- 使用DB_UNIQUE_NAME属性可以清楚地标识主数据库和备用数据库之间的关系,如果Oracle Data Guard配置中有多个备用数据库,则此属性特别有用
- DB_UNIQUE_NAME指定的名称必须与DG_CONFIG列表中的某个DB_UNIQUE_NAME值匹配,重做传输服务验证指定dest的DB_UNIQUE_NAME属性是否与standby的DB_UNIQUE_NAME属性匹配,否则拒绝与该目标的连接
- DB_UNIQUE_NAME属性指定的名称必须与standby数据库的DB_UNIQUE_NAME初始化参数指定的名称匹配
==DELAY[=minutes]== 如果指定DELAY属性而没有时间间隔,则默认值为30分钟 delay明确指定一个standby应用接收到的归档redo数据延迟的时间
Requires attributes:SERVICE Conflicts with attributes:LOCATION, VALID_FOR=(*,STANDBY_ROLE)
Usage Notes:
- delay是可选的,默认没有延迟,是实时的
- delay表明standby上归档redolog是不还原的,直到指定的时间间隔过期才会应用日志(recovery);当redo log成功传输到standby上并归档后开始计算时间
- delay以分钟为单位,可以用于保护standby数据库免遭、来自主数据库的用户错误或者损坏带来的影响,是一种折中方案,在failover过程中需要更多的时间来应用日志
- Delay不影响redo传送到standby
- 如果启动实时应用,设置的延迟都被忽略
- 改变delay属性设置会在下一次redo时间被归档时起作用,正在归档的日志不受影响
修改delay
--For a physical standby database:
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE NODELAY;
--For a logical standby database:
ALTER DATABASE START LOGICAL STANDBY APPLY NODELAY;
==MANDATORY== (不支持11到31) 指定在可以重复使用本地联机重做日志文件之前,必须成功将重做数据传输到目标,如果未指定MANDATORY属性,则目标是可选的 在V$ARCHIVE_DEST.BINDING中查看设置
Usage Notes:
- 如果未指定MANDATORY,则by default, the destination is considered to be optional. 即使所有dest都是可选的,也必须至少有一个dest成功,如果归档到可选目标失败,则联机重做日志文件仍可以重用,最终可能会被覆盖,但是,如果强制目标的归档操作失败,则无法覆盖联机重做日志文件
- LOG_ARCHIVE_MIN_SUCCEED_DEST = n(n是1到10的整数)指定在覆盖联机重做日志文件之前必须成功存档的目标数,所有MANDATORY目的地和可选的本地目的地都能满足LOG_ARCHIVE_MIN_SUCCEED_DEST = n,如果满足了LOG_ARCHIVE_MIN_SUCCEED_DEST参数设置的值,则可以重用联机重做日志文件
- 必须至少有一个本地目的地,可以声明MANDATORY或保留为可选,至少有一个本地目标在操作上被视为必需目标,因为LOG_ARCHIVE_MIN_SUCCEED_DEST的最小值为1
- The failure of any mandatory destination makes the LOG_ARCHIVE_MIN_SUCCEED_DEST parameter irrelevant.
- LOG_ARCHIVE_MIN_SUCCEED_DEST的值不能大于强制目标的数量加上可选的本地目标的数量
==MAX_FAILURE== 控制重做传输服务尝试重新建立通信的连续次数,并在主库放弃目标之前将重做数据传输到失败的目标 MAX_FAILURE, FAILURE_COUNT, and REOPEN_SECS columns of the V$ARCHIVE_DEST view
==NET_TIMEOUT=seconds== 指定LGWR后台进程阻止等待重做传输目标确认发送给它的重做数据的秒数,默认30秒,如果在NET_TIMEOUT秒内未收到确认,则会记录错误并终止到该目标的重做传输会话
Usage Notes
- NET_TIMEOUT属性是可选的,但是,如果未指定NET_TIMEOUT,则将其设置为30秒,但主数据库可能会停止,要避免这种情况,为NET_TIMEOUT指定一个小的非零值,以便在等待来自网络服务器的状态时,在用户指定的超时间隔到期后,主数据库可以继续操作
- 从12c版本12.2(12.2.0.1)开始,有一个新的数据库初始化参数DATA_GUARD_SYNC_LATENCY,它对所有同步备用目标都是全局的,它定义了在至少一个同步备用数据库确认收到重做后,主数据库在断开后续目标之前可能等待的最长时间(以秒为单位)
==NOREGISTER== 指示存档的重做日志文件的位置不会记录在相应的目标位置 Requires attributes:SERVICE Corresponds to:DESTINATION and TARGET columns of the V$ARCHIVE_DEST
Usage Notes:
- 如果standby dest是dg配置的一部分,则NOREGISTER属性是可选的
- 如果目标不是dg配置的一部分,则需要NOREGISTER属性
- 此属性仅适用于远程目标,每个归档重做日志文件的位置始终记录在主数据库控制文件中
- This attribute must not be used in an Oracle Data Guard configuration that has no downstream GoldenGate mining setup. Using NOREGISTER in this scenario may cause problems during switchover operations.
==REOPEN[=seconds]== 指定归档进程(ARCn)或日志写入进程(LGWR)再次尝试访问先前失败的dest之前的最小秒数,默认为300秒,主库遇到备库故障后尝试重新连接备库所需等待的时间 REOPEN_SECS and MAX_FAILURE columns of the V$ARCHIVE_DEST view
Usage Notes
- 重做传输服务尝试在日志切换时重新打开失败的目标
- 重做传输服务检查上一个错误加上REOPEN间隔的时间是否小于当前时间,如果是,重做传输服务尝试重新打开目的地
- REOPEN适用于所有错误,而不仅仅是连接失败,错误包括但不限于网络故障,磁盘错误和配额异常
- 如果为可选目标指定REOPEN,则Oracle数据库可能会在出现错误时覆盖联机重做日志文件;如果为MANDATORY目标指定REOPEN,则当无法成功传输重做数据时,重做传输服务会停止主数据库,发生这种情况时,考虑以下选项:
- 通过延迟目标,将目标指定为可选或更改SERVICE属性值来更改目标
- 指定alternate
- Disable the destination
==TEMPLATE=filename_template_%t_%s_%r== 为dest上的归档重做日志文件的名称定义目录规范和格式模板,该模板用于生成与重做目标中的LOG_ARCHIVE_FORMAT初始化参数定义的默认文件名格式不同的文件名,没有默认值 Requires attributes:SERVICE REMOTE_TEMPLATE and REGISTER columns of the V$ARCHIVE_DEST
Usage Notes
- TEMPLATE属性是可选的,如果未指定TEMPLATE,则使用LOG_ARCHIVE_FORMAT初始化参数的值命名归档重做日志
- TEMPLATE属性会覆盖远程存档目标上的LOG_ARCHIVE_FORMAT初始化参数设置
- TEMPLATE属性仅对远程目标有效(使用SERVICE属性指定)
- The value you specify for filename_template must contain the %s, %t, and %r %t:Substitute the instance thread number. %T:Substitute the instance thread number, zero filled. %s:Substitute the log file sequence number. %S:Substitute the log file sequence number, zero filled. %r:Substitute the resetlogs ID. %R:Substitute the resetlogs ID, zero filled.
VALID_FOR=(redo_log_type, database_role)
在DG中,Oracle基于数据库角色和redo日志类型判断log_archive_dest_n指定的目录是否产生相应的归档redo日志,vaild_for属性可选,Oracle推荐在DG配置中的每个数据库为日志传输目的地指定vaild_for属性,这样主数据库角色转换到配置中的任何standby数据库之后,redo传输都能继续工作
- redo_log_type关键字表明该目的地产生归档的redo日志类型
- online_logfile:目的地只归档联机redo日志
- standby_logfile:目的地只归档standby redo日志
- all_logfiles:目的地既归档联机redo日志,也归档standby redo日志
- database_role表明该目的地产生归档的数据库角色VALID_NOW, VALID_TYPE, VALID_ROLE in the V$ARCHIVE_DEST
- primary_role:只有数据库是主,该目的地才会产生归档
- standby_role:只有数据库是备,该目的地才会产生归档
- all_role:当数据库不论是主还是备,该目的地都会产生归档
如果未指定VALID_FOR,则默认无论数据库是以主角色还是备用角色运行,都会在目标上启用归档联机重做日志文件和备用重做日志文件,此默认行为等同于在VALID_FOR属性上设置(ALL_LOGFILES, ALL_ROLES)
The VALID_FOR attribute enables you to use the same initialization parameter file for both the primary and standby roles.
“主库什么时候传送什么日志”还有"备库什么时候接收什么日志";定义何时使用(角色相关)LOG_ARCHIVE_DEST_n参数以及应该在哪类重做日志文件上运行
eg1
*.log_archive_dest_1='location=/u01/app/oracle/archive_log'
*.log_archive_dest_2='service=DG lgwr async VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DG'
比如主备库都设置如上
主库就会使用位置1来进行归档(而且默认 VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=主库的DB_UNIQUE_NAME),
使用位置2来进行归档(其实就是通过lgwr async传输到tns中别名为DG,DB_UNIQUE_NAME=DG的备库的/u01/app/oracle/archive_log)
备库只是被动的使用位置1来接受来自主库的归档日志,如alert中会出现的一句话Using STANDBY_ARCHIVE_DEST parameter default value as /u01/app/oracle/archive_log
位置2由于设置为PRIMARY_ROLE而自己是standby则不会生效
一旦发生切换
原来的主库的位置2就不起作用了,原来的备库的位置2就起作用了
如果主备都把位置2设置为ALL_LOGFILES,ALL_ROLES,备库还要给主库发归档日志,那就矛盾了eg2
log_archive_dest_1的vaild_for属性设置为(online_logfile,all_roles),log_archive_dest_3的vaild_for属性设置为(standby_logfile,standby_role),那当该数据库是主时,只会归档联机日志到log_archive_dest_1指定的目录,如果该数据库被转换为备,那standbyredo日志被归档到log_archive_dest_3指定的目录,log_archive_dest_1不会归档standby redo日志
PRIORITY=priority
用于指定一组日志归档dest的首选项,PRIORITY编号为1到8,较低的值表示较高的优先级,最低优先级(PRIORITY = 8)在某种意义上是特殊的,即如果该优先级处于活动状态,那么该优先级的所有目的地都将被激活,如果任何更高优先级的dest返回服务,则该目的地将被激活,并且所有低优先级dest将变为非活动状态,因为它们将通过级联或远程同步从其他一个重做目的地接收重做
Valid Value 1 through 8 Default Value 1 Requires attributes SERVICE Conflicts with attributes ALTERNATE
Usage Notes PRIORITY属性始终与GROUP属性一起使用,以提供组的成员(重做目标)的有序启用和回退
LOG_ARCHIVE_CONFIG
LOG_ARCHIVE_CONFIG启用或禁用向远程目标发送重做日志和接收远程重做日志,并为Data Guard配置中的每个数据库指定唯一数据库名称(DB_UNIQUE_NAME) 当未设置值时,默认为NULL,但是,NULL值被视为参数被设置为' SEND, RECEIVE, NODG_CONFIG '
Syntax
LOG_ARCHIVE_CONFIG =
{
[ SEND | NOSEND ] --是否允许将重做日志发送到远程目标
[ RECEIVE | NORECEIVE ]--是否允许接收远程归档的重做日志
[ DG_CONFIG=(remote_db_unique_name1 [, ... remote_db_unique_name30) --为DG配置中的所有数据库指定最多30个唯一数据库名称(DB_UNIQUE_NAME初始化参数)的列表
| NODG_CONFIG ]--消除先前使用DG_CONFIG指定的列表
}
Modifiable:ALTER SYSTEM
LOG_ARCHIVE_MIN_SUCCEED_DEST
定义了要使联机日志文件可重用,必须成功的最小目标数,默认为1
Modifiable: ALTER SESSION, ALTER SYSTEM Range of values : 1 to 10 if using LOG_ARCHIVE_DEST_n |1 or 2 if using LOG_ARCHIVE_DEST and LOG_ARCHIVE_DUPLEX_DEST
- 如果使用LOG_ARCHIVE_DEST_n并且启用了自动存档,则此参数的值不能超过指定为MANDATORY的已启用有效dest的数量加上使用OPTIONAL和LOCATION属性配置的已启用有效目标的数量
- 如果使用LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST并且启用了自动存档,则值1指定LOG_ARCHIVE_DEST中指定的dest必须成功,值2指定两个参数中指定的目标必须成功
- 如果此参数的值小于启用的有效MANDATORY目标的数量,则忽略此参数以支持MANDATORY目标计数;如果该值大于已启用的有效MANDATORY目标的数量,则使用OPTIONAL和LOCATION属性配置的某些已启用的有效目标将被视为强制
LOG_ARCHIVE_DEST_STATE_n
LOG_ARCHIVE_DEST_STATE_n参数(n = 1,2,3,... 31)指定相应dest的可用性状态
Syntax
LOG_ARCHIVE_DEST_STATE_[1 .. 31] = { enable | defer | alternate | reset }```
Default value:enable
Modifiable:ALTER SESSION, ALTER SYSTEM
Values:
- enable设置对应的dest为启用状态,这是默认值
- defer Specifies that valid destination information and attributes are preserved, but the destination is excluded from archiving operations until re-enabled. 在dg环境中defer可用来暂停主库对备库的日志传输(如在系统维护日,对主库进行大量的业务更新,会有大量的DML操作;为了避免主库中的业务更新对备库造成影响,可以暂停主库对备库的日志传输,这样如果主库的更新出现问题,备库还保留一份完整的数据镜像,可以执行failover)alternate 指定未启用日志归档目标,但如果与另一个目标的通信失败,则将启用该目标归档目标,使用ALTERNATE属性时使用
-
alter system set LOG_ARCHIVE_DEST_STATE_2=defer scope=both; ALTER SYSTEM ARCHIVE LOG CURRENT;
-
- reset Functions the same as defer, but clears any error messages for the destination if it had previously failed.
LOG_ARCHIVE_DEST_STATE_n对LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST的ENABLE状态没有影响 V$ARCHIVE_DEST动态性能视图显示当前会话使用的值,DEST_ID列对应于归档目标后缀n
db_file_name_convert | log_file_name_convert
有若干方法用于调整文件名,按照优先级从高到低:
- set newname –用于rman脚本,配合switch datafile to copy
- db_create_file_dest –用于OMF
- db_file_name_convert | log_file_name_convert 如果physical standby同时设置了db_create_file_dest和db_file_name_convert,则优先使用前者
- db_file_name_convert 主库和备库的数据文件转换目录对映关系(如果两数据库的目录结构不一样),如果有多个对映,逐一指明对映关系 格式: 备库中使用:pri-path,standby-path 主库中使用:standby-path,pri-path
- log_file_name_convert 指明主库和备库的log文件转换目录对映关系
用途:
- DG环境下,因为从库恢复出来的控制文件和主库的控制文件一样,所以数据文件路径,日志文件路径与主库的都一样,但是想使主从库的数据文件路径、联机日志路径不同
- 过程:从库通过主库的备份恢复控制文件--->恢复控制文件时,oracle查看从库参数文件中的db_file_name_convert和log_file_name_convert参数---->将主库保存数据文件、联机日志的路径转换成从库保存数据文件、联机日志的路径---->生成从库的控制文件
所以,db_file_name_convert和log_file_name_convert这两个参数像桥梁一样,来完成转换dataguard的主库和从库数据文件和联机日志保存路径不同的问题
Note:
- db_file_name_convert和log_file_name_convert用来转换数据,在线和standby日志文件的位置,仅适用于physical standby和rman duplicate/TSPITR,对logical standby和普通rman restore无效
- ==如果不切换主备库,该参数只在备库中用 #F44336==,且第一个参数为主库的路径,第二个参数为备库的路径,如果考虑到以后要切换,那么rac主库中也要设置此参数,参数正好和上面的翻过来
e.g.
--db_file_name_convert可以协同backup/convert命令使用
BACKUP AS COPY DEVICE TYPE DISK
DB_FILE_NAME_CONVERT=('/disk1/dbs/users','/newdisk1','/disk1/dbs/tools','/newdisk2')
TABLESPACE tools, users;
--Backing up tablespace with db_file_name_convert
convert tablespace TSP_A,TSP_B to platform="Solaris[tm] OE (64-bit)"
DB_FILE_NAME_CONVERT=
'D:ORACLEUSRDATA','H:converted_datafiles',
'O:ORACLEUSRDATA','L:converted_datafiles'
FAL_CLIENT | FAL_SERVER
data guard专用参数,利用arch解决日志间隙
- FAL_CLIENT和FAL_SERVER是配置dataguard用到的两个参数,FAL指获取归档日志(Fetch Archived Log)
- 在一定条件下,或者因为网络失败,或者因为资源紧张,会在primary和standby之间产生裂隙,也就是有些归档日志没有及时的传输并应用到standby库,因为MRP(managed recovery process)/LSP(logical standby process)没有与primary直接通讯的能力来获取丢失的归档日志,因此这些gaps通过FAL客户和服务器来解决,由初始化参数定义FAL_CLIENT和FAL_SERVER,一旦产生了gap,fal_client会自动向fal_server请求传输gap的archivelog
- FAL_SERVER指定一个Oracle Net service name,standby数据库使用这个参数连接到FAL server,这个参数适用于standby,如FAL_SERVER = PrimaryDB,此处PrimaryDB是一个TNS name,指向primary库
- FAL_CLIENT指定一个FAL客户端的Net service name,以便FAL Server可以引用standby库,这也是一个TNS name,primary库必须适当配置此TNS name指向stanby库,这个参数也是在standby库端设置,比如,FAL_CLIENT = StandbyDB,StandbyDB是standby库的TNS name
- FAL_CLIENT和FAL_SERVER应该成对设置或改变,FAL_SERVER出现GAP的时候从哪里取归档日志,FAL_CLIENT把GAP发送到哪里 6、一般情况下,这两个参数只需在standby库设置,但也可以在primary库设置,以方便switchover或failover时primary库转变为standby角色,主从两端都配FAL_SERVER和FAL_CLIENT是为了切换方便,如果主-从角色一直不变也不打算变的话,primary端是不用配fal_server和fal_client的,只要把standby端两个参数配好即可
LOG_ARCHIVE_FORMAT
归档重做日志文件时,使用LOG_ARCHIVE_FORMAT指定默认文件名格式 Oracle RAC :Multiple instances can have different values, but identical values are recommended.
只有在ARCHIVELOG模式下使用重做日志时,LOG_ARCHIVE_FORMAT才适用,归档重做日志文件时,使用文本字符串和变量指定默认文件名格式,从此格式生成的字符串将附加到LOG_ARCHIVE_DEST中指定的路径
可使用一下变量格式:
变量格式 | desc |
---|---|
%s | log sequence number |
%S | log sequence number, zero filled |
%t | thread number |
%T | thread number, zero filled |
%a | activation ID |
%d | database ID |
%r | resetlogs ID that ensures unique names are constructed for the archived log files across multiple incarnations of the database |
存档日志文件名必须包含%s(sequence),%t(thread)和%r(resetlogs ID),以确保所有存档日志文件名都是唯一的
LOG_ARCHIVE_FORMAT在一下情况会被忽略:
- 日志被归档到FRA
- 当LOG_ARCHIVE_DEST [_n]指向Oracle ASM磁盘组的根目录时(如,+DATA),必须为要遵守的参数指定磁盘组的目录(如,+ DATA/logs)
在忽略LOG_ARCHIVE_FORMAT的情况下,将使用Oracle ASM文件名
LOG_ARCHIVE_DEST
使用LOG_ARCHIVE_DEST要将归档文件归档到指定目标
Syntax:LOG_ARCHIVE_DEST = filespec
Oracle RAC:Multiple instances can have different values.
只有在ARCHIVELOG模式下或从归档重做日志恢复数据库时,LOG_ARCHIVE_DEST才适用,LOG_ARCHIVE_DEST与LOG_ARCHIVE_DEST_n不兼容,并且当任何LOG_ARCHIVE_DEST_n的值不是空字符串时,必须将其定义为空字符串("")或(''),归档重做日志文件时,使用文本字符串指定磁盘文件
如果未显式定义LOG_ARCHIVE_DEST且所有LOG_ARCHIVE_DEST_n都是空值,则LOG_ARCHIVE_DEST在实例启动时设置为特定于操作系统的默认值
LOG_ARCHIVE_DUPLEX_DEST
LOG_ARCHIVE_DUPLEX_DEST类似初始化参数LOG_ARCHIVE_DEST,用于指定第二个存档目标:双工存档目标,此双工归档目标可以是必须成功或尽力而为的归档目标,取决于必须成功的归档目标数(LOG_ARCHIVE_MIN_SUCCEED_DEST)
Syntax:LOG_ARCHIVE_DUPLEX_DEST = filespec
LOG_ARCHIVE_MAX_PROCESSES
LOG_ARCHIVE_MAX_PROCESSES指定可以创建的最大ARCn进程数
Default value :4 Range of values :1 to 30
查看可用的归档进程
select * from v$archive_processes;
ARCHIVE_LAG_TARGET
ARCHIVE_LAG_TARGET在指定的时间之后(秒)强制执行日志切换
Default value: 0 (disabled) Range of values : 0 or any integer in [60, 7200] Oracle RAC : Multiple instances should use the same value.
0值禁用强制执行日志切换; 大于7200秒的值对于在备用数据库中保持合理的延迟没有多大用处,一般推荐值为1800(30分钟),极低的值会导致频繁的日志切换,从而降低性能;此类值还可能使归档程序进程过于繁忙,无法归档连续生成的日志
LOG_ARCHIVE_TRACE
LOG_ARCHIVE_TRACE启用并控制日志归档和重做传输活动的综合跟踪信息的生成
Range of values : 0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768 Oracle RAC :Multiple instances can have different values.
将LOG_ARCHIVE_TRACE设置为非零值时输出的附加跟踪可以出现在跟踪文件中,用于归档进程,RFS进程,LGWR进程,SYNC进程,ASYNC进程,前台进程,MRP进程,恢复进程,日志应用进程, 启动进程,关闭进程以及使用重做传输服务的其他进程
DB_UNIQUE_NAME
DB_UNIQUE_NAME specifies a globally unique name for the database.
Property | Description |
---|---|
默认值 | 数据库实例:DB_NAME的值<br>ASM实例: +ASM |
Oracle RAC | 多个实例必须具有相同的值 |
在同一个DB_DOMAIN中具有相同DB_NAME的数据库(如copies of a database created for reporting or a physical standby)必须具有唯一的DB_UNIQUE_NAME,每个数据库的DB_UNIQUE_NAME必须是唯一的
DB_UNIQUE_NAME的值最多为30个字符,不区分大小写,以下字符在数据库名称中有效:字母数字字符,下划线(_),数字符号(#)和美元符号($)
STANDBY_FILE_MANAGEMENT
是否启用备库上数据文件的自动管理,启用自动备用文件管理后,将在备库上复制主数据库上的添加和删除文件,仅适用物理Standby
Syntax:
STANDBY_FILE_MANAGEMENT = { MANUAL | AUTO }
Default value:MANUAL Modifiable:ALTER SYSTEM
设置为AUTO会导致Oracle自动在备库上创建文件,在某些情况下,还会覆盖现有文件,在设置STANDBY_FILE_MANAGEMENT和DB_FILE_NAME_CONVERT时,必须小心,以免意外覆盖现有的备用文件
在DG环境下:
- 如果设置为auto,主库增删文件会相应地自动在备库做出修改(结合convert参数);
- 如果设置为manual,当在primary删除表空间或数据文件,执行drop tablespace .. including contents and datafiles,standby只是在控制文件中将该文件删除,还需要手动将物理文件删除
SERVICE_NAMES
SERVICE_NAMES指定客户端可以通过其连接到实例的一个或多个名称,==多用于注册动态监听 #F44336== Syntax:SERVICE_NAMES =db_service_name [, db_service_name [ ... ] ]
Default value:DB_UNIQUE_NAME.DB_DOMAIN if defined Modifiable:ALTER SYSTEM Oracle RAC:RAC环境下不要设置SERVICE_NAMES,而使用SRVCT管理服务
实例使用listener注册服务名,当客户端请求服务时,listener确定哪些实例提供所请求的服务并将客户端路由到适当的实例
使用此参数指定其他服务名时,不会覆盖默认服务名,默认服务名加上使用此参数指定的其他服务名是客户端可用于连接到数据库的服务名
INSTANCE_NAME
在RAC环境中,多个实例可以与单个数据库服务相关联,客户端可以通过指定连接到数据库的特定实例来覆盖Oracle的连接负载平衡,INSTANCE_NAME指定此实例的唯一名称 ==多用于RAC和注册动态监听 #F44336==
Syntax:INSTANCE_NAME = instance_id
Default value:The instance's SID,注意: SID标识主机上实例的共享内存,但可能无法将此实例与其他实例区分开来
在单实例数据库系统中,实例名称通常与数据库名称相同
LOCAL_LISTENER
LOCAL_LISTENER指定一个网络名称,该名称解析为Oracle Net本地监听程序的地址或地址列表,地址或地址列表在TNSNAMES.ORA文件或为系统配置的其他地址存储库中指定
Syntax:LOCAL_LISTENER = network_name
Default value: (ADDRESS = (PROTOCOL=TCP)(HOST=hostname)(PORT=1521)) Modifiable:ALTER SYSTEM
CONTROL_FILES
CONTROL_FILES指定一个或多个控制文件名,用逗号分隔 只读参数,只能重启在init文件中修改
Syntax:CONTROL_FILES = filename [, filename ] ...
Range of values:1 to 8 filenames Oracle RAC:Multiple instances must have the same value.
Note: 控制文件名可以是OMF(Oracle托管文件Oracle Managed Files)名称,使用CREATE CONTROLFILE REUSE语句重新创建控制文件时会发生这种情况
REMOTE_LOGIN_PASSWORDFILE
指定Oracle是否检查密码文件,控制能否远程登录,限制密码文件的使用 Syntax:REMOTE_LOGIN_PASSWORDFILE = { shared | exclusive | none }
Default value:exclusive Oracle RAC:Multiple instances must have the same value.
- ==shared== 一个或多个数据库可以使用密码文件,密码文件可以包含SYS以及非SYS用户;要密码文件认证,不同实例dba组用户可以共享密码文件
- ==exclusive== 密码文件只能由一个数据库使用,密码文件可以包含SYS以及非SYS用户;即SYSOPER,SYSDBA可以授予除INTERNAL/SYS以外的其他用户;要密码文件认证,自己独占使用(默认值)
- ==none== 不使用密码文件认证,由操作系统对用户进行身份验证,不能远程登录
DB_CREATE_FILE_DEST
Syntax:DB_CREATE_FILE_DEST = directory | disk group
DB_CREATE_FILE_DEST指定OMF的路径,如果没有指定DB_CREATE_ONLINE_LOG_DEST_n,则还用作控制文件和在线重做日志的默认位置;该目录必须已经存在;Oracle不会去创建;
DB_CREATE_ONLINE_LOG_DEST_n
Syntax:DB_CREATE_ONLINE_LOG_DEST_[1 | 2 | 3 | 4 | 5] = directory | disk group
DB_CREATE_ONLINE_LOG_DEST_n指定OMF的==控制文件和联机重做日志 #F44336==的位置,如果指定了多个DB_CREATE_ONLINE_LOG_DEST_n,则控制文件或联机重做日志将跨多个其他DB_CREATE_ONLINE_LOG_DEST_n的位置进行多路复用,在每个位置都创建联机重做日志和控制文件;指定至少两个参数可为控制文件和联机重做日志提供更高的容错能力
DB_RECOVERY_FILE_DEST
DB_RECOVERY_FILE_DEST指定快速恢复区的默认位置 Syntax:DB_RECOVERY_FILE_DEST = directory | disk group
Modifiable:ALTER SYSTEM ... SID='*'
Oracle RAC:You must set this parameter for every instance, and multiple instances must have the same value.
快速恢复区包含当前控制文件和在线重做日志的多路副本,以及存档的重做日志、闪回日志和RMAN备份 DB_RECOVERY_FILE_DEST和DB_RECOVERY_FILE_DEST_SIZE必须同时配置
DB_RECOVERY_FILE_DEST_SIZE
指定快速恢复区的大小,可以指向磁盘,也可以指向ASM磁盘组,使用ASM时,只能指定到Diskgroup级别,而不能指定到在下级的目录 Syntax:DB_RECOVERY_FILE_DEST_SIZE = integer [K | M | G]
注意:
- 文件的第0块和操作系统数据块头的空间大小不包含在内
- 该参数并不代表实际占用的空间大小,如果空间被压缩、镜像、RAID,该参数的值意义是不一样的
DB_FLASHBACK_RETENTION_TARGET
Default value:1440 (minutes) 指定数据库可以闪回的时间范围,可以在多大程度上回退数据库取决于Oracle在快速恢复区域中保留了多少闪回数据;只在Flashback Database有用
UNDO_MANAGEMENT
Syntax UNDO_MANAGEMENT = { MANUAL | AUTO }
Default value:AUTO 指定undo表空间管理模式,设置为AUTO时,系统会使用UNDO表空间管理UNDO数据;当设置为MANUAL时,系统会使用回滚段管理UNDO数据
UNDO_RETENTION
Default value:900 UNDO_RETENTION specifies (in seconds) the low threshold value of undo retention. For AUTOEXTEND undo tablespaces, the system retains undo for at least the time specified in this parameter, and automatically tunes the undo retention period to satisfy the undo requirements of the queries. For fixed- size undo tablespaces, the system automatically tunes for the maximum possible undo retention period, based on undo tablespace size and usage history, and ignores UNDO_RETENTION unless retention guarantee is enabled.
The setting of this parameter should account for any flashback requirements of the system. Automatic tuning of undo retention is not supported for LOBs. The RETENTION value for LOB columns is set to the value of the UNDO_RETENTION parameter.
The UNDO_RETENTION parameter can only be honored if the current undo tablespace has enough space. If an active transaction requires undo space and the undo tablespace does not have available space, then the system starts reusing unexpired undo space. This action can potentially cause some queries to fail with a "snapshot too old" message.
The amount of time for which undo is retained for the Oracle Database for the current undo tablespace can be obtained by querying the TUNED_UNDORETENTION column of the V$UNDOSTAT dynamic performance view.
UNDO_RETENTION的设置严格说起来也是与UNDO表空间有关系 该参数用来指定UNDO段中数据保存的最短时间,以秒为单位,是一个动态参数,可以在实例运行时随时修改,默认是900秒 1、UNDO_RETENTION只是指定UNDO段中数据的过期时间,并不是说,UNDO段中的数据一定会在UNDO表空间中保存15分钟,如一个新事务开始的时候,如果此时UNDO表空间已经被写满,则新事务的数据会自动覆盖已提交事务的数据,而不管这些数据是否已过期,因此创建一个自动管理的UNDO表空间时,要注意其空间大小,要尽可能保证UNDO表空间有足够的存储空间 2、并不是说,UNDO_RETENTION中指定的时间一过,已经提交事务中的数据就立刻无法访问,当超出UNDO_RETENTION参数指定的时间后,这部分数据占用的空间将会被标识为可重用,不过只要不被别的事务触发的数据覆盖,它会仍然存在,并可以随时被Flashback特性引用。如果UNDO表空间足够大,UNDO_RETENTION参数的值并没有影响,只要没有事务覆盖UNDO数据,这部分数据就会持续有效 3、只有在一种情况下,UNDO表空间能够确保UNDO中的数据在UNDO_RETENTION指定时间过期前一定有效,就是为UNDO表空间指定RETENTION GUARANTEE,指定之后,不会覆盖UNDO表空间中未过期的UNDO数据 --启用UARANTEE ALTER TABLESPACE UNDOTBS1 RETENTION GUARANTEE; --禁止UARANTEE ALTER TABLESPACE UNDOTBS1 RETENTION NOGUARANTEE;
UNDO_TABLESPACE
Syntax UNDO_TABLESPACE = undoname
Default value:The first available undo tablespace in the database. UNDO_TABLESPACE指定实例启动时要使用的撤消表空间,如果在实例处于manual管理undo表空间模式时指定了此参数,则会发生错误并且启动失败 如果省略UNDO_TABLESPACE参数,则选择数据库中第一个可用的撤消表空间;如果没有可用的撤消表空间,则实例将在没有撤消表空间的情况下启动,在这种情况下,将使用SYSTEM回滚段执行用户事务,正常情况下,应该避免在此模式下运行,在实例运行时,可以将undo表空间替换为另一个undo表空间