数据库升级遭遇ORA-04063: package body “SYS.DBMS_SQLTUNE”

联系:手机/微信(+86 17813235971) QQ(107644445)QQ咨询惜分飞

标题:数据库升级遭遇ORA-04063: package body “SYS.DBMS_SQLTUNE”

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

数据库从11.2.0.2升级到11.2.0.4,遇到一下错误

Oracle Database 11.2 Post-Upgrade Status Tool           08-21-2020 20:43:36
.
Component                               Current      Version     Elapsed Time
Name                                    Status       Number      HH:MM:SS
.
Oracle Server
.   ORA-04063: package body "SYS.DBMS_SQLTUNE" 有错误
.   ORA-06508: PL/SQL: 无法找到正在调用 : "SYS.DBMS_SQLTUNE" 的程序单元
.   ORA-06512: 在 line 8
.                                       INVALID      11.2.0.4.0  00:07:28
JServer JAVA Virtual Machine
.                                         VALID      11.2.0.4.0  00:01:45
Oracle Workspace Manager
.                                         VALID      11.2.0.4.0  00:00:20
OLAP Analytic Workspace
.                                         VALID      11.2.0.4.0  00:00:35
OLAP Catalog
.                                         VALID      11.2.0.4.0  00:00:57
Oracle OLAP API
.                                         VALID      11.2.0.4.0  00:00:12
Oracle Enterprise Manager
.   ORA-01422: 实际返回的行数超出请求的行数
.   ORA-06512: 在 line 6
.   ORA-01422: 实际返回的行数超出请求的行数
.   ORA-06512: 在 line 5
.   SP2-1506: START, @ 或 @@ 命令没有参数
.   ORA-01422: 实际返回的行数超出请求的行数
.   ORA-06512: 在 line 5
.   SP2-1506: START, @ 或 @@ 命令没有参数
.   ORA-01422: 实际返回的行数超出请求的行数
.   ORA-06512: 在 line 5
.   SP2-1506: START, @ 或 @@ 命令没有参数
.   ORA-01422: 实际返回的行数超出请求的行数
.   ORA-06512: 在 line 5
.   SP2-1506: START, @ 或 @@ 命令没有参数
.   ORA-01422: 实际返回的行数超出请求的行数
.   ORA-06512: 在 line 5
.   SP2-1506: START, @ 或 @@ 命令没有参数
.   ORA-01422: 实际返回的行数超出请求的行数
.   ORA-06512: 在 line 5
.   SP2-1506: START, @ 或 @@ 命令没有参数
.   ORA-01422: 实际返回的行数超出请求的行数
.   ORA-06512: 在 line 5
.   SP2-1506: START, @ 或 @@ 命令没有参数
.   ORA-01422: 实际返回的行数超出请求的行数
.                                         VALID      11.2.0.4.0  00:00:24
Oracle XDK
.                                         VALID      11.2.0.4.0  00:00:16
Oracle Text
.                                         VALID      11.2.0.4.0  00:00:33
Oracle XML Database
.                                         VALID      11.2.0.4.0  00:01:21
Oracle Database Java Packages
.                                         VALID      11.2.0.4.0  00:00:05
Oracle Multimedia
.   ORA-04063: package body "SYS.DBMS_SQLTUNE" 有错误
.   ORA-06508: PL/SQL: 无法找到正在调用 : "SYS.DBMS_SQLTUNE" 的程序单元
.   ORA-06512: 在 "SYS.UTL_RECOMP", line 865
.   ORA-06512: 在 "SYS.UTL_RECOMP", line 878
.   ORA-06512: 在 line 1
.                                         VALID      11.2.0.4.0  00:00:53
Spatial
.                                         VALID      11.2.0.4.0  00:03:25
Oracle Expression Filter
.                                         VALID      11.2.0.4.0  00:00:08
Oracle Rules Manager
.                                         VALID      11.2.0.4.0  00:00:06
Oracle Application Express
.                                         VALID     3.2.1.00.10
Final Actions
.                                                                00:00:00
Total Upgrade Time: 00:18:38

PL/SQL 过程已成功完成。

查询mos发现类似解决方案

SQL> select owner, object_name, object_type, status from dba_objects  where object_name = 'DBMS_STATS';

OWNER                          OBJECT_NAME
                                        OBJECT_TYPE         STATUS
------------------------------ -----------------------------------------------------------------------------------------
--------------------------------------- ------------------- -------
SYS                            DBMS_STATS
                                        PACKAGE             VALID
SYS                            DBMS_STATS
                                        PACKAGE BODY        VALID
PUBLIC                         DBMS_STATS
                                        SYNONYM             VALID

SQL> select owner, object_name, object_type, status from dba_objects  where object_name = 'DBMS_SQLTUNE'
  2  /

OWNER                          OBJECT_NAME
                                        OBJECT_TYPE         STATUS
------------------------------ -----------------------------------------------------------------------------------------
--------------------------------------- ------------------- -------
SYS                            DBMS_SQLTUNE
                                        PACKAGE             VALID
SYS                            DBMS_SQLTUNE
                                        PACKAGE BODY        INVALID
PUBLIC                         DBMS_SQLTUNE
                                        SYNONYM             INVALID

SQL> alter package DBMS_SQLTUNE compile body;

警告: 更改的包体带有编译错误。

SQL> show error;
PACKAGE BODY DBMS_SQLTUNE 出现错误:

LINE/COL ERROR
-------- -----------------------------------------------------------------
0/0      PLS-00801: 内部错误 [phdite:node kind]
10210/5  PL/SQL: ORA-01775: 同义词的循环链
10210/5  PL/SQL: SQL Statement ignored
13917/7  PL/SQL: Statement ignored
16995/5  PL/SQL: SQL Statement ignored
17060/12 PL/SQL: ORA-01775: 同义词的循环链
17657/7  PL/SQL: Statement ignored
17660/31 PLS-00231: 函数 'SQLERRM' 不能在 SQL 中使用
19718/5  PL/SQL: SQL Statement ignored
19718/12 PL/SQL: ORA-01775: 同义词的循环链
19782/5  PL/SQL: Statement ignored

LINE/COL ERROR
-------- -----------------------------------------------------------------
19782/17 PLS-00231: 函数 'BUILD_SQL_DETAIL_XML' 不能在 SQL 中使用
SQL> select owner, object_name, object_type, status from dba_objects  where object_name = 'XMLCONCAT';

OWNER
------------------------------
OBJECT_NAME
--------------------------------------------------------------------------------
OBJECT_TYPE         STATUS
------------------- -------
PUBLIC
XMLCONCAT
SYNONYM             VALID


SQL> drop public synonym XMLCONCAT;

同义词已删除。

SQL>  alter package DBMS_SQLTUNE compile body;

程序包体已变更。

重新跑升级脚本catupgrd.sql,一切正常

Oracle Database 11.2 Post-Upgrade Status Tool           08-21-2020 21:08:31
.
Component                               Current      Version     Elapsed Time
Name                                    Status       Number      HH:MM:SS
.
Oracle Server
.                                         VALID      11.2.0.4.0  00:06:44
JServer JAVA Virtual Machine
.                                         VALID      11.2.0.4.0  00:00:00
Oracle Workspace Manager
.                                         VALID      11.2.0.4.0  00:00:00
OLAP Analytic Workspace
.                                         VALID      11.2.0.4.0  00:00:00
OLAP Catalog
.                                         VALID      11.2.0.4.0  00:00:00
Oracle OLAP API
.                                         VALID      11.2.0.4.0
Oracle Enterprise Manager
.                                         VALID      11.2.0.4.0  00:00:00
Oracle XDK
.                                         VALID      11.2.0.4.0  00:00:00
Oracle Text
.                                         VALID      11.2.0.4.0  00:00:00
Oracle XML Database
.                                         VALID      11.2.0.4.0  00:00:00
Oracle Database Java Packages
.                                         VALID      11.2.0.4.0  00:00:00
Oracle Multimedia
.                                         VALID      11.2.0.4.0  00:00:00
Spatial
.                                         VALID      11.2.0.4.0  00:00:00
Oracle Expression Filter
.                                         VALID      11.2.0.4.0  00:00:00
Oracle Rules Manager
.                                         VALID      11.2.0.4.0
Oracle Application Express
.                                         VALID     3.2.1.00.10
Final Actions
.                                                                00:00:00
Total Upgrade Time: 00:06:51

PL/SQL 过程已成功完成。

参考解决方案:Upgrade From 10G To 11G Fails On Dbms_sqltune : ORA-04063: Package Body “SYS.DBMS_SQLTUNE” Has Errors (Doc ID 1271490.1)
DBMS_STATS , DBMS_SQLTUNE_INTERNAL , DBMS_SQLTUNE Package Can Not be Recompiled during/After Upgrade reporting “ORA-04063″ , “ORA-06508″ . “ORA-06512″ (Doc ID 761961.1)