由于字符集问题导致 Package Body created with compilation errors.

简介:
将要在生产库上进行包的预发布,时遇到如下情况:Warning: Package Body created with compilation errors.整个过程如下:
首先检查对象的有效个数和无效的个数。
IM@im1>select object_type,status,count(*) from user_objects group by object_type,status;
OBJECT_TYPE        STATUS    COUNT(*)
------------------ ------- ----------
TYPE               VALID           11
VIEW               INVALID          3
INDEX              VALID          399
TABLE              VALID          234
PACKAGE            VALID           49
SYNONYM            VALID           10
FUNCTION           VALID            1
SEQUENCE           VALID          173
PROCEDURE          VALID           22
PACKAGE BODY       VALID           49
DATABASE LINK      VALID            6
INDEX PARTITION    VALID           79
TABLE PARTITION    VALID           79
13 rows selected.
发布是遇到如下错误:
IM@im1>@/tmp/IM_SMS_20110727.pkg
Package created.
Warning: Package Body created with compilation errors.
show error 检查,无结果显示。考虑不是语法的问题。
IM@im1>show error
No errors.
检查对象的有效个数:
IM@im1>select object_type,status,count(*) from user_objects group by object_type,status;
OBJECT_TYPE        STATUS    COUNT(*)
------------------ ------- ----------
TYPE               VALID           11
VIEW               INVALID          3
INDEX              VALID          399
TABLE              VALID          234
PACKAGE            VALID           49
SYNONYM            VALID           10
FUNCTION           VALID            1
SEQUENCE           VALID          173
PROCEDURE          VALID           22
PACKAGE BODY       VALID           48
PACKAGE BODY       INVALID          1  --多一个无效对象
DATABASE LINK      VALID            6
INDEX PARTITION    VALID           79
TABLE PARTITION    VALID           79
14 rows selected.

测试库的字符集为NLS_CHARACTERSET= AL32UTF8,而编辑的脚本的windows平台是ANSI,导致对中文的不兼容。
解决办法是测试环境的NLS_LANG为"AMERICAN_AMERICA.US7ASCII",重新执行包的发布。
IM@im1>select * from nls_database_parameters;

PARAMETER               VALUE
-------------          ------------
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_LANGUAGE           AMERICAN
NLS_TERRITORY          AMERICA
NLS_CURRENCY           $ 
NLS_ISO_CURRENCY       AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET       AL32UTF8
NLS_CALENDAR           GREGORIAN
NLS_DATE_FORMAT        DD-MON-RR
NLS_DATE_LANGUAGE      AMERICAN
NLS_SORT               BINARY
NLS_TIME_FORMAT        HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT   DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT     HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY      $
NLS_COMP               BINARY
NLS_LENGTH_SEMANTICS   BYTE
NLS_NCHAR_CONV_EXCP    FALSE
NLS_RDBMS_VERSION      9.2.0.8.0
20 rows selected.
IM@im1>exit
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.8.0 - Production

oracle@c9e016r3ectk1xl67j8p:aliuid /tmp>export|grep LANG
declare -x LANG="en_US.UTF-8"
declare -x NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
oracle@c9e016r3ectk1xl67j8p:/tmp>
oracle@c9e016r3ectk1xl67j8p:/tmp>
oracle@c9e016r3ectk1xl67j8p: /tmp>export NLS_LANG="AMERICAN_AMERICA.US7ASCII"
oracle@c9e016r3ectk1xl67j8p: /tmp>
oracle@c9e016r3ectk1xl67j8p: /tmp>
oracle@c9e016r3ectk1xl67j8p: /tmp>export|grep LANG
declare -x LANG="en_US.UTF-8"
declare -x NLS_LANG="AMERICAN_AMERICA.US7ASCII"
oracle@c9e016r3ectk1xl67j8p: /tmp>
再次执行包的变更,程序正确执行。
oracle@c9e016r3ectk1xl67j8p: /tmp>sqlplus IM   
SQL*Plus: Release 9.2.0.8.0 - Production on Fri Jul 29 04:01:29 2011
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
Enter password: 
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.8.0 - Production
IM@im1>@/tmp/IM_SMS_20110727.pkg
Package created.
Package body created.
IM@im1>select object_type,status,count(*) from user_objects group by object_type,status;
OBJECT_TYPE        STATUS    COUNT(*)
------------------ ------- ----------
TYPE               VALID           11
VIEW               INVALID          3
INDEX              VALID          399
TABLE              VALID          234
PACKAGE            VALID           49
SYNONYM            VALID           10
FUNCTION           VALID            1
SEQUENCE           VALID          173
PROCEDURE          VALID           22
PACKAGE BODY       VALID           49
DATABASE LINK      VALID            6
INDEX PARTITION    VALID           79
TABLE PARTITION    VALID           79
13 rows selected.

