Oracle

如何正確地從 Oracle 數據庫中刪除 java 源?

  • January 19, 2019

我的 Java 原始碼有點卡在這裡。首先我想從數據庫中完全刪除它,因為我想重新編譯它,但我不能刪除它,因為如果我執行這個命令:

drop java source "SCHEMA.JAVASOURCENAME";

我收到此錯誤:

ORA-04043: object JAVASOURCENAME does not exist

Javasource 本身俱有這種結構(這是它的 plsql/java 程式碼):

create or replace and compile java source named myjavasource as

import java.io.*;
import some.custom.jar.one.*;
import some.custom.jar.two.*;
import some.custom.jar.three.*;

   public class MyJavaClass
   {
     public static String myjavafunction(String connectString, String identity, String password)
     {
      ...
     }
   }

我以 DBA 身份和我的使用者執行了這個“創建或替換並編譯 java 原始碼…”命令,我不知道這是否是問題所在。

所以我的問題是,我怎樣才能刪除這個 java 源?

我的第二個問題是誰可以處理自定義罐子?我用這個命令導入了它們:

call dbms_java.loadjava('-genmissing -r -v -force -grant SCHEMA ./some.custom.jar.one.jar');

我還以 DBA 身份和我的使用者執行了此操作。如果是檢查無效對象:

SELECT *
   FROM user_objects
   WHERE object_type like '%JAVA%'
   AND status = 'INVALID'

作為 DBA,我看到整個世界都是無效的(很多 Java 類),但是當我以使用者身份檢查時,我只會在無效列表中獲得 javasource 和 java 類名(我認為它需要更多外部 jar,我能做到的)現在找不到)。

那麼,為什麼無效的 java 對象列表與 DBA 和使用者不同?我是否需要執行 Java 源創建和 jar 導入作為 DBA(並且僅與 DBA 一起),或者如果我想與所有模式使用者一起使用它(java 函式,使用外部 jar 的內容),還是與數據庫使用者一起執行?

非常感謝!

名稱的每個元素都必須單獨引用:

drop java source "SCHEMA"."JAVASOURCENAME";

標識符"SCHEMA.JAVASOURCENAME"是指目前SCHEMA.JAVASOURCENAME模式中的 java 源名稱,例如"VORIAND"."SCHEMA.JAVASOURCENAME"

引用自:https://dba.stackexchange.com/questions/112912