由於字符集問題導致 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
問題解決。。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-703278/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MYSQL 5.7 升級 8.0 後的 由於字符集導致的大問題 ?MySql
- Laravel 關聯模型由於名稱一致性導致的問題Laravel模型
- spring boot 2.0.0由於版本不匹配導致的NoSuchMethodError問題解析Spring BootError
- 伺服器由於防火牆問題導致埠不通解決方法伺服器防火牆
- Linux平臺由於OPROCD程式導致伺服器重啟的問題Linux伺服器
- 由一條sql語句導致的系統IO問題SQL
- 優化由直方圖資訊導致的sql效能問題優化直方圖SQL
- 在用package方式產生.xml時由於有&造成問題的處理PackageXML
- AIX下由於nfs故障導致oracle hangAINFSOracle
- 記錄一個由於倉庫層錯誤導致軟刪除失效的問題
- dba工作一定要細心:由於不細心導致的一個小問題
- 關於 Laravel mix 導致 Bootstrap 失效的問題Laravelboot
- 由於CND cache導致的小程式使用者資訊串號的線上問題回顧
- 【Cocos2d-x】遮蔽Emoji並解決由於Emoji導致的崩潰問題
- oracle兩節點RAC,由於gipc導致某節點crs無法啟動問題分析Oracle
- ORA-04042 procedure, function, package, or package body does not existFunctionPackage
- Package Specification 和 Package Body 及 Package有什麼區別? (轉)Package
- 由於基本資料型別使用姿勢不對導致的線上"死迴圈"問題排查資料型別
- 由於無法分配ip而導致的FailedCreatePodSandBoxAI
- 由Nginx的DNS快取導致的訪問404NginxDNS快取
- 由於源資料和目標資料的字符集不一致,引起無法匯入的問題
- 關於log4j.jar導致的中文問題JAR
- 關於Oracle字符集的問題Oracle
- ANALYZE導致的阻塞問題分析
- MySQL Flush導致的等待問題MySql
- 由drop datafile導致的oracle bugOracle
- 由於網路卡故障導致DATAGUARD傳輸檔案失敗
- openGauss 由於RemoveIPC未關閉導致資料庫crashREM資料庫
- 關於Beego ORM和 request body 的對映問題GoORM
- SCHEDULER呼叫XDB程式導致效能問題
- 關於 iconv 轉碼導致資料丟失的問題
- 關於JAVAMAIL導致JSP伺服器停止的問題!急JavaAIJS伺服器
- 包頭(Package)與包體(Package body)的學習與應用Package
- tomcat 由於 -Xss 太小導致無法載入應用Tomcat
- create or replace package body DBMS_ASSERT wrappedPackageAPP
- [分享]關於新版本 Composer 會導致 Class not found 的問題
- 【shmmax】由於shmmax設定過小導致dbca建庫無法完成HMM
- 【DB2學習】由於TSM損壞導致歸檔失敗DB2