Oracle817 export 時ORA-06553和ORA-00904處理
作者:guoge[@more@]
其實這個問題在開始學Oracle時就已經遇到過了,那個時候胡亂折騰,也忘了是否搞定了。今天和一個朋友一起馬馬虎虎又處理了類似的問題。
現象:
資料庫版本8.1.7
1 .在做資料庫匯出export時,報
EXP-00008: ORACLE error 6553 encountered
ORA-06553: PLS-561: character set mismatch on value for parameter 'SHORTNAME'
ORA-06553: PLS-561: character set mismatch on value for parameter 'SHORTNAME'
2 .看到SHOTNAME,馬上想到DBMS_JAVA這個包。反正我們的系統現在也不需要JAVA,
於是以SYS使用者執行:
$ORACLE_HOME/javavm/install/rmjvm.sql
drop package dbms_java;
drop public synonym dbms_java;
刪除JAVA
3. 繼續執行export,這次報錯:
EXP-00008: ORACLE error 904 encountered
ORA-00904: invalid column name
ORA-00904: invalid column name
4. 以SYSTEM使用者 開啟事件904。
alter system set events='904 trace name errorstack';
5。再執行export, 在user_dump_dest目錄下生成了一個trace檔案
6。關閉事件
alter system set events='904 trace name errorstack off';
7.檢視剛生成的trace檔案,找到:
ORA-00904: invalid column name
Current SQL statement for this session:
SELECT SYNNAM, DBMS_JAVA.LONGNAME(SYNNAM), DBMS_JAVA.LONGNAME(SYNTAB), TABOWN, TABNODE, PUBLIC$, SYNOWN, SYNOWNID FROM SYS.EXU8SYNU ORDER BY SYNTIME
Current SQL statement for this session:
SELECT SYNNAM, DBMS_JAVA.LONGNAME(SYNNAM), DBMS_JAVA.LONGNAME(SYNTAB), TABOWN, TABNODE, PUBLIC$, SYNOWN, SYNOWNID FROM SYS.EXU8SYNU ORDER BY SYNTIME
原來問題還是JAVA 。
8 確定執行了rmjava.sql,但是執行
SELECT count(*) FROM dba_objects WHERE object_type LIKE 'JAVA%';
返回結果就是不為0, 說明java沒刪除乾淨。
9. 在oracle8.1.7中,export判斷是否使用了java,是去找"/oracle/aurora/rdbms/DbmsJava".這個物件的,如果java enabled,那麼它就會使用dbms_java做一些轉換,所以應該讓oracle找不到DbmsJava。實際上oracle是查詢檢視exu81javt來確定DbmsJava的。
在catexp.sql中,exu81javt是這樣定義的:
CREATE OR REPLACE view exu81javt (objid) AS
SELECT obj#
FROM sys.obj$
WHERE name = 'oracle/aurora/rdbms/DbmsJava'
AND type# = 29
AND owner# = 0
AND status = 1
SELECT obj#
FROM sys.obj$
WHERE name = 'oracle/aurora/rdbms/DbmsJava'
AND type# = 29
AND owner# = 0
AND status = 1
因此
修改一下:
CREATE OR REPLACE view exu81javt (objid) AS
SELECT obj#
FROM sys.obj$
WHERE name = 'oracle/aurora/rdbms/DbmsJava'
AND type# = 29
AND owner# = 0
AND status = 1
SELECT obj#
FROM sys.obj$
WHERE name = 'oracle/aurora/rdbms/DbmsJava'
AND type# = 29
AND owner# = 0
AND status = 1
AND 1 = 0 ;
grant select on exu81javt to public
10.再export,問題解決。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/166555/viewspace-787163/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 字串和日期時間的處理字串
- export 和 export default 區別Export
- 【問題處理】Windows環境下exp備份資料ORA-00904錯誤處理一例Windows
- JavaScript字串和時間處理隨筆JavaScript字串
- export和export default的區別Export
- 日誌和實時流計算處理
- 日期和時間的儲存與處理
- 實時資料處理:Kafka 和 FlinkKafka
- 網路傳輸時間和客戶端處理時間的界定(批處理應用)客戶端
- Conventional Path Export和Direct Path ExportExport
- PHP 時間處理PHP
- java時間處理Java
- ORACLE 處理時間Oracle
- bash時間處理
- LocalDate,LocalDateTime和處理時間、日期工具類LDA
- module.exports 、 exports 和 export 、 export default 、 importExportImport
- JavaScript中的export、export default、exports和module.exports(export、export default、exports使用詳細)JavaScriptExport
- 多對一處理 和一對多處理的處理
- ES6 export 和 export default的區別Export
- Python的時間、日期和時間戳的處理辦法Python時間戳
- Swift的時區處理Swift
- python 時間處理Python
- 時間處理函式函式
- PHP錯誤處理和異常處理PHP
- Java 日期和時間 API:實用技巧與示例 - 輕鬆處理日期和時間JavaAPI
- DLL的Export和ImportExportImport
- Apache Beam,批處理和流式處理的融合!Apache
- 基於flink和drools的實時日誌處理
- 使用Storm、Kafka和ElasticSearch處理實時資料 -javacodegeeksORMKafkaElasticsearchJava
- RDSforMySQLInnoDB行鎖等待和鎖等待超時的處理ORMMySql
- 集計時對於溢位的捕獲和處理
- SFP和SDP處理
- 日期時間處理包 Carbon
- JavaScript 處理WebSocket的超時JavaScriptWeb
- 搭建dataguard時,錯誤處理
- PHP中如何處理時區PHP
- SAP UI5 Gateway Export 和 Client Export 的比較UIGatewayExportclient
- ORA-06553: PLS-801: internal error [56319],以及64位oracle降級為32位的處理ErrorOracle