ITPub博客

首页 > 数据库 > Oracle > ORA-06553: PLS-801: internal error [56319],以及64位oracle降级为32位的处理

ORA-06553: PLS-801: internal error [56319],以及64位oracle降级为32位的处理

原创 Oracle 作者:zhang41082 时间:2019-05-30 09:06:05 0 删除 编辑

很早之前给开发建了两套环境,今天有同事提出说两套环境经过长时间的折腾,两边很多不一致,于是决定从一个库来同步另一个库。首先想到的最简单的办法就是把源库宕下来,然后冷备过去,然后得到两个完全一致的库。

等做完了,目标数据库起来,登陆进去,一切正常。结果在执行最简单的sql查询的时候报错,ORA-06553: PLS-801: internal error [56319],执行多个不同的sql反复报这个错误。

[@more@]

网上搜了下,看到有人碰到过类似的情况,结果被我也撞上了。源库是64位的OS,目标库是32位的,晕!公司32位的机器都是老爷机,只有那么两三台还被我碰上了。于是琢磨着怎么能把这个库起来。之前做过32位升级到64位的,不过那也是两年前的事情了。于是继续google,搜了半天也没碰见过谁干过类似的事情,于是把32位升级到64位的步骤看了一遍,发现好像当中也没有做很多的操作,那应该把这个操作再做一遍,应该就可以把64位的数据文件在32位的OS上起来了。最后果然成功了,简单记录一下操作过程。

1、修改初始化文件,增加 _SYSTEM_TRIG_ENABLED = false参数
2、Stratup nomount
3、从源库备份一个控制文件,在目标库上重新创建控制文件。
4、Shutdown immediate
5、 Startup upgrade
6、@$ORACLE_HOME/rdbms/admin/utlirp.sql;
7、Shutdown immediate
8、Startup
9、@$ORACLE_HOME/rdbms/admin/utlrp.sql;
10、Shutdown immediate
11、再次修改初始化参数文件,删除参数 _SYSTEM_TRIG_ENABLED = false
12、Startup

转换完成(当时是照网上一个文档做的,现在仔细看来1、2、3、4、11这些步骤貌似都不需要的,最最主要的就是使用utlirp来把相关内容全部在32位平台下编译一遍),顺便补充下utlirp的作用:

Rem NAME
Rem utlirp.sql - UTiLity script to Invalidate Pl/sql modules
Rem
Rem DESCRIPTION
Rem This script can be used to invalidate and all pl/sql modules
Rem (procedures, functions, packages, types, triggers, views)
Rem in a database.
Rem
Rem This script must be run when it is necessary to regenerate the
Rem compiled code because the PL/SQL code format is inconsistent with
Rem the Oracle executable (e.g., when migrating a 32 bit database to
Rem a 64 bit database or vice-versa).
Rem
Rem Please note that this script does not recompile invalid objects
Rem automatically. You must restart the database and explicitly invoke
Rem utlrp.sql to recompile invalid objects.
Rem
Rem USAGE
Rem To use this script, execute the following sequence of actions:
Rem 1. Shut down the database and restart in UPGRADE mode
Rem (using STARTUP UPGRADE or ALTER DATABASE OPEN UPGRADE)
Rem 2. Run this script
Rem 3. Shut down the database and restart in normal mode
Rem 4. Run utlrp.sql to recompile invalid objects. This script does
Rem not automatically recompile invalid objects.
Rem
Rem NOTES
Rem * This script must be run using SQL*PLUS.
Rem * You must be connected AS SYSDBA to run this script.
Rem * This script expects the following files to be available in the
Rem current directory:
Rem standard.sql
Rem dbmsstdx.sql
Rem * There should be no other DDL on the database while running the
Rem script. Not following this recommendation may lead to deadlocks.
Rem

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25016/viewspace-1000693/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2002-10-11

  • 博文量
    105
  • 访问量
    84734