Oracle DBCA 建库遇 ORA-21561: OID generation failed 错误解决办法

今晚使用 DBCA 建库的时候,进入如下界面后,把机器开着就去洗澡去了。




结果洗完澡回来,发现进度条还是 2%,感觉不对劲,于是就进安装界面显示的安装日志看看,发现数据库报:

ORA-21561: OID generation failed


[oracle@prod dss]$ pwd
/u01/app/oracle/cfgtoollogs/dbca/dss
[oracle@prod dss]$ tail -f trace.log
[Thread-51] [ 2013-03-01 23:00:16.306 CST ] [SQLPlusEngine.getCmmdParams:222]  m_home 11.2.0.3.0
[Thread-51] [ 2013-03-01 23:00:16.306 CST ] [SQLPlusEngine.getCmmdParams:223]  version > 112 true
[Thread-51] [ 2013-03-01 23:00:16.307 CST ] [SQLEngine.getEnvParams:565]  NLS_LANG: AMERICAN_AMERICA.AL32UTF8
[Thread-51] [ 2013-03-01 23:00:16.308 CST ] [SQLEngine.initialize:325]  Execing SQLPLUS/SVRMGR process...
[Thread-51] [ 2013-03-01 23:00:16.360 CST ] [SQLEngine.initialize:362]  m_bReaderStarted: false
[Thread-51] [ 2013-03-01 23:00:16.374 CST ] [SQLEngine.initialize:366]  Starting Reader Thread... 
[Thread-51] [ 2013-03-01 23:00:16.441 CST ] [SQLEngine.initialize:415]  Waiting for m_bReaderStarted to be true 
[Thread-54] [ 2013-03-01 23:00:16.678 CST ] [BasicStep.handleNonIgnorableError:430]  oracle.sysman.assistants.util.UIMessageHandler@10cc730:messageHandler
[Thread-54] [ 2013-03-01 23:00:16.679 CST ] [BasicStep.handleNonIgnorableError:431]  ORA-21561: OID generation failed
:msg


经过反复排查,发现这台虚拟机是复制的,我修改 /etc/sysconfig/network-scripts/ifcfg-eth0 和 /etc/sysconfig/network 文件后,忘记修改了 /etc/hosts 文件。

/etc/hosts 文件中的 host IP 与 hostname 映射仍然是源主机的,果断改正后重启服务器,然后重新安装就很快 pass 了。



转载请注明出处及原文链接:

http://blog.youkuaiyun.com/xiangsir/article/details/8627942




<think>好的,用户到了DBCA数据时出现ORA-19504错误的问题,需要解决。首先,我需要理解这个错误的具体含义和可能的原因。根据引用中的信息,类似的ORA-01565错误涉及到无法识别或打开spfile,可能与存储路径或权限有关。而ORA-19504通常与文件创失败相关,特别是当使用ASM(自动存储管理)时,比如路径'+DATA'。 首先,可能的原因包括ASM实例未启动、权限不足、路径不存在或名称错误,以及磁盘组空间不足。需要逐一排查这些可能性。用户可能没有正确配置ASM实例,或者Oracle软件安装用户(如oracle)没有足够的权限访问ASM磁盘组。此外,指定的路径是否正确,比如磁盘组DATA是否存在,是否有足够的空间,都是需要考虑的。 接下来,解决方案的步骤需要系统化。第一步应该是检查ASM实例的状态,确认是否正常运行。然后检查磁盘组DATA是否存在以及其可用空间。如果磁盘组不存在或空间不足,需要相应的管理操作。接着,验证用户权限,确保安装用户属于正确的OS组,比如asmdba,并且有读写权限。路径的正确性也很重要,需要确认是否包含正确的集群名称,如+DATA/racdb1/这样的结构是否正确。此外,检查初始化参数中的db_create_file_dest是否正确指向ASM磁盘组。如果问题依旧,可能需要手动创目录或检查ASM实例的日志以获取更详细的错误信息。 在提供解决方案时,需要给出具体的命令示例,比如使用asmcmd工具检查磁盘组状态,或者SQL命令查看空间。同时,提醒用户注意路径中的集群名称是否正确,避免拼写错误。最后,如果所有步骤都无效,议查阅Oracle官方文档或联系支持,引用相关的文档ID,如文档ID 1970979.1,帮助用户进一步解决问题。</think>### DBCA数据出现ORA-19504错误的解决方案 **错误描述** 当使用DBCA数据时出现$ORA-19504$错误,通常表示数据无法在指定存储路径(如$+DATA$)创文件,可能涉及ASM(自动存储管理)配置、权限或路径问题[^4]。 --- ### 分步解决方案 #### 1. 验证ASM实例状态 - **检查ASM实例是否运行** 确保ASM实例在集群中处于运行状态: ```sql sqlplus / as sysasm SQL> SELECT instance_name, status FROM gv$instance; ``` 如果ASM实例未启动,需通过`srvctl start asm`命令启动[^4]。 #### 2. 检查ASM磁盘组可用性 - **确认目标磁盘组存在且状态正常** 使用`asmcmd`工具检查磁盘组$+DATA$是否存在且挂载: ```bash asmcmd lsdg ``` 输出应包含`DATA`磁盘组且状态为`MOUNTED`。若未挂载,通过`ALTER DISKGROUP DATA MOUNT`挂载[^3]。 #### 3. 验证权限配置 - **确保Oracle用户对ASM有访问权限** - 检查Oracle安装用户(如`oracle`)是否属于`asmdba`组: ```bash id oracle ``` - 确认ASM磁盘组权限设置: ```sql SQL> SELECT group_number, name, state, total_mb, free_mb FROM v$asm_diskgroup; ``` 确保用户有权限在$+DATA$中创文件[^1]。 #### 4. 检查路径格式与命名 - **确认ASM路径包含完整集群名称** 在RAC环境中,路径需包含集群名称,例如: ```bash +DATA/<cluster_name>/<db_name>/ ``` 若路径中缺少集群名称,DBCA会因路径无效报错。 #### 5. 检查存储参数配置 - **验证`db_create_file_dest`参数** 确保初始化参数指向正确的ASM磁盘组: ```sql SQL> SHOW PARAMETER db_create_file_dest; ``` 若未设置,通过以下命令修正: ```sql SQL> ALTER SYSTEM SET db_create_file_dest='+DATA'; ``` #### 6. 手动创目录(可选) - **通过`asmcmd`创目标目录** 若ASM目录结构缺失,手动创路径: ```bash asmcmd mkdir +DATA/<cluster_name> asmcmd mkdir +DATA/<cluster_name>/<db_name> ``` #### 7. 检查ASM实例日志 - **分析ASM告警日志** 日志路径通常为`$ORACLE_BASE/diag/asm/+asm/+ASM/trace/alert_+ASM.log`,可获取具体I/O错误信息[^3]。 --- ### 总结表格 | 步骤 | 操作 | 验证方法 | |------|------|----------| | ASM实例状态 | 启动ASM实例 | `srvctl status asm` | | 磁盘组可用性 | 挂载$+DATA$ | `asmcmd lsdg` | | 权限配置 | 检查用户组与权限 | `id oracle`、`v$asm_diskgroup` | | 路径格式 | 包含集群名称 | `asmcmd ls +DATA/<cluster_name>` | | 存储参数 | 设置`db_create_file_dest` | `SHOW PARAMETER db_create_file_dest` | ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值