ORA-06544(56319)

本文记录了一次解决ORA-06544错误的过程,该错误出现在使用CONVERT DATABASE命令迁移数据库版本及位宽的过程中。通过使用特定的SQL脚本解决了问题。

环境:

源环境:windows server  2003  64位

目标环境:windows server  2003  32位

 

 

1、在目标环境上建立数据库存orcl

2、复制冷备数据库

3、进入plsql 提示 ORA-06544

 

 

 

ORA-06544(56319)错误

===========================================================

三思同志在测试CONVERT DATABASE数据库的时候碰到了这个错误,简单记录一下问题的解决过程。


由于环境是jusansi搭的,我只是碰到问题后来帮忙的,因此这里没有错误环境的搭建步骤,只是简单描述一下步骤。

源数据库是Windows环境下的3210201,目标数据库是Linux环境下6410203。在源数据库上执行了CONVERT DATABASE命令,将CONVERT后的数据文件都拷贝到目标数据库上,并生成了控制文件,随后出现了错误:

SQL> startup pfile=/data/orascript/jssconv/pfile_conv.ora  
ORACLE instance started.

Total System Global Area  167772160 bytes
Fixed Size                  2071256 bytes
Variable Size             104858920 bytes
Database Buffers           54525952 bytes
Redo Buffers                6316032 bytes
Database mounted.
ORA-01092: ORACLE instance terminated. Disconnection forced

当我看到这个问题时,已经是这种情况了:

Errors in file /opt/ora10g/admin/jssconv/udump/jssconv_ora_29606.trc:
ORA-00704: bootstrap process failure
ORA-39700: database must be opened with UPGRADE option

alert文件中,看到上面的错误信息,又了解到了源数据库的版本和目标数据库版本不一致,因此尝试利用STARTUP UPGRADE来解决这个问题:

SQL> startup upgrade pfile=/data/orascript/jssconv/pfile_conv.ora
ORACLE instance started.

Total System Global Area  167772160 bytes
Fixed Size                  2071256 bytes
Variable Size             104858920 bytes
Database Buffers           54525952 bytes
Redo Buffers                6316032 bytes
Database mounted.
Database opened.
SQL> spo catupgrade.txt
SQL> @?/rdbms/admin/catupgrd.sql
DOC>######################################################################
DOC>######################################################################
DOC>    The following statement will cause an "ORA-01722: invalid number"
DOC>    error if the user running this script is not SYS.  Disconnect
DOC>    and reconnect with AS SYSDBA.
DOC>######################################################################
DOC>######################################################################
DOC>#

no rows selected

DOC>######################################################################
DOC>######################################################################
DOC>    The following statement will cause an "ORA-01722: invalid number"
DOC>    error if the database server version is not correct for this script.
DOC>    Shutdown ABORT and use a different script or a different server.
DOC>######################################################################
DOC>######################################################################
DOC>#

no rows selected

.
.
.
System altered.


0 rows deleted.


Commit complete.


System altered.

CREATE OR REPLACE FUNCTION version_script
*
ERROR at line 1:
ORA-06544: PL/SQL: internal error, arguments: [56319], [], [], [], [], [], [],
[]
ORA-06553: PLS-801: internal error [56319]


Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

可以看到,使用STARTUP UPGRADE方式可以打开数据库,但是运行catupgrd.sql时出现了错误,还是第一次碰到运行升级包的时候出现了这种直接退出的错误。

查询了一下metalink,发现在10g上,如果数据库从32位变为64位,那么执行catupgrd.sql就可能出现ORA-6544错误,Oracle在多篇文章中描述了这个错误,比如:Bug No. 5079213Bug No. 8551190Oracle给出的解决方法是修改catupgrd.sql脚本,或者在调用脚本前执行utlip.sql

SQL> @?/rdbms/admin/utlip.sql

2070 rows updated.


Commit complete.


0 rows updated.


Commit complete.


29 rows updated.


Commit complete.


System altered.


Package created.


Package body created.


Grant succeeded.


Package created.


Synonym created.


Grant succeeded.


PL/SQL procedure successfully completed.


Commit complete.


System altered.


PL/SQL procedure successfully completed.


Commit complete.


System altered.

下面再次运行catupgrd.sql,问题消失:

SQL> spo catupgrade.txt
SQL> @?/rdbms/admin/catupgrd.sql
DOC>######################################################################
DOC>######################################################################
DOC>    The following statement will cause an "ORA-01722: invalid number"
DOC>    error if the user running this script is not SYS.  Disconnect
DOC>    and reconnect with AS SYSDBA.
DOC>######################################################################
DOC>######################################################################
DOC>#

