1 备库启动到nomount报错
a 报错
在启动备库到nomout时报网卡绑定失败,报下面的错误
ORA-27504: IPC error creating OSD context
ORA-27300: OS system dependent operation:bind_fail failed with status: 99
ORA-27301: OS failure message: Cannot assign requested address
ORA-27302: failure occurred at: skgxpvifconf
ORA-27303: additional information: requested interface XXX.XXX.XXX.XX failed bind. Check output from ifconfig command
报错的接口是Exadata一体机管理接口,这个问题以前倒是没见过,请DeepSeek做一下头脑风暴,DeepSeek的回答如下
b DeepSeek的分析
ORA-27504: IPC Error 可能原因清单
网络接口未启用或配置错误
IP 地址冲突或子网掩码不匹配
/etc/hosts 中私有 IP 或主机名解析错误
集群网络接口未在 oifcfg 中正确定义
防火墙/iptables 拦截集群通信
SELinux/AppArmor 限制网络绑定操作
MTU 大小不一致(私有网络未启用 Jumbo Frames)
UDP/TCP 端口范围被占用或冲突
多播/广播配置失败
网络驱动或固件版本不兼容
内核参数(rmem_default/wmem_default)不足
NIC 硬件故障或电缆/交换机问题
Grid Infrastructure 配置错误(如 cluster_interconnect 类型未指定)
节点间时间不同步(NTP 问题)
/dev/shm 或共享内存配置问题
资源限制(ulimit)导致无法分配地址
IP 地址被其他服务占用(如 VIP 冲突)
VLAN 配置错误导致网络隔离
提示:按优先级从网络配置开始排查。
c 解决办法
这里的数据库的Oracle 的一体机,网络硬件和配置应该不会有问题,数据库实例是自建的,检查数据库参数配置文件,没有指定cluster_interconnect参数,查一下Oracle官方指南,cluster_interconnect参数的解释如下
Use this parameter to override the default interconnect configured for the database traffic, which is stored in the cluster registry.
使用这个参数覆盖集群OCR中存储的缺省的数据库私网连接,这个参数没有缺省值。这个参数设置的值会覆盖下面两项
oifcfg配置的网络接口
ORACLE选择的缺省的私网连接
这里绑定失败的接口是一体机的管理接口,这个接口是用于一体机管理的,不应该用于RAC的私网或公网连接,不知为何,ORACLE数据库启动时会监测这个接口,设置cluster_interconnect参数可以从私网中排除此接口,编辑参数文件,加入类似下面的行(每个实例一行)
db1.cluster_interconnects="192.0.2.111"
使用编辑后的参数文件后,成功启动实例到nomount状态
3 登陆备库失败
a 报错
实例启动后,登陆备库时发生ORA-01017 错误:无效的用户名/密码;登录被拒绝,使用DeepSeek做一下头脑风暴,DeepSeek列出的原因如下
b DeepSeek的分析
ORA-01017 错误原因清单
用户名或密码输入错误(大小写敏感)
用户未在目标数据库中存在
用户被锁定(ACCOUNT LOCK)
密码过期(PASSWORD EXPIRED)
数据库区分大小写密码(SEC_CASE_SENSITIVE_LOGON=true)
TNS配置错误(错误的服务名/SID)
密码文件缺失或损坏(orapw 文件问题)
用户未授予 SYSDBA/SYSOPER 权限
监听器未正确注册数据库服务
客户端与数据库字符集不匹配
密码包含特殊字符未转义(如 @、$)
数据库未启用远程登录(REMOTE_LOGIN_PASSWORDFILE=NONE)
操作系统认证干扰(/ AS SYSDBA 冲突)
多租户环境未指定 PDB(连接至 CDB$ROOT)
防火墙/网络代理篡改认证信息
sqlnet.ora 配置限制(如 SQLNET.ALLOWED_LOGON_VERSION 不兼容)
客户端版本与数据库不兼容(低版本客户端连接高版本数据库)
Oracle 密码策略限制(如密码复杂性规则)
代理用户配置错误(CONNECT THROUGH 权限问题)
数据库资源限制(PROFILE 中会话数超限)
提示:优先检查用户名/密码准确性、用户状态及 TNS 配置
c 问题的解决
根据DeepSeek的提示,依次检查用户名和密码,用户的状态,最后在TNS的配置里发现里面配置的服务名和监听状态里显示的服务名大小写不同,更改TNS的服务名后登陆备库成功。
3 文件路径转换导致数据文件复制失败
a 数据文件未使用OMF导致的复制失败
启动数据库复制后不到一小时,开始报下面的错误
input datafile file number=00103 name=+******/******/datafile/tbs_***_*****.dbf
RMAN-03009:failure of backup command on prmy3 channel at 05/08/2025 15:55:14
ORA-17628:0racle error 19505 returned by remote Oracle server.
Continuing other iob steps,job failed will not be re-run
报错中有job failed will not be re-run,排除这个问题后需要重新启动复制,另外错误信息中更有远端oracle数据库返回ORA-17628错误,检查备库告警日志,发现以下信息
Thu May 08 15:55:19 2025
Errors in file /u01/app/oracle/diag/rdbms/******/******/trace/******ora377654.trc:
ORA-19505: failed to identify file "+DATAc1/dbdg/datafile/tbs***_****.dbf"
0RA-17502:ksfdcre:4 Failed to create file +DATAc1/dbdg/datafile/***_****.dbf
ORA-15173:entry"dbdg''does not exist in directory
报的错误是目录dbdg不存在,根据报错的文件的后缀来看,复制报错的数据文件没有使用OMF特性,都是手动指定的数据文件路径及名称,在备库上DATAc1磁盘组上创建dbdg/datafile目录后停止当前复制,删除已复制数据文件后重新启动复制,上述错误不再出现。
b 路径转换导致的复制失败
重启复制后约持续了两个小时,复制又报错了,报错的信息和以前的类似
input datafile file number=00398 name=+DBDG1/******/datafile/tbs*****.1138178323
RMAN-03009: failure of backup command on prmy1 channel at 05/09/2025 00:03:31
ORA-17628:0racle error 19505 returned by remote Oracle serverontinuing other job steps,job failed will not be re-run
从后缀名来看,这次报错的数据文件是使用OMF方式创建的,检查备库的告警日志,发现以下信息
May 09 02:53:08 2025
Errors in file /u01/app/oracle/diag/rdbms/******/******/trace/******ora_174935.trc:
ORA-19505: failed to identify file "+DATADG11"
ORA-17502: ksfdcre:4 Failed to create file +dataDG11
ORA-15001:diskgroup "DATADG11" does not exist or is not mounted
ORA-15018: diskgroup cannot be created
ORA-15001: diskgroup "DATADG11" does not exist or is not mounted
备库上只有DATADG1磁盘组,检查备库的文件转换设置
db file name convert='+DBDG','+DATADG1','+DBDG1','+DATADG1','+DBDG2','+DATADG1'
源库上有DBDG,DBDG1,DBDG2三个磁盘组,上面这个转换的目的是将这个三个磁盘组都转换为DATADG1,上面这个转换的问题是后面的两个匹配规则都用不上,DBDG1,DBDG2匹配的还是第一条规则’+DBDG’,因此备库上就出现了DATADG11不能mount的错误,解决这个问题的办法也比较简单,在每个磁盘组后面加上/即可,上面的参数写成如下的形式
db file name convert='+DBDG/','+DATADG1/','+DBDG1/','+DATADG1/','+DBDG2/','+DATADG1/'
按照上面说的调整备库参数文件后,重新启动复制后不再报错。
4 小结
a DeepSeek
DeepSeek在分析问题中的用处还是比较大的,尤其是遇到以前没见过的问题,用来进行头脑风暴还是比较不错的。
b 数据库管理
复制过程中出现的路径转换问题主要的原因是数据库管理的不规范,从磁盘组的命名到数据库文件的添加没有统一的规范。
|