必须声明UTL_RECOMP.RECOMP_SERIAL

时间:2015-04-28 13:01:59

标签: c# sql oracle

首先,我想指定我正在尝试远程升级。我收到此错误:

  

2015-04-24:11:59:42 [错误] myDB - 无法重新编译' DBTYPE'   数据库对象:ExcSQL失败:遇到Oracle错误:ORA-06550:   第1行第7列:PLS-00201:标识符' UTL_RECOMP.RECOMP_SERIAL'   必须声明ORA-06550:第1行第7列:PL / SQL:语句   ignore(6550)SQL Text:begin utl_recomp.recomp_serial(' DBTYPE');   端;

     

2015-04-24:11:59:42 [错误] WorksObjects执行失败:DBTYPE -   进程JAR文件失败:无法重新编译' DBTYPE'数据库   对象:ExcSQL失败:遇到Oracle错误:ORA-06550:第1行,   第7列:PLS-00201:标识符' UTL_RECOMP.RECOMP_SERIAL'一定是   声明ORA-06550:第1行第7列:PL / SQL:忽略语句(6550)   SQL Text:begin utl_recomp.recomp_serial(' DBTYPE');端;

     

2015-04-24:11:59:42 [错误] UPGD失败! :myDB - 升级错误 -   工作线程进程错误 - DBTYPE - 处理JAR文件失败:   无法重新编译' DBTYPE'数据库对象:ExcSQL失败:Oracle   遇到错误:ORA-06550:第1行第7列:PLS-00201:标识符   ' UTL_RECOMP.RECOMP_SERIAL'必须声明ORA-06550:第1行,列   7:PL / SQL:忽略语句(6550)SQL Text:begin   utl_recomp.recomp_serial(' DBTYPE&#39);端;

当我尝试重新编译无效对象时。我唯一可以在互联网上找到的是,当重新编​​译时,我应该以sysdba身份登录,我目前正在这样做。

"Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = " + MyHostName + ")(PORT = 1521))(CONNECT_DATA =" +
"(SERVICE_NAME = " + mySID + ")));DBA Privilege = SYSDBA;" +
"User Id = " + MyID + ";Password = " + MyPW;

我的连接工作正常,因为我可以运行升级过程的3/4,直到我尝试重新编译这个特定架构。

Conn = GetConn( MyID, MyPW );
if (DevelopSrvr)
{
   ExcSQL(Conn, "alter session set plsql_debug=true");
}
ExcSQL(Conn, "begin utl_recomp.recomp_serial('" + schema + "'); end;");

这个程序在本地运行正常,我检查了堆栈跟踪,所有变量都返回了预期的值。有什么我想念的吗?提前致谢

1 个答案:

答案 0 :(得分:1)

以下是与UTL_RECOMP包有关的操作说明:

必须使用SQL * PLUS运行此程序包。

此程序包使用作业队列进行并行重新编译。

您必须连接AS SYSDBA才能运行此脚本。

此软件包需要使用VALID状态创建以下软件包:

标准(standard.sql)

DBMS_STANDARD(dbmsstdx.sql)

DBMS_JOB(dbmsjob.sql)

DBMS_RANDOM(dbmsrand.sql)