指定存档路径
在归档重做日志之前,必须确定要归档的目标,并熟悉各种目标状态。 “查看有关存档重做日志的信息”中列出的动态性能(V $)视图提供了所有必需的存档信息。
设置存档目标的初始化参数
可以选择将重做日志存档到单个目标或多个目标。目标可以是本地文件系统,也可以是Oracle自动存储管理(Oracle ASM)磁盘组或远程(在备用数据库上)。归档到多个目标时,会将每个已填充的重做日志文件的副本写入每个目标。这些冗余副本有助于确保在其中一个目标发生故障时,归档日志始终可用。
要仅归档到单个目标,请使用LOG_ARCHIVE_DEST初始化参数指定该目标。要归档到多个目标,可以选择使用LOG_ARCHIVE_DEST_n初始化参数归档到两个或多个位置,或使用LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST初始化参数仅归档到主目标和辅助目标。
对于本地目标,除了本地文件系统或Oracle ASM磁盘组之外,您还可以归档到快速恢复区。数据库使用快速恢复区来存储和自动管理与备份和恢复相关的各种文件的磁盘空间。有关快速恢复区的详细信息,请参见“Oracle数据库备份和恢复用户指南”。
通常,您在数据库规划期间确定存档日志目标,并在数据库安装期间设置存档目标的初始化参数。但是,可以使用ALTER SYSTEM命令在数据库运行后动态添加或更改归档目标。您所做的任何目标更改将在下一个日志切换(自动或手动)时生效。
下表总结了归档目标替代方案,这些方案将在后续章节中进一步介绍。
Method | Initialization Parameter | Host | Example |
1 |
where: n是1到31之间的整数。归档目标1到10可用于本地或远程位置。归档目标11到31仅适用于远程位置。 |
Local or remote | LOG_ARCHIVE_DEST_1 = 'LOCATION=/disk1/arc'
|
2 | LOG_ARCHIVE_DEST and
|
Local only | LOG_ARCHIVE_DEST = '/disk1/arc'
|
方法1:使用LOG_ARCHIVE_DEST_n参数
使用LOG_ARCHIVE_DEST_n参数(其中n是1到31之间的整数)为归档日志指定一个到31个不同的目标。每个数字后缀参数唯一地标识单个目的地。
可以使用下表中说明的关键字指定LOG_ARCHIVE_DEST_n的位置:
Keyword | Indicates | Example |
LOCATION | 本地文件系统位置或Oracle ASM磁盘组 | LOG_ARCHIVE_DEST_ n = 'LOCATION=/disk1/arc'
|
LOCATION |
快速恢复区
|
LOG_ARCHIVE_DEST_ n = 'LOCATION=USE_DB_RECOVERY_FILE_DEST' |
SERVICE | 通过Oracle Net服务名远程存档 | LOG_ARCHIVE_DEST_ n = 'SERVICE=standby1' |
如果您使用LOCATION关键字,请指定以下之一:
- 操作系统的本地文件系统中的有效路径名
- Oracle ASM磁盘组
- 关键字USE_DB_RECOVERY_FILE_DEST表示快速恢复区
如果指定SERVICE,请提供Oracle Net可以解析为备用数据库的连接描述符的网络服务名称。连接描述符包含连接到远程数据库所需的信息。
执行以下步骤,使用LOG_ARCHIVE_DEST_n初始化参数设置归档重做日志的目标:
- 设置LOG_ARCHIVE_DEST_n初始化参数以指定一个到31个归档位置。例如,输入:
LOG_ARCHIVE_DEST_1 = 'LOCATION = /disk1/archive' LOG_ARCHIVE_DEST_2 = 'LOCATION = /disk2/archive' LOG_ARCHIVE_DEST_3 = 'LOCATION = +RECOVERY/orcl/arc_3'
如果要归档到备用数据库,则使用SERVICE关键字指定有效的网络服务名称。例如,输入:
LOG_ARCHIVE_DEST_4 = 'SERVICE = standby1'
- (可选)设置LOG_ARCHIVE_FORMAT初始化参数,使用%t将线程号作为文件名的一部分包含,%s包含日志序列号,%r包含resetlogs ID(以ub4表示的时间戳值)。使用大写字母(%T,%S和%R)以零填充左侧的文件名。
如果COMPATIBLE初始化参数设置为10.0.0或更高,则在包含LOG_ARCHIVE_FORMAT参数时,数据库需要指定resetlogs ID(%r)。此参数的默认值取决于操作系统。 使用RESETLOGS选项打开数据库时,数据库的变化会发生变化。指定%r会导致数据库捕获归档重做日志文件名中的resetlogs ID。有关此恢复方法的详细信息,请参阅“Oracle数据库备份和恢复用户指南”。
以下示例显示了LOG_ARCHIVE_FORMAT的设置:
LOG_ARCHIVE_FORMAT = arch_%t_%s_%r.arc
此设置将为线程1生成如下的存档日志;日志序列号100,101和102; resetlogs ID 509210197.相同的resetlogs ID表示这些文件都来自同一个数据库化身:
/disk1/archive/arch_1_100_509210197.arc, /disk1/archive/arch_1_101_509210197.arc, /disk1/archive/arch_1_102_509210197.arc /disk2/archive/arch_1_100_509210197.arc, /disk2/archive/arch_1_101_509210197.arc, /disk2/archive/arch_1_102_509210197.arc /disk3/archive/arch_1_100_509210197.arc, /disk3/archive/arch_1_101_509210197.arc, /disk3/archive/arch_1_102_509210197.arc
方法2:使用LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST
要指定最多两个位置,请使用LOG_ARCHIVE_DEST参数指定主存档目标,使用LOG_ARCHIVE_DUPLEX_DEST指定可选的辅助存档目标。所有地点都必须是当地的。只要数据库归档重做日志,它就会将其归档到由任一组参数指定的每个目标。
使用方法2执行以下步骤:
- 指定LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST参数的目标(还可以使用ALTER SYSTEM语句动态指定LOG_ARCHIVE_DUPLEX_DEST)。例如,输入:
LOG_ARCHIVE_DEST = '/disk1/archive' LOG_ARCHIVE_DUPLEX_DEST = '/disk2/archive'
- 按方法1的步骤2中所述设置LOG_ARCHIVE_FORMAT初始化参数。
如果配置快速恢复区(通过设置DB_RECOVERY_FILE_DEST和DB_RECOVERY_FILE_DEST_SIZE参数)并且未指定任何本地归档目标,则数据库会自动选择快速恢复区作为本地归档目标,并将LOG_ARCHIVE_DEST_1设置为USE_DB_RECOVERY_FILE_DEST。
必须确保存档日志目标始终有足够的磁盘空间。如果数据库在尝试归档日志文件时遇到磁盘已满错误,则会发生致命错误并且数据库停止响应。您可以在警报日志中查看磁盘已满消息。
- 您必须确保存档日志目标始终有足够的磁盘空间。如果数据库在尝试归档日志文件时遇到磁盘已满错误,则会发生致命错误并且数据库停止响应。您可以在警报日志中查看磁盘已满消息。
- 有关使用LOG_ARCHIVE_DEST_n初始化参数指定备用目标的信息,请参阅Oracle Data Guard概念和管理。可以使用此初始化参数指定的其他关键字未在本书中讨论。
- “Oracle数据库网络服务管理员指南”,用于讨论网络服务名称和连接描述符。
- 有关快速恢复区的信息,请参见“Oracle数据库备份和恢复用户指南”
了解存档目标状态
每个归档目标都具有以下可变特征,用于确定其状态:
- Valid/Invalid:指示磁盘位置或服务名称信息是否已指定且有效
- Enabled/Disabled:表示位置的可用性状态以及数据库是否可以使用目标
- Active/Inactive:表示访问目的地是否有问题
这些特征的几种组合是可能的。要获取有关实例的每个目标的当前状态和其他信息,请查询V$ARCHIVE_DEST视图。
LOG_ARCHIVE_DEST_STATE_n(其中n是1到31之间的整数)初始化参数允许您控制指定目标的可用性状态(n)。
- ENABLE表示数据库可以使用目标
- DEFER表示该位置暂时被禁用
- ALTERNATE表示目的地是替代。备用目的地的可用性状态是DEFER。如果其父目标失败,则备用项的可用性状态将变为ENABLE。无法为目标LOG_ARCHIVE_DEST_11至LOG_ARCHIVE_DEST_31指定ALTERNATE。
指定备用目标
要仅在另一个目标发生故障时指定某个位置是归档目标,可以将其作为备用目标。本地和远程目的地都可以是替代目的地。以下示例使LOG_ARCHIVE_DEST_4成为LOG_ARCHIVE_DEST_3的替代:
ALTER SYSTEM SET LOG_ARCHIVE_DEST_4 = 'LOCATION=/disk4/arch'; ALTER SYSTEM SET LOG_ARCHIVE_DEST_3 = 'LOCATION=/disk3/arch MAX_FAILURE=1 ALTERNATE=LOG_ARCHIVE_DEST_4'; ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_4=ALTERNATE; SQL> SELECT dest_name, status, destination FROM v$archive_dest; DEST_NAME STATUS DESTINATION ----------------------- --------- ---------------------------------------------- LOG_ARCHIVE_DEST_1 VALID /disk1/arch LOG_ARCHIVE_DEST_2 VALID /disk2/arch LOG_ARCHIVE_DEST_3 VALID /disk3/arch LOG_ARCHIVE_DEST_4 ALTERNATE /disk4/arch
参考资料
https://docs.oracle.com/cd/E11882_01/server.112/e25494/archredo.htm#ADMIN11338