我正在尝试使用以下代码从oracle数据库导出java对象的源代码。
DECLARE
blob1 BLOB;
BEGIN
DBMS_LOB.CREATETEMPORARY(blob1, FALSE);
DBMS_JAVA.EXPORT_SOURCE('OBJECTNAME', 'SCHEMANAME', blob1);
END;
每当我尝试运行它时,我都会遇到这个异常:
oracle.aurora.rdbms.ModifyPermissionException
即使我作为系统运行。是什么导致了这个以及如何让它发挥作用。
调查了一下,当它作为sysdba运行时,以及拥有这些对象的用户时,它有效。不幸的是我正在制作一个程序来转储Oracle数据库中的java对象,我无法强迫我的用户成为sysdba或对象的所有者。
有什么办法可以阻止这个错误吗?
答案 0 :(得分:0)
连接时使用“as sysdba”选项。当我以sysdba身份登录时,我没有得到ModifyPermissionException。请参阅下面的操作。我得到的ORA-29532是因为我根本就没有;我的数据库中有Java类。让我知道它是否适合你。
C:\Documents and Settings\KrassimirB>sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Mar 18 15:58:10 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> connect sys/oracle@orcl as sysdba
Connected.
SQL> @C:\tmp\java_export.sql
7 /
DECLARE
*
ERROR at line 1:
ORA-29532: Java call terminated by uncaught Java exception:
java.sql.SQLException: no such java schema object
ORA-06512: at "SYS.DBMS_JAVA", line 182
ORA-06512: at line 5
SQL>
答案 1 :(得分:0)
我遇到了同样的问题,但在google上进行了几次搜索之后我解决了这个问题。可能会帮助某人。
DECLARE
b CLOB;
c varchar2(2000);
i integer:= 255;
begin
DBMS_LOB.createtemporary(b, false);
DBMS_JAVA.export_resource('<object_name>', '<schema_name>', b);
DBMS_OUTPUT.PUT_LINE('java_resource:');
DBMS_LOB.read(b, i, 1, c);
DBMS_OUTPUT.PUT_LINE(c);
end;