刪除包時,報ORA-04043: object SYS_PLSQL×× dose not exists
環境
OS: SunOS HOSTNAME 5.10 Generic_127111-11 sun4u sparc SUNW,Sun-Fire-V890
DB:Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
問題:一個包處於無效狀態,通常直接用命令編譯一下,就行了,但這個簡單的操作,卻碰到:
SQL> alter package SCHEMA.PACKAGENAME compile;
alter package SCHEMA.PACKAGENAME compile
*
ERROR at line 1:
ORA-04043: object SYS_PLSQL_6459_DUMMY_2 does not exist
這個錯誤,其實在9i裡這是比較常見的錯誤,在SP裡定義:TYPE和TABLE OF TYPE的資料物件時.Oracle就會自動的在系統內生成SYS_PLSQL_
SQL> select 'drop type SCHEMA.'||object_name||' force;' from dba_objects where object_name like 'SYS_PLSQL_6459%';
drop type SCHEMA.SYS_PLSQL_6459_15_1 force;
drop type SCHEMA.SYS_PLSQL_6459_DUMMY_1 force;
這裡確實沒有錯誤提示裡所指的物件。
解決辦法,把這個SP對應的SYS_PLSQL物件全刪除:
SQL> drop type SCHEMA.SYS_PLSQL_6459_15_1 force;
Type dropped.
SQL> drop type SCHEMA.SYS_PLSQL_6459_DUMMY_1 force;
Type dropped.
SQL> alter package SCHEMA.PACKAGENAME compile;
Package altered.
確認一下,有沒有重新生成SYS_PLSQL:
SQL> select 'drop type SCHEMA.'||object_name||' force;' from dba_objects where object_name like 'SYS_PLSQL_6459%';
drop type SCHEMA.SYS_PLSQL_6459_DUMMY_2 force;
drop type SCHEMA.SYS_PLSQL_6459_15_2 force;
drop type SCHEMA.SYS_PLSQL_6459_DUMMY_2 force;
這就對應Package header裡定義了三個TYPE:
TYPE invcur_t IS REF CURSOR RETURN trinvoicemaster%ROWTYPE;
TYPE inv_lines IS TABLE OF trinvoicemaster%ROWTYPE;
FUNCTION split_invoice ( cur_invoicemast in invcur_t ) RETURN inv_lines pipelined;
要刪除這些SYS_PLSQL有時比較難的,記得有次用命令死活也刪除不了,最後藉助TOAD,在圖形裡把它刪除了。Package所引用的SYS_PLSQL物件怎麼會不見了,我記得這是一個BUG. 10G之後,就沒有碰到這個問題了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/195110/viewspace-713862/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle刪除使用者時出錯,報ORA-00604和ORA-04043錯誤Oracle
- ORA-04043: object DBA_DATA_FILES does not existObject
- 【Oracle】-【許可權-ORA-04043】- object does not existOracleObject
- 刪除編輯檔案警告Swap file “…” already exists!
- 刪除使用者下的所有的objectObject
- linux新增或刪除元件包Linux元件
- ORA-8103 "object no longer exists"-8103.1Object
- RMAN刪除歸檔日誌時將ASM上空目錄同時刪除ASM
- Docker定時刪除none映象DockerNone
- 在 oracle 中實現 sql server 中的在 create object 時的判斷與刪除功能OracleSQLServerObject
- window定時刪除批處理
- 定時刪除檔案指令碼指令碼
- 關於刪除表資料時速度慢的測試報告測試報告
- ORA-8103 "object no longer exists" 診斷與解決Object
- win10更新檔案在哪裡刪除 win10如何刪除系統更新包Win10
- elasticsearch按照日期定時批量刪除索引Elasticsearch索引
- rman刪除指定時間的歸檔
- Laravel 中利用『模型事件』來實現刪除資料時的連帶刪除Laravel模型事件
- 刪除某個檔案或資料夾時,系統提示無法刪除!
- Qt5.7中報錯“xxx dose not name a type”的原因;QT
- 裝置驅動程式包可以刪除嗎 win10裝置驅動程式包能刪嗎Win10
- win10更新的檔案怎麼刪除 win10如何刪除系統更新包Win10
- list增強for迴圈刪除元素報錯
- mysql 刪除老是報外來鍵約束MySql
- [BUG反饋]刪除模型屬性時 不會刪除模型表的field_sort模型
- 刪除資料夾時顯示在另一程式開啟怎麼刪除
- Oracle 刪除千萬級資料量時,可以考慮以下方法來提高刪除效率Oracle
- 新增刪除程式打不開怎麼辦 新增刪除程式報錯解決辦法
- dbca刪除資料庫時選項灰色資料庫
- 刪除臨時表空間hang處理
- 定時刪除bdump裡的trace檔案
- 定時刪除udump裡的trace檔案
- linux 下按照時間刪除檔案Linux
- yum工具對軟體包安裝,刪除,更新介紹
- 蘋果iphone怎麼刪除ios系統安裝包方法蘋果iPhoneiOS
- php(js)批量刪除/單個刪除PHPJS
- HBase刪除列族報錯的解決方法
- 刪除咔吧的歷史報告檔案