起动crs出现的问题以及ORA-00376错误

本文记录了一次Oracle 11g R2 RAC数据库因/oracle目录满而导致的启动失败问题,详细介绍了排查过程及解决方案,包括清理日志、启动CRS、处理sysaux表空间等问题。

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

今天接到电话,说有一个数据库的启不来了,得知道这个数据库为11gR2 RAC,AIX平台,上面路了3个库。

看了一个是因为/oracle目录满了,100多G居然也用满了,并且是2个实例都满,删日志的时候发现一个叫wbxt 的库trace 目录下的文件特别多,以至于du -sg等了好久都没有反回结果,当用 rm -rf *.trm 的时候提示我什么 arguments too long,后来用了一个 find . -namr "*.tr*" -exec rm -f {} \; 语句,也是每秒10M左右的速度,后来干脆将trace 文件重命名用删除。

清一部分日志后,就可始启动crs,crsctl start crs 无法与crs 通信。

ps -ef | grep d.bin 没有crsd.bin 的进程。

crsctl status res -t -init 中ora.crsd 为offline

crsctl start res ora.crsd -init 启动ora.crsd

crs_start -all 启动了crs

关于以上无法启动crs 的问题可以参考:Top 5 Grid Infrastructure Startup Issues [ID 1368382.1]

无意思中我看到新建立的trace 文件中又生成了好多trc, trm 文件,查看alert 日志:

$ cd /oracle/db/diag/rdbms/w*/w*/trace
$ cat aler*
Thu Apr 25 16:31:37 2013
Errors in file /oracle/db/diag/rdbms/wbxt/wbxt2/trace/wbxt2_smon_6685520.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-00376: file 2 cannot be read at this time
ORA-01110: data file 2: '+DATA/wbxt/datafile/sysaux.2049.780342185'
Thu Apr 25 16:36:38 2013
Errors in file /oracle/db/diag/rdbms/wbxt/wbxt2/trace/wbxt2_smon_6685520.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-00376: file 2 cannot be read at this time
ORA-01110: data file 2: '+DATA/wbxt/datafile/sysaux.2049.780342185'
Thu Apr 25 16:41:40 2013
Errors in file /oracle/db/diag/rdbms/wbxt/wbxt2/trace/wbxt2_smon_6685520.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-00376: file 2 cannot be read at this time
ORA-01110: data file 2: '+DATA/wbxt/datafile/sysaux.2049.780342185'
Thu Apr 25 16:46:41 2013
Errors in file /oracle/db/diag/rdbms/wbxt/wbxt2/trace/wbxt2_smon_6685520.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-00376: file 2 cannot be read at this time
ORA-01110: data file 2: '+DATA/wbxt/datafile/sysaux.2049.780342185'
Thu Apr 25 16:51:42 2013


SQL> select file_name, file_id, status, online_status from dba_data_files

FILE_NAME                                        FILE_ID STATUS             ONLINE_STATUS
--------------------------------------------- ---------- ------------------ --------------
+DATA/wbxt/datafile/users.3864.780342185               4 AVAILABLE          ONLINE
+DATA/wbxt/datafile/undotbs1.2081.780342185            3 AVAILABLE          ONLINE
+DATA/wbxt/datafile/sysaux.2049.780342185              2 AVAILABLE          RECOVER
+DATA/wbxt/datafile/system.924.780342185               1 AVAILABLE          SYSTEM
+DATA/wbxt/datafile/undotbs2.932.780342463             5 AVAILABLE          ONLINE
+DATA/wbxt/datafile/wbgy                               6 AVAILABLE          ONLINE


sysaux文件为recover 状态,尝试回复,发现需要2012/12/23号的归档文件。

SQL> recover datafile 2
ORA-00279: change 41411931 generated at 12/23/2012 08:08:38 needed for thread 2
ORA-00289: suggestion : +DATA
ORA-00280: change 41411931 for thread 2 is in sequence #139

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.


RMAN中的的备份我没有去看,可以回复的可能性不大,于是与那个人沟通,他们也知道这件事,准备重建数据库呢,我问他们是不是存储出过什么问题,得知磁盘坏了一个。

