rac的一次问题 ORA-01565: error in identifying file '+DATA/bol/spfilebol.ora'

本文记录了在CentOS 6.8环境下,解决Oracle RAC集群中一个节点突然无法正常启动的问题。通过检查权限设置、修改文件权限、调整oracle二进制文件的属性,并最终成功启动了之前存在问题的RAC节点。

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

昨天安装的测试环境的rac--2节点

CentOS release 6.8 (Final)

SQL*Plus: Release 11.2.0.4.0 Production

今天测试突然出现问题

在rac01节点上面操作报错

Connected.
SQL> select * from v$instance;
select * from v$instance
*
ERROR at line 1:
ORA-01012: not logged on
Process ID: 0
Session ID: 0 Serial number: 0

这个时候创建表空间,用户均报错

用toad工具连接vip 209,进行创建表空间,用户均可以成功,于是怀疑rac01节点有问题

果然

执行就报错

检查节点1的权限和路径

[root@rac11 ~]# chown -R grid:oinstall /u01/app/11.2.0/grid/
[root@rac11 ~]# ll /u01/app/11.2.0/grid/

这时候asmcmd可以执行

然后登陆sqlplus

[oracle@rac11 ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Wed Jun 5 15:48:44 2019

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected.
SQL> select * from v$log;
select * from v$log
*
ERROR at line 1:
ORA-01012: not logged on
Process ID: 0
Session ID: 0 Serial number: 0

查看错误日志

[oracle@rac11 trace]$ tail -n 100 /u01/app/oracle/diag/rdbms/bol/bol1/trace/alert_bol1.log
Fatal NI connect error 12547, connecting to:
 (DESCRIPTION=(ADDRESS=(PROTOCOL=beq)(PROGRAM=/u01/app/11.2.0/grid/bin/oracle)(ARGV0=oracle+ASM1_o000_bol1)(ENVS='ORACLE_HOME=/u01/app/11.2.0/grid,ORACLE_SID=+ASM1')(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))'))(enable=setuser)(CONNECT_DATA=(CID=(PROGRAM=oracle@rac11)(HOST=rac11)(USER=oracle))))

  VERSION INFORMATION:
    TNS for Linux: Version 11.2.0.4.0 - Production
    Oracle Bequeath NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production
  Time: 05-JUN-2019 15:51:55
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12547
    
TNS-12547: TNS:lost contact
    ns secondary err code: 12560
    nt main err code: 517
    
TNS-00517: Lost contact
    nt secondary err code: 32
    nt OS err code: 0
ERROR: Failed to connect with connect string: (DESCRIPTION=(ADDRESS=(PROTOCOL=beq)(PROGRAM=/u01/app/11.2.0/grid/bin/oracle)(ARGV0=oracle+ASM1_o000_bol1)(ENVS='ORACLE_HOME=/u01/app/11.2.0/grid,ORACLE_SID=+ASM1')(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))'))(enable=setuser))
WARNING: ASM communication error: op 18 state 0x40 (12547)
ERROR: slave communication error with ASM
NOTE: Deferred communication with ASM instance
Errors in file /u01/app/oracle/diag/rdbms/bol/bol1/trace/bol1_pmon_840.trc:
ORA-12547: TNS:lost contact
[oracle@rac11 trace]$ more /u01/app/oracle/diag/rdbms/bol/bol1/trace/bol1_pmon_840.trc
WARNING: ASM communication error: op 18 state 0x40 (1034)
ERROR: slave communication error with ASM
NOTE: Deferred communication with ASM instance
ORA-01034: ORACLE not available
ORA-27123: unable to attach to shared memory segment
Linux-x86_64 Error: 13: Permission denied
Additional information: 26
Additional information: 360454
WARNING: ASM communication error: op 18 state 0x40 (1034)
ERROR: slave communication error with ASM
NOTE: Deferred communication with ASM instance
ORA-01034: ORACLE not available
ORA-27123: unable to attach to shared memory segment
Linux-x86_64 Error: 13: Permission denied
Additional information: 26
Additional information: 360454

查看db状态

[grid@rac11 ~]$ srvctl status asm -a
ASM is running on rac11,rac12
ASM is enabled.
[grid@rac11 ~]$ srvctl status database -d bol
Instance bol1 is not running on node rac11
Instance bol2 is running on node rac12

节点1没有启动

尝试启动报错

[grid@rac11 ~]$ srvctl start instance -d bol -i bol1
PRCR-1013 : Failed to start resource ora.bol.db
PRCR-1064 : Failed to start resource ora.bol.db on node rac11
CRS-5017: The resource action "ora.bol.db start" encountered the following error: 
ORA-01078: failure in processing system parameters
ORA-01565: error in identifying file '+DATA/bol/spfilebol.ora'
ORA-17503: ksfdopn:2 Failed to open file +DATA/bol/spfilebol.ora
ORA-12547: TNS:lost contact
. For details refer to "(:CLSN00107:)" in "/u01/app/11.2.0/grid/log/rac11/agent/crsd/oraagent_oracle//oraagent_oracle.log".

CRS-2674: Start of 'ora.bol.db' on 'rac11' failed

没遇到这样的问题,一阵baidu,google骚操作,尝试执行

[grid@rac11 ~]$ ls -l /u01/app/11.2.0/grid/bin/oracle
-rwxr-x--x 1 grid oinstall 209914479 Jun  4 15:32 /u01/app/11.2.0/grid/bin/oracle
[grid@rac11 ~]$ chmod 6751 /u01/app/11.2.0/grid/bin/oracle
[grid@rac11 ~]$ ls -l /u01/app/11.2.0/grid/bin/oracle
-rwsr-s--x 1 grid oinstall 209914479 Jun  4 15:32 /u01/app/11.2.0/grid/bin/oracle
[oracle@rac11 ~]$ ls -l /u01/app/oracle/product/11.2.0/db_1/bin/oracle
-rwxr-s--x 1 oracle asmadmin 239626641 Jun  4 16:00 /u01/app/oracle/product/11.2.0/db_1/bin/oracle
---rac02
[grid@rac12 ~]$ ls -l /u01/app/11.2.0/grid/bin/oracle
-rwsr-s--x 1 grid oinstall 209914479 Jun  4 15:33 /u01/app/11.2.0/grid/bin/oracle
[oracle@rac12 ~]$ ls -l /u01/app/oracle/product/11.2.0/db_1/bin/oracle
-rwsr-s--x 1 oracle asmadmin 239626641 Jun  4 16:03 /u01/app/oracle/product/11.2.0/db_1/bin/oracle
--rac01
[grid@rac11 ~]$ cd $ORACLE_HOME/bin/ 
[grid@rac11 bin]$ ll setasmgid
-rwxr-x--x 1 grid oinstall 2279833 Jun  4 15:32 setasmgid
[grid@rac11 bin]$ set setasmgid setasmgidwrap setfattr setkeycodes setmetamode setsid setup setarch setasmgid0 setfacl setfont setleds setserial setterm setxkbmap
[grid@rac11 bin]$ setasmgidwrap o=/u01/app/oracle/product/11.2.0/db_1/bin/oracle
[grid@rac11 bin]$ ls -l /u01/app/oracle/product/11.2.0/db_1/bin/oracle 
-rwxr-s--x 1 oracle asmadmin 239626641 Jun  4 16:00 /u01/app/oracle/product/11.2.0/db_1/bin/oracle
[启动实例bol1][grid@rac11 bin]$ srvctl status database -d bol
Instance bol1 is running on node rac11
Instance bol2 is running on node rac12

节点01可以启动

--很费劲为什么会出现这样的问题,看了一下history,01,02节点的命令都是一样的,执行的时候也没出什么错误

~~~~~

转载于:https://www.cnblogs.com/yhq1314/p/10980679.html

<think>嗯,用户遇到了Oracle11gRAC环境中的ORA-01565错误,这个错误通常和spfile文件访问有关。从引用内容看,用户已经收集了一些相关案例,包括权限问题、ASM磁盘组挂载问题等。用户的核心诉求是定位文件识别问题并找到解决方案。用户提供的引用信息很有价值:[^1]和[^2]都提到spfile路径识别失败,[^3]则指出可能是二进制文件权限问题。特别注意到引用[3]提到"bin/oracle权限引起",这提示我需要检查GRID和RDBMS的安装权限。考虑到RAC环境的复杂性,需要从多个维度排查:首先确认ASM磁盘组状态,因为+DATA开头的路径属于ASM存储;其次检查集群资源注册情况,spfile位置应该与srvctl配置一致;最后是操作系统层面的权限检查,包括文件权限和SELinux等安全设置。用户没有提到具体操作步骤,所以我会给出完整的诊断流程。特别要注意的是RAC环境下需要同时检查所有节点,因为某个节点的配置错误就可能导致整个集群启动失败。ORA-12547报错通常意味着进程通信中断,往往伴随权限问题。解决方案部分将按优先级排序:最简单的权限修复放在前面,复杂的存储恢复放在后面。引用[3]提供的chmod6751方案需要谨慎操作,必须确认两个属主是否正确。另外补充了环境变量和参数文件备份的建议,这是很多文档容易忽略的实用技巧。</think>以下是针对 Oracle 11g RAC 环境中 ORA-01565 错误的完整解决方案,结合错误本质和引用案例逐步排查: --- ### **错误原因分析** ORA-01565 表明数据库无法识别或访问 `spfile` 文件,通常由以下原因引起: 1. **文件路径错误**:`spfile` 路径在参数文件或 ASM 中配置不正确 2. **权限问题**:Oracle 用户无权访问 ASM 磁盘组或 OS 文件(如引用[2][3]所述) 3. **ASM 状态异常**:磁盘组未挂载或存储路径失效(引用[1][2]中的 `ORA-17503`) 4. **集群注册不一致**:RAC 资源未正确注册 `spfile` 位置 --- ### **逐步解决方案** #### **步骤 1:检查 ASM 磁盘组状态** ```sql -- 以 grid 用户登录 ASM 实例 sqlplus / as sysasm SELECT name, state FROM v$asm_diskgroup; ``` - **预期结果**:`+DATA` 状态应为 `MOUNTED` - **异常处理**: - 若状态为 `DISMOUNTED`,挂载磁盘组: ```sql ALTER DISKGROUP DATA MOUNT; ``` - 若报错 `ORA-15032`,检查 ASM 磁盘权限(参考引用[3]) #### **步骤 2:验证 spfile 物理存在** ```bash # 确认 ASM 中文件是否存在 asmcmd ls "+DATA/rac11g/spfilerac11g.ora" ``` - **若文件不存在**: - 从备份恢复 `spfile`,或使用 `pfile` 启动: ```bash sqlplus / as sysdba STARTUP PFILE='/u01/app/oracle/product/11.2.0/dbhome_1/dbs/init<sid>.ora'; ``` #### **步骤 3:检查集群资源注册** ```bash # 以 root 用户执行 crsctl stat res -t -w "TYPE = ora.database.type" # 查看数据库资源配置 srvctl config database -d <db_name> # 检查 spfile 路径配置 ``` - **修正错误路径**(如引用[2]案例): ```bash srvctl modify database -d <db_name> -p '+DATA/rac11g/spfilerac11g.ora' ``` #### **步骤 4:修复权限问题(关键步骤)** 1. **检查文件权限**: ```bash ls -l $ORACLE_HOME/bin/oracle # 确认权限为 -rwsr-s--x (6751) ``` 2. **按引用[3]修复权限**: ```bash # 以 root 用户执行 chown grid:oinstall $ORACLE_HOME/bin/oracle chmod 6751 $ORACLE_HOME/bin/oracle ``` 3. **检查 ASM 文件权限**: ```bash asmcmd ls -l "+DATA/rac11g/spfilerac11g.ora" ``` - 确保权限为 `-rw-r-----` 且属主为 `oracle:dba` #### **步骤 5:重启集群服务** ```bash # 以 root 用户执行 crsctl stop cluster -all # 停止整个集群 crsctl start cluster -all # 重新启动集群 srvctl start instance -d <db_name> -i <instance_name> # 启动数据库实例 ``` --- ### **预防措施** 1. **定期验证配置**: ```bash srvctl config database -d <db_name> > /backup/db_config_$(date +%F).txt ``` 2. **备份关键文件**: ```bash asmcmd cp '+DATA/rac11g/spfilerac11g.ora' '/backup/spfile_$(date +%F).ora' ``` 3. **使用 RMAN 自动备份 spfile**: ```sql CONFIGURE CONTROLFILE AUTOBACKUP ON; ``` > **重要提示**:操作前备份 ASM 和数据库文件!若问题仍存在,检查 `alert_<sid>.log` 和 `crsd.log` 中的 ORA-12547 等关联错误(如引用[2][3])。 --- ### 相关问题 1. **如何诊断 Oracle RAC 中的 ORA-17503 存储访问错误?** 2. **Oracle 11g RAC 环境下如何安全迁移 spfile 到新 ASM 磁盘组?** 3. **集群资源管理器(CRS)注册信息不一致会导致哪些典型故障?** [^1]: ORA-01565 错误案例分析与 ASM 文件访问失败 [^2]: RAC 环境权限变更引发的启动故障 [^3]: 二进制文件权限修复解决 ORA-12547
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值