ORA-600 [kjbrchkpkeywait:timeout]

本文针对Oracle 11.2.0.3版本中出现的ORA-600错误进行详细分析,包括错误代码为kjbrchkpkeywait:timeout的具体表现形式、已知的三个相关Bug以及它们的影响范围。建议遇到此类问题的用户可以参考文中提到的解决方案或进一步向Oracle技术支持寻求帮助。

 

 
 
  Format: ORA-600 [kjbrchkpkeywait:timeout] [a] [b] [c] [d] [e]

 
          

The list below is restricted to show only bugs believed to affect version 11.2.0.3.
Other bugs may affect this version but have not been confirmed as being relevant yet.

There are 3 bugs listed.
NBBugFixedDescription
1440918311.2.0.3.4, 11.2.0.3.BP10, 11.2.0.4, 12.1.0.1ORA-600 [kjblpkeydrmqscchk:pkey] or similar / session hangs on "gc buffer busy acquire"
1418283511.2.0.3.BP14, 11.2.0.4, 12.1.0.1Process fails with ORA-600 [kjbrchkpkeywait:timeout]
1404341711.2.0.3.BP13, 11.2.0.4, 12.1.0.1ORA-600 [kjbrchkpkeywait:timeout] in RAC - superseded
  • '*' indicates that an alert exists for that issue.
  • '+' indicates a particularly notable issue / bug.
  • 'I' indicates an install issue / bug included for completeness.
  • 'P' indicates a port specific bug.
  • "OERI:xxxx" may be used as shorthand for ORA-600 [xxxx].
SUGGESTIONS: If the Known Issues section below does not help in terms of identifying a solution, please submit the trace files and alert.log to Oracle Support Services for further analysis. Known Issues:
Known Bugs
You can restrict the list below to issues likely to affect one of the following versions by clicking the relevant button:

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29225845/viewspace-775304/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29225845/viewspace-775304/