正是因为上面的错误,导致数据库在每隔一段时间就生成一个trc 文件,文件虽小,但数据巨大。

sysaux表空间数据为recover 状态,数据库能正常启停,这是一件很有意思的事件,reover 状态好久也没有得到及时的处理导致了这样一个结果。



Oracle 错误 `ORA-15031` 表示在执行磁盘组操作时,指定的磁盘路径没有匹配到任何可用的 ASM 磁盘。这种情况通常发生在使用 `ALTER DISKGROUP ... ADD DISK` 命令添加磁盘时,ASM 无法识别或找到指定的磁盘设备。 ### 错误原因 1. **磁盘路径不正确**:指定的磁盘路径 `/dev/oracleasm/disks/CRS_DISK05` 或 `/dev/asmdisk/ocr01` 可能不存在或拼写错误。 2. **ASM 磁盘未被正确发现**:ASM 实例的 `asm_diskstring` 参数没有正确配置,导致 ASM 无法扫描和发现指定路径下的磁盘设备。 3. **udev 规则配置问题**:在 Linux 系统中,如果 `udev` 规则没有正确设置,可能导致磁盘设备名称不一致或无法被 ASM 正确识别。 4. **磁盘未格式化为 ASM 兼容格式**:磁盘可能没有通过 `oracleasm` 或 `ASMLib` 工具进行初始化,导致 ASM 无法将其识别为可用磁盘。 5. **权限问题**:执行操作的用户可能没有访问该磁盘设备的权限。 ### 解决方法 1. **验证磁盘路径是否存在**: 使用 `ls` 命令检查指定的磁盘路径是否存在: ```bash ls -l /dev/oracleasm/disks/CRS_DISK05 ``` 如果路径不存在,说明磁盘未正确配置或命名错误。 2. **检查 `asm_diskstring` 参数**: 登录到 ASM 实例并查询当前的 `asm_diskstring` 设置: ```sql show parameter asm_diskstring; ``` 如果磁盘路径不在 `asm_diskstring` 的搜索范围内,可以动态修改该参数以包含正确的路径: ```sql alter system set asm_diskstring = '/dev/oracleasm/disks/*'; ``` 3. **确认磁盘已被 ASM 发现**: 查询 `v$asm_disk` 视图以确认 ASM 是否已经发现了目标磁盘: ```sql select path from v$asm_disk; ``` 如果未列出目标磁盘,则需要检查 `asm_diskstring` 配置,并确保磁盘已正确初始化。 4. **检查 udev 规则**: 确保 `udev` 规则文件(如 `/etc/udev/rules.d/99-oracle-asmdevices.rules`)正确配置了磁盘绑定规则,确保磁盘设备名称保持一致。 5. **使用 `oracleasm` 初始化磁盘**: 如果磁盘尚未初始化,可以使用以下命令进行初始化: ```bash oracleasm createdisk CRS_DISK05 /dev/sdX ``` 替换 `/dev/sdX` 为实际的物理磁盘设备名。 6. **检查磁盘权限**: 确保 `grid` 用户和 `asmadmin` 组对磁盘具有读写权限。可以通过以下命令检查: ```bash ls -l /dev/oracleasm/disks/ ``` 如果权限不足,可以使用 `chown` 和 `chmod` 修改权限。 7. **重启 ASM 实例**: 在完成上述配置更改后,建议重启 ASM 实例以确保所有更改生效: ```bash srvctl stop asm srvctl start asm ``` ### 示例代码:修改 `asm_diskstring` 并添加磁盘 ```sql -- 查看当前的 asm_diskstring 设置 show parameter asm_diskstring; -- 动态修改 asm_diskstring 以包含新的磁盘路径 alter system set asm_diskstring='/dev/oracleasm/disks/*' scope=both; -- 添加磁盘到磁盘组 DATA alter diskgroup DATA add disk '/dev/oracleasm/disks/CRS_DISK05' rebalance power 5; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值