2010-03-18 65 views
1

我想从一个oracle数据库使用下面的代码导出java对象的源代码。试图从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

你可能已经尝试过授予execute,对吗?我似乎记得有系统无法运行proc的问题,因为他们没有exec权限。似乎很奇怪,但我知道它偶尔会发生。 – MJB 2010-03-18 16:26:12

+0

我这么认为,尽管这是可能的,但我错了。事情似乎是执行DBMS_JAVA.EXPORT_SOURCE,但通过运行EXPORT_SOURCE过程获取异常部分。 – Lionel 2010-03-18 16:34:36

+0

如果你做了这样的事情,你可能是正确的: SQL> connect sys/password SQL>将dbms_java上的执行授予系统; SQL>连接系统/密码 SQL> @script(运行你的脚本) – MJB 2010-03-18 16:57:47

回答

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/[email protected] 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> 
+0

这工作,但我正在写一个工具来检索数据库中的Java代码,我不能强制用户成为sysdba。它也似乎工作,如果你作为拥有该对象的用户登录。 – Lionel 2010-03-19 15:24:17