这个错误信息是 Oracle 数据库在启动(`startup`)时出现的典型问题,主要涉及 **初始化参数文件(spfile)无法找到或访问**,尤其是当数据库使用的是 **ASM(Automatic Storage Management)磁盘组** 存储时。 --- ### ❌ 错误分析 ```bash ORA-01078: failure in processing system parameters ORA-01565: error in identifying file '+DATA/orcl/spfileorcl.ora' ORA-17503: ksfdopn:2 Failed to open file +DATA/orcl/spfileorcl.ora ORA-15056: additional error message ORA-17503: ksfdopn:2 Failed to open file +DATA/orcl/spfileorcl.ora ORA-15001: diskgroup "DATA" does not exist or is not mounted ``` #### 逐条解释: - `ORA-01078`: 启动数据库时无法处理系统参数 —— 通常是找不到或读取不了 spfile/pfile。 - `ORA-01565`: 识别指定的参数文件失败。 - `ORA-17503`: 低层 I/O 操作失败,无法打开文件。 - `ORA-15001`: 表示 ASM 磁盘组 `"DATA"` 不存在或者没有被挂载。 👉 核心问题是:**ASM 实例未运行,或者磁盘组 `DATA` 没有被挂载,导致 Oracle 实例无法读取存放在 `+DATA` 中的 spfile。** --- ## ✅ 解决方案 ### 步骤 1:确认当前环境变量和实例状态 确保你连接到了正确的 Oracle 环境。 ```bash export ORACLE_SID=+ASM # 如果使用 ASM,默认 SID 是 +ASM 或 +ASM1(RAC) sqlplus / as sysdba ``` ### 步骤 2:检查 ASM 实例是否启动 ```sql SQL> SELECT instance_name, status FROM v$instance; -- 应该输出类似: -- INSTANCE_NAME STATUS -- ---------------- ------------ -- +ASM STARTED ``` 如果没有启动,请先启动 ASM 实例: ```sql SQL> startup; ``` > ⚠️ 注意:如果 ASM 也无法启动,可能是磁盘权限、udev 规则、asmlib 配置或磁盘路径问题。 --- ### 步骤 3:查看磁盘组状态 ```sql SQL> SELECT name, state, total_mb, free_mb FROM v$asm_diskgroup; -- 输出示例: -- NAME STATE TOTAL_MB FREE_MB -- ------ --------- -------- ------- -- DATA MOUNTED 10240 3000 ``` 如果你看到 `DATA` 的状态不是 `MOUNTED`,说明它没挂载。 --- ### 步骤 4:尝试手动挂载磁盘组 ```sql ALTER DISKGROUP DATA MOUNT; ``` 如果报错,比如: - `ORA-15032: not all alterations performed` - `ORA-15063: ASM discovered an insufficient number of disks` → 表明 ASM 无法识别构成 `DATA` 磁盘组的物理磁盘。 --- ### 🔍 排查磁盘问题 #### 查看 ASM 发现的磁盘: ```sql SELECT path, header_status, mode_status FROM v$asm_disk; ``` 期望结果:`DATA` 对应的磁盘 `HEADER_STATUS = MEMBER`, `MODE_STATUS = ONLINE` 如果 `header_status` 是 `CANDIDATE` 或 `UNKNOWN`,说明这些磁盘未被正确识别。 --- ### 可能原因及修复方法 | 原因 | 解决方式 | |------|---------| | ASM 实例未启动 | 执行 `sqlplus / as sysdba` → `startup` | | 磁盘权限问题(Linux) | 检查 `/dev/sdX` 权限是否属于 `grid:asmadmin` | | udev 规则未设置 | 配置持久化设备名规则(如 `/etc/udev/rules.d/99-oracle-asmdevices.rules`) | | ASMLib 配置丢失(若使用) | 使用 `oracleasm scandisks` 和 `oracleasm listdisks` | | 磁盘路径变更(如 VM 迁移后) | 重新绑定设备或修改 udev 规则 | --- ### ✅ 成功挂载后启动数据库实例 一旦 `DATA` 磁盘组成功挂载,切换回数据库实例: ```bash export ORACLE_SID=orcl sqlplus / as sysdba ``` 然后启动数据库: ```sql SQL> startup; ``` 此时应该可以正常读取 `+DATA/orcl/spfileorcl.ora` 并启动。 --- ### 💡 替代方案:使用 PFILE 启动(临时) 如果暂时无法恢复 SPFILE,可以从 ASM 中创建一个文本型 PFILE: ```sql -- 在 ASM 实例中导出参数 CREATE PFILE='/tmp/initorcl.ora' FROM SPFILE='+DATA/orcl/spfileorcl.ora'; ``` 然后用该 PFILE 启动数据库: ```sql SQL> CREATE SPFILE FROM PFILE='/tmp/initorcl.ora'; SQL> startup; -- 自动使用 SPFILE ``` > 注意:前提是 ASM 能读到原始 spfile。否则只能手动写一个最小 pfile。 --- ### 🛠 示例:最小 PFILE 启动(应急) ```text # /tmp/initorcl.ora orcl.__db_cache_size=100M orcl.__shared_pool_size=80M *.db_name='orcl' *.control_files='+DATA/orcl/controlfile/current.256.123456789' *.instance_type='RDBMS' *.job_queue_processes=10 *.open_cursors=300 *.pga_aggregate_target=100M *.sga_target=300M *.undo_management='AUTO' *.undo_tablespace='UNDOTBS1' ``` 然后: ```sql SQL> create spfile from pfile='/tmp/initorcl.ora'; SQL> startup; ``` --- ## ✅ 总结流程图 ```text 启动数据库失败 ↓ 检查是否能访问 +DATA/orcl/spfileorcl.ora ↓ 否 → 检查 ASM 实例是否运行? ↓ 否 → 启动 ASM 实例 ↓ 是 → 检查磁盘组 DATA 是否存在并已挂载? ↓ 否 → 挂载磁盘组(需解决磁盘识别问题) ↓ 是 → 尝试重新启动 DB 实例 ↓ 成功 or 失败 → 查看 alert.log 进一步诊断 ``` --- ### ✅ 关键命令汇总 ```bash # 设置环境 export ORACLE_SID=+ASM sqlplus / as sysdba # 检查 ASM 实例 SELECT instance_name, status FROM v$instance; # 启动 ASM startup; # 查看磁盘组 SELECT name, state FROM v$asm_diskgroup; # 挂载磁盘组 ALTER DISKGROUP DATA MOUNT; # 查看磁盘状态 SELECT path, header_status, mode_status FROM v$asm_disk; # 切换到数据库实例 export ORACLE_SID=orcl sqlplus / as sysdba startup; ``` --- ### ✅ 查看告警日志定位细节 ```bash cd $ORACLE_BASE/diag/rdbms/orcl/orcl/trace/ tail -f alert_orcl.log ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值