no rows selected

DOC>######################################################################
DOC>######################################################################
DOC>    The following statement will cause an "ORA-01722: invalid number"
DOC>    error if the database server version is not correct for this script.
DOC>    Shutdown ABORT and use a different script or a different server.
DOC>######################################################################
DOC>######################################################################
DOC>#

no rows selected

.
.
.
SQL> DOC
DOC>#######################################################################
DOC>#######################################################################
DOC>
DOC>   The above PL/SQL lists the SERVER components in the upgraded
DOC>   database, along with their current version and status.
DOC>
DOC>   Please review the status and version columns and look for
DOC>   any errors in the spool log file.  If there are errors in the spool
DOC>   file, or any components are not VALID or not the current version,
DOC>   consult the Oracle Database Upgrade Guide for troubleshooting
DOC>   recommendations.
DOC>
DOC>   Next shutdown immediate, restart for normal operation, and then
DOC>   run utlrp.sql to recompile any invalid application objects.
DOC>
DOC>#######################################################################
DOC>#######################################################################
DOC>#
SQL>
SQL> Rem *********************************************************************
SQL> Rem END catupgrd.sql
SQL> Rem *********************************************************************
SQL> spo off
SQL> @?/rdbms/admin/utlrp.sql
SQL> Rem
SQL> Rem $Header: utlrp.sql 24-jul-2003.10:06:51 gviswana Exp $
SQL> Rem
SQL> Rem utlrp.sql
.
.
.
SQL> select COUNT(*) "OBJECTS WITH ERRORS" from obj$ where status = 3;

OBJECTS WITH ERRORS
-------------------
1

1 row selected.

SQL>
SQL>
SQL> DOC
DOC> The following query reports the number of errors caught during
DOC> recompilation. If this number is non-zero, please query the error
DOC> messages in the table UTL_RECOMP_ERRORS to see if any of these errors
DOC> are due to misconfiguration or resource constraints that must be
DOC> fixed before objects can compile successfully.
DOC>#
SQL> select COUNT(*) "ERRORS DURING RECOMPILATION" from utl_recomp_errors;

ERRORS DURING RECOMPILATION
---------------------------
0

1 row selected.

SQL>
SQL>
SQL> Rem =====================================================================
SQL> Rem Run component validation procedure
SQL> Rem =====================================================================
SQL>
SQL> SET serveroutput on
SQL> EXECUTE dbms_registry_sys.validate_components;

PL/SQL procedure successfully completed.

SQL> SET serveroutput off
SQL>
SQL>
SQL> Rem ===========================================================================
SQL> Rem END utlrp.sql
SQL> Rem ===========================================================================

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup pfile=/data/orascript/jssconv/pfile_conv.ora
ORACLE instance started.

Total System Global Area  167772160 bytes
Fixed Size                  2071256 bytes
Variable Size             104858920 bytes
Database Buffers           54525952 bytes
Redo Buffers                6316032 bytes
Database mounted.
Database opened.

至此数据库启动报错,以及执行catupgrd.sql出错的问题解决,CONVERT DATABASE操作也顺利完成。

