HI 各位大大好
我參考了下面這個文章,想要寫一個UDP發送的功能
https://www.cnblogs.com/ser0632/p/4920154.html
java程式
create or replace and resolve java source named udp
as
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class udp {
public static String send(String ip,String port,String msg){
try{
int int_port=Integer.parseInt(port); //字串轉數字
DatagramSocket ds = new DatagramSocket();
DatagramPacket dp = new DatagramPacket(msg.getBytes(), msg.length(), InetAddress.getByName(ip), int_port);
ds.send(dp);
ds.close(); // 關閉連接
return "Successfully";
}catch(Exception e){
return "Failed";
}
}
}
function
create or replace FUNCTION udpsend(
p_ip in varchar2,--IP地址
p_port in varchar2,--port
p_msg in varchar2 --訊息内容
) return varchar2 is
language java name 'udp.send(java.lang.String,java.lang.String,java.lang.String) return java.lang.String';
但我執行function的時候,會出現以下錯誤
ORA-29516: Aurora 主張失敗: Assertion failure at eoxdebug.c:105
jondsp_init_i_ds is not yet implemented
ORA-06512: 在 "USER.UDPSEND", line 1
ORA-06512: 在 line 11
想請問有什麼解決方法嗎
資料庫版本 oracle 12c(Release 12.2.0.1.0 - 64bit Production)
教程本身是正確的. (當然權限問題不在討論內容)
從 google 上看, 問題似乎出在 java 版本上. (因為你直接用 ORACLE_HOME 裡面的 jdk 做編譯, 所以不存在不同版本相容問題) 我唯一的建議是打上 OJVM 補丁然後再試試. 另外為了避免各種權限問題, 我贊成教程作者第一次測試時使用 sys. 上生產線前搞定權限就好
另外, 確認下你的 jdk 版本:
$ORACLE_HOME/jdk/bin/java -version
我的測試環境是 19.9 OEL7 PDB (202010RU), ORACLE_HOME 的 jdk 版本是 jdk8u261
HI pojen 大大你好
$ORACLE_HOME/jdk/bin/java -version 的版本是
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b61)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b61, mixed mode)
另外想問一下 唯一的建議是打上 OJVM 補丁然後再試試
這句話是什麼意思? 抱歉 我是oracle的新手不太明白,再麻煩解惑了謝謝
HI pojen 大大你好
另外我有看到這篇,想問問你oracle執行的平台是?
因為我是用windows,不知道是不是這個原因....
https://community.oracle.com/tech/developers/discussion/4118579/assertion-failure-at-eoxdebug-c-due-to-datagramsocket
Oracle 有每季補丁. 補丁通常有四個, Database (DB), Grid Infrastructure (GRID), Oravle Java VM (OJVM) 與 ACFS. 一般來說如果是單機 Oracle, 那只需要 DB 補丁. 但偶而遇到奇怪的 Java 錯誤就需要 OVJM 補丁. 我遇過因為 DB 補丁打上後資料庫無法開啟, 解決方案是同步打上 OVJM 補丁. 所以最新的 DB 補丁開始加入 OJVM. (唯一的問題是大部分的 OVJM 補丁需要重啟資料庫, 這對於資料庫管理員來說是很討厭的事)
我的環境是 Oracle (Enterprise) Linux 7.9x64 (kernel 5.4.17-2036)
只在 windows 上出現? 這是有可能的, 但唯一的方案大概是打補丁. (試過開技術支援要求, SR 嗎? 他們應該可以給你更具體的建議)