log_archive_dest 强制归档试验

本文详细介绍了如何配置数据库的归档模式、设置归档目的地、遇到归档失败问题时的排查步骤以及如何通过Oracle的告警日志进行故障诊断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

将数据库启动到mount模式,设置为归档模式
alter database archivelog;
alter database open;
在mount模式或者open模式下执行以下命令
alter system set log_archive_dest_1='location=/oradata/orabak1' ;

alter system set log_archive_dest_2='location=/oradata/orabak2' ;

alter system set log_archive_dest_3='location=/oradata/orabak3' ;

alter system set log_archive_dest_4='location=/oradata/orabak4' ;

alter system set log_archive_dest_5='service=d11 mandatory' ;

将前4组设成本地,第5组设为远程,并且为mandatory。

 create pfile from spfile;

查看pfile,在$ORACLE_HOME/dbs下。

*.log_archive_dest_1='location=/oradata/orabak'
*.log_archive_dest_2='location=/oradata/orabak2'
*.log_archive_dest_3='location=/oradata/orabak3'
*.log_archive_dest_4='location=/oradata/orabak4'
*.log_archive_dest_5='service=d11 mandatory'
将LOG_ARCHIVE_DEST_5指定为强制归档
然后多执行几次切换日志操作
 alter system switch logfile;
 进行归档操作。

create table t1 as select * from dba_object;
insert into t1 select * from t1;
连续多执行几次,发现insert操作卡住了,
再执行别的ddl操作或者insert,update操作,发现都卡住了,
就是说 oracle夯住了。
只可以执行select操作。

可以看看oracle的alert日志
11G的alert日志位置
alert log  XML 文件位置:
SQL> select value from v$diag_info where name ='Diag Alert';
VALUE
---------------------------------------------------------------
d:/app/administrator/diag/rdbms/mynewccs/mynewccs/alert
Alert log 文本文件位置:
SQL> select value from v$diag_info where name ='Diag Trace';

在alter日志的最后行可以看到
ORA-00312: online log 7 thread 1: '/oradata/ora11g/redo07b.log'
ARC0: LGWR is actively archiving destination LOG_ARCHIVE_DEST_5
ORA-12154: TNS:could not resolve the connect identifier specified
PING[ARC3]: Heartbeat failed to connect to standby 'd11'. Error is 12154.
可以看出LOG_ARCHIVE_DEST_5无法完成归档。

执行 alter system set log_archive_dest_5='';

将log_archive_dest_5置为空

然后发现卡住的操作可以继续啦。


总结:log_archive_dest_n 设置为mandatory 时,如果此目标无法完成归档,则oracle将会夯住。

 


 

<think>首先,用户的问题是:“我想关闭Oracle数据库的归档日志目标 请问如何关闭 Oracle log_archive_dest 参数”。用户想关闭Oracle数据库的归档日志目标,具体是如何关闭log_archive_dest参数。 在系统级指令中,我有一些规则: - 所有行内数学表达式必须使用$...$格式。 - 独立公式必须使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾自然地添加引用标识,如[^1]。 用户问题涉及Oracle数据库管理,所以我需要提供准确、可靠的指导。参考提供的引用: - 引用[1]: 解释了log_archive_dest参数,最多可设置2个归档路径,与db_recover_file_destlog_archive_dest_n冲突。 - 引用[2]: 显示了log_archive_dest参数的当前设置。 - 引用[3]: 展示了如何检查归档日志状态。 用户想关闭归档日志目标,这通常意味着禁用归档模式。关闭归档日志目标可能涉及修改相关参数。 关键点: - 在Oracle中,归档日志目标是通过参数如log_archive_destlog_archive_dest_n等设置的。 - 要关闭归档日志目标,用户可能需要禁用归档模式或清除归档目标设置。 - 常见的步骤是: 1. 检查当前归档模式:使用`ARCHIVE LOG LIST`或查询`v$database`。 2. 如果归档模式启用,则禁用归档模式,但这可能需要重启数据库到mount状态。 3. 修改参数文件中的相关参数。 具体关闭log_archive_dest参数: - 根据引用[1],log_archive_dest参数与log_archive_dest_n冲突,不能同时设置。所以,要关闭它,用户可能需要设置log_archive_dest_n或使用其他方法。 - 关闭归档日志目标通常是通过设置归档目标为空或禁用归档模式。 安全步骤: 1. 备份数据库和参数文件。 2. 连接到数据库。 3. 检查当前归档设置。 4. 修改参数。 5. 重启数据库(如果需要)。 关闭归档模式: - 要完全禁用归档日志,用户需要将数据库置于非归档模式。 - 步骤: - 关闭数据库:`SHUTDOWN IMMEDIATE` - 启动到mount状态:`STARTUP MOUNT` - 更改归档模式:`ALTER DATABASE NOARCHIVELOG;` - 打开数据库:`ALTER DATABASE OPEN;` - 这会将数据库设置为非归档模式,归档日志目标将不再使用。 如果用户只想修改log_archive_dest参数: - 用户可能想清除log_archive_dest的设置。 - 在Oracle中,参数可以通过ALTER SYSTEM或修改init.ora文件来更改。 - 例如,设置log_archive_dest为空:`ALTER SYSTEM SET log_archive_dest=&#39;&#39;;` - 但根据引用[1],log_archive_destlog_archive_dest_n冲突,所以如果使用log_archive_dest_n,用户可能需要先处理那些参数。 最佳实践: - 建议用户使用log_archive_dest_n参数,因为log_archive_dest是旧的。 - 要关闭归档目标,设置log_archive_dest_n为空或删除设置。 回答结构: - 使用中文。 - 结构清晰:逐步解释。 - 生成相关问题。 - 添加引用标识。 步骤: 1. 解释如何关闭归档日志目标。 2. 提供命令示例。 3. 提醒注意事项。 4. 生成相关问题。 引用: - 当引用提供的段落时,添加[^1], [^2], [^3]。 - 例如,提到log_archive_dest时,引用[^1]。 最终回答: - 开头:直接回答问题。 - 主体:步骤。 - 结尾:相关问题。</think>### 如何关闭 Oracle log_archive_dest 参数 要关闭 Oracle 数据库的归档日志目标(即禁用归档模式或清除归档目标设置),需要修改相关参数并调整数据库模式。以下是基于 Oracle 数据库管理的最佳实践逐步说明。在执行前,请确保已备份数据库和参数文件(如 `spfile` 或 `init.ora`),并计划在维护窗口操作,避免数据丢失风险。 #### 步骤 1: 检查当前归档模式 首先,确认数据库是否处于归档模式。连接到数据库(使用 SQL*Plus 或其他工具),执行以下命令: ```sql SQL> archive log list; ``` 如果输出显示 "Archive Mode" 和归档目标(如 `Archive destination +DATADG/arch`),表示归档模式已启用[^3]。例如: ``` Database log mode Archive Mode Automatic archival Enabled Archive destination +DATADG/arch ... ``` 如果目标是 "Archive Mode",则需禁用归档模式。 #### 步骤 2: 禁用归档模式 要关闭归档日志目标,必须将数据库切换到非归档模式(NOARCHIVELOG)。这需要重启数据库: 1. 关闭数据库: ```sql SQL> SHUTDOWN IMMEDIATE; ``` 2. 启动数据库到 MOUNT 状态: ```sql SQL> STARTUP MOUNT; ``` 3. 禁用归档模式: ```sql SQL> ALTER DATABASE NOARCHIVELOG; ``` 4. 打开数据库: ```sql SQL> ALTER DATABASE OPEN; ``` 此操作会禁用所有归档日志目标,包括 `log_archive_dest` 参数[^3]。 #### 步骤 3: 清除或修改 log_archive_dest 参数 禁用归档模式后,归档目标参数将不再生效。但为了彻底清除 `log_archive_dest` 的设置(避免冲突),需修改参数文件: - **使用 `ALTER SYSTEM` 命令(动态修改,如果参数允许)**: ```sql SQL> ALTER SYSTEM SET log_archive_dest = &#39;&#39;; ``` 如果参数是静态的(需重启生效),添加 `SCOPE=SPFILE`: ```sql SQL> ALTER SYSTEM SET log_archive_dest = &#39;&#39; SCOPE=SPFILE; ``` 然后重启数据库: ```sql SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP; ``` - **注意冲突**:`log_archive_dest` 与 `log_archive_dest_n` 和 `db_recover_file_dest` 参数冲突[^1]。如果使用了 `log_archive_dest_n`(如 `log_archive_dest_1`),需优先处理这些参数: - 检查现有设置: ```sql SQL> SHOW PARAMETER log_archive_dest; ``` 输出可能包括多个目标(如 `log_archive_dest_1`)[^2]。 - 清除冲突参数:例如,设置 `log_archive_dest_n` 为空: ```sql SQL> ALTER SYSTEM SET log_archive_dest_1 = &#39;&#39; SCOPE=SPFILE; ``` #### 步骤 4: 验证更改 确认归档模式已关闭且参数已清除: ```sql SQL> archive log list; -- 应显示 "No Archive Mode" SQL> SHOW PARAMETER log_archive_dest; -- 值应为空或未设置 ``` 输出应类似: ``` Database log mode No Archive Mode Automatic archival Disabled ... ``` #### 注意事项 - **性能影响**:关闭归档日志会禁用数据库恢复功能(如 Point-in-Time Recovery),仅适用于开发或测试环境。生产环境不推荐禁用归档。 - **参数冲突**:如果同时设置了 `log_archive_dest` 和 `log_archive_dest_n`,Oracle 会报错。优先使用 `log_archive_dest_n`(更灵活),并移除旧参数[^1]。 - **备份恢复**:禁用归档前,执行全量备份。如果需要重新启用归档,重复步骤 2 但使用 `ALTER DATABASE ARCHIVELOG;`。 - **权限要求**:需 `SYSDBA` 或 `SYSOPER` 权限执行上述命令。 通过以上步骤,您已成功关闭归档日志目标。如果遇到错误(如参数冲突),请检查告警日志(`alert.log`)以获取详细信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值