yangtingkun    发表于:2009.07.19 23:45    ::分类:   (       ORACLE       ,                 Bug                )    ::阅读:(2992次)    ::    评论   (0)
<think>首先,用户的问题是关于Oracle 12c RAC环境中出现特定错误的解决方案:ORA-00210、ORA-00202、ORA-17503、ORA-15001和ORA-15040。用户提供了三个引用,但它们是关于其他错误的,所以我需要基于这些引用和一般知识来回答。 关键错误: - ORA-00210: 无法打开指定的控制文件。 - ORA-00202: 控制文件错误。 - ORA-17503: I/O错误,发生在ASM操作中。 - ORA-15001: ASM磁盘组不存在或无效。 - ORA-15040: ASM磁盘组不存在。 这些错误通常与ASM(Automatic Storage Management)相关,涉及控制文件、磁盘组和权限问题。 从引用中提取相关信息: - 引用[1]: 提到ORA-XXXX和ORA-YYYY错误,但未指定具体代码。它指出错误可能由于网络配置、存储配置、权限或初始化参数引起。 - 引用[2]: 讨论ORA-12518和ORA-12541,与连接问题相关,建议在sqlnet.ora中添加SQLNET.ALLOWED_LOGON_VERSION=8。但用户错误不同。 - 引用[3]: 提到ORA-01017(无效用户名/密码)和ORA-17503(I/O错误),提示权限问题,例如文件访问权限。 用户错误中包括ORA-17503,这与引用[3]相关。ORA-17503通常表示ASM文件操作失败,可能由于权限或路径问题。 常见原因和解决方案: 1. **控制文件问题 (ORA-00210, ORA-00202)**: - 控制文件丢失、损坏或路径错误。 - 在RAC环境中,控制文件应位于共享存储(如ASM磁盘组)中。 - 检查控制文件位置是否在初始化参数文件(spfile)中正确设置。 - 确保所有节点都能访问控制文件。 2. **ASM相关问题 (ORA-17503, ORA-15001, ORA-15040)**: - ORA-17503: I/O错误,可能由于权限问题(如Oracle用户无权限访问文件)。 - ORA-15001: ASM磁盘组不存在或名称错误。 - ORA-15040: ASM磁盘组不存在或无效。 - 检查ASM磁盘组是否已创建并可用。使用ASM命令如`asmcmd lsdg`验证。 - 确保磁盘组在所有节点上可见。 - 权限问题:Oracle用户(通常是grid或oracle)必须对ASM磁盘和文件有适当权限。检查文件系统权限(如果使用文件系统)或ASM权限。 - 在RAC环境中,确保所有节点上的ASM实例正常运行。 基于引用[3],ORA-17503可能与权限被拒绝相关,提示文件访问问题。 一般步骤解决: - 验证ASM磁盘组状态:登录到ASM实例,运行`SELECT name, state FROM v$asm_diskgroup;` 确保磁盘组MOUNTED。 - 检查控制文件位置:在数据库实例中,运行`SHOW PARAMETER control_files` 确认路径正确。 - 权限检查:确保Oracle软件所有者(如oracle用户)有权限访问ASM磁盘。检查文件权限(如 +MGMT/AISHU1/PASSWORD/pwdaishu1.281.1041682565 在引用[3]中)。 - 网络配置:在RAC中,确保私有网络和公共网络配置正确。 - 日志文件:检查alert日志和ASM alert日志以获取更多细节。 结构化回答: 1. **介绍问题**: 简要描述错误及其常见原因。 2. **逐步解决方案**: a. 检查ASM磁盘组。 b. 验证控制文件配置。 c. 检查权限和所有权。 d. 其他可能原因。 3. **引用相关信息**: 自然地融入引用,如引用[3]提到权限问题。 4. **生成相关问题**: 在末尾添加相关问题。 添加引用标识:在相关部分末尾添加[^1], [^2], [^3],但用户引用是给定的,所以我应该基于内容引用。 用户引用: - : 关于一般配置问题。 - [^2]: 关于连接错误。 - [^3]: 关于权限错误,特别是ORA-17503。 所以,在讨论权限时引用。 最终回答用中文。 </think> ### Oracle 12c RAC环境中ORA-00210、ORA-00202、ORA-17503、ORA-15001和ORA-15040错误的解决方案 在Oracle 12c RAC环境中,遇到ORA-00210、ORA-00202、ORA-17503、ORA-15001和ORA-15040错误,通常与ASM(Automatic Storage Management)控制文件、磁盘组访问或权限问题相关。这些错误可能由共享存储配置不当、文件权限不足或ASM磁盘组状态异常引起。以下是一个结构化的解决方案,基于常见原因和最佳实践。请逐步操作,并在每步后验证错误是否解决。 #### 1. **验证ASM磁盘组状态(针对ORA-15001和ORA-15040)** - **问题原因**:ORA-15001和ORA-15040表示ASM磁盘组不存在、未挂载或无效。在RAC环境中,所有节点必须能访问同一磁盘组。 - **解决步骤**: - 登录到ASM实例(以grid用户身份): ```sql su - grid asmcmd ASMCMD> lsdg -- 检查磁盘组状态,确保状态为MOUNTED ``` - 如果磁盘组未挂载,手动挂载: ```sql ASMCMD> mount <disk_group_name> -- 替换为实际磁盘组名,如DATA ``` - 检查磁盘组在所有节点的一致性: ```sql sqlplus / as sysasm SQL> SELECT name, state FROM v$asm_diskgroup; -- 确保所有节点显示一致状态 ``` - 如果磁盘组不存在,需重新创建(先备份数据): ```sql CREATE DISKGROUP <disk_group_name> NORMAL REDUNDANCY DISK '<disk_path>' -- 例如,'/dev/sdb1' ATTRIBUTE 'compatible.asm'='12.1.0.2.0'; ``` - **引用支持**:此类错误常因存储配置不当引起,需确保共享存储(如SAN/NAS)在所有节点可见[^1]。 #### 2. **检查控制文件配置(针对ORA-00210和ORA-00202)** - **问题原因**:ORA-00210和ORA-00210表示控制文件无法打开或损坏,可能由于路径错误、文件丢失或权限不足。 - **解决步骤**: - 确认控制文件路径是否正确(在数据库实例中运行): ```sql sqlplus / as sysdba SQL> SHOW PARAMETER control_files -- 输出应指向ASM磁盘组,如'+DATA/<db_name>/controlfile/current.ctl' ``` - 如果路径错误,更新`spfile`: ```sql SQL> ALTER SYSTEM SET control_files='+DATA/<db_name>/controlfile/current.ctl' SCOPE=spfile; SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP; -- 重启数据库 ``` - 如果控制文件损坏,从备份恢复或使用`RMAN`重建: ```bash rman target / RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP; RMAN> ALTER DATABASE MOUNT; ``` - 在RAC环境中,确保控制文件位于共享ASM磁盘组,且所有节点有相同配置[^1]。 #### 3. **检查权限和I/O问题(针对ORA-17503)** - **问题原因**:ORA-17503表示ASM文件I/O错误,常因Oracle用户权限不足或文件系统问题引起(如引用中提到的权限被拒绝)。 - **解决步骤**: - 验证Oracle用户(如`oracle`或`grid`)对ASM文件的权限: ```bash ls -l /dev/sd* -- 检查磁盘设备权限,应为grid:oinstall chown grid:oinstall /dev/sdb1 -- 如果权限错误,更正所有权 chmod 660 /dev/sdb1 -- 设置读写权限 ``` - 检查ASM磁盘组中的文件访问(例如,密码文件如引用中的`+MGMT/AISHU1/PASSWORD/pwdaishu1.281.1041682565`): ```bash asmcmd ASMCMD> ls -l +MGMT/AISHU1/PASSWORD/ -- 确认文件存在且权限正确 ``` - 如果权限问题,更新文件权限或添加Sqlnet设置(如引用和[^3]建议,但需适配): - 在所有节点的`$ORACLE_HOME/network/admin/sqlnet.ora`中添加: ``` SQLNET.ALLOWED_LOGON_VERSION=8 -- 解决兼容性问题 ``` - **注意**:如果文件不存在则创建;在RAC中,所有节点需同步此文件[^2]。 - 检查ASM实例的alert日志获取详细错误: ```bash tail -f $ORACLE_BASE/diag/asm/+asm/<node_name>/trace/alert_<node_name>.log ``` - **引用支持**:权限问题(如`ORA-17503`)常导致I/O失败,需确保Oracle用户对存储设备有完全访问权。 #### 4. **其他常见原因和检查** - **网络和集群健康**: - 在RAC中,验证集群服务状态: ```bash crsctl stat res -t -- 确保所有资源(包括ASM和数据库)在线 ``` - 检查私有网络(如Interconnect)是否正常,避免通信问题引发文件访问错误[^1]。 - **初始化参数和兼容性**: - 确保`compatible.asm`和`compatible.rdbms`参数一致: ```sql SQL> SHOW PARAMETER compatible; -- 应匹配数据库版本(如12.1.0.2.0) ``` - **操作系统级别检查**: - 确认共享存储(如OCFS2或ASMLib)已安装并配置。 - 使用`dd`测试磁盘I/O: ```bash dd if=/dev/sdb1 of=/dev/null bs=1M count=100 -- 测试读操作 ``` #### 5. **总结和预防建议** - **关键点**:这些错误通常互相关联(如ORA-17503引发控制文件问题)。优先解决ASM磁盘组和权限问题[^3],再处理控制文件错误。 - **预防措施**: - 定期备份控制文件和ASM元数据。 - 在RAC中,使用OEM或脚本监控磁盘组状态。 - 确保所有节点OS权限、Oracle软件版本和配置一致。 - **日志分析**:始终检查`alert.log`和ASM trace文件定位根源。 如果以上步骤后问题仍存,提供alert日志片段以进一步诊断。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值