IM@im1>@/tmp/IM_WEB_ONLIE_20110727.pkg
Package created.
Package body created.
IM@im1>select object_type,status,count(*) from user_objects group by object_type,status;
OBJECT_TYPE        STATUS    COUNT(*)
------------------ ------- ----------
TYPE               VALID           11
VIEW               INVALID          3
INDEX              VALID          399
TABLE              VALID          234
PACKAGE            VALID           49
SYNONYM            VALID           10
FUNCTION           VALID            1
SEQUENCE           VALID          173
PROCEDURE          VALID           22
PACKAGE BODY       VALID           49
DATABASE LINK      VALID            6
INDEX PARTITION    VALID           79
TABLE PARTITION    VALID           79
13 rows selected.

IM@im1>exit
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production
问题解决。。
相关文章
|
Java 数据格式 JSON
项目启动保错(jackson版本问题导致项目启动失败)
项目启动保错(jackson版本问题导致项目启动失败)
745 0
项目启动保错(jackson版本问题导致项目启动失败)
|
SQL 资源调度 分布式数据库
Flink SQL 问题之服务器报错如何解决
Flink SQL报错通常指在使用Apache Flink的SQL接口执行数据处理任务时遇到的问题;本合集将收集常见的Flink SQL报错情况及其解决方法,帮助用户迅速恢复数据处理流程。
284 3
|
存储 关系型数据库 MySQL
MySQL 中InnoDB与MyISAM的区别是什么?
MySQL 中InnoDB与MyISAM的区别是什么?
238 0
MySQL 中InnoDB与MyISAM的区别是什么?
|
SQL 搜索推荐 关系型数据库
Windows 系统彻底卸载 SQL Server 通用方法
Windows 系统彻底卸载 SQL Server 通用方法
1391 0
Windows 系统彻底卸载 SQL Server 通用方法
|
Kubernetes Cloud Native 测试技术
阿里云块存储团队软件工程实践
“我背上有个背篓,里面装了很多血泪换来的经验教训,我看着你们在台下嗷嗷待哺想要这个背篓里的东西,但事实上我给不了你们”,实践出真知。
阿里云块存储团队软件工程实践
|
Shell 开发工具 git
【Git初探】Git中fatal: Not a git repository (or any of the parent directories): .git错误的解决办法
【Git初探】Git中fatal: Not a git repository (or any of the parent directories): .git错误的解决办法
11485 0
|
Kubernetes Shell Docker
MetaForce佛萨奇2.0系统开发详细方案丨佛萨奇系统开发技术讲解
MetaForce佛萨奇2.0系统开发详细方案丨佛萨奇系统开发技术讲解
242 0
|
Java Android开发 p3c
提升团队研发效能利器,《阿里巴巴Java开发手册》插件全球首发(附插件下载地址)
2017年9月底,阿里巴巴集团发布了《阿里巴巴Java开发手册》PDF终极版,2017年10月14日,在2017杭州云栖大会上,规约插件全球首发。本文为大家分享规约插件下载地址与使用攻略,敬请取阅。
43447 0
|
JavaScript API 数据库
Node.js AsyncHooks 与异步回调上下文
我们都知道,Nodejs 最显著特点是单进程、异步、事件驱动。每当我们的代码碰到异步调用时,需要传入一个回调函数,等待异步调用结束时再被执行。
Node.js AsyncHooks 与异步回调上下文
|
容器
React-Native TextInput 组件需要点击两次才能获取子组件的回调事件 - 解决
TextInput控件后面根了一个搜索按钮,当TextInput中输入内容后,点击搜索获取内容,并触发搜索, Bug : 不能触发回调 解决: keyboardShouldPersistTaps={'always'} keyboardShouldP...
1789 0