试图从 Oracle 数据库中导出 java 源代码

Posted

技术标签:

【中文标题】试图从 Oracle 数据库中导出 java 源代码【英文标题】:trying to export java source code from an Oracle database 【发布时间】:2010-03-18 16:20:32 【问题描述】:

我正在尝试使用以下代码从 oracle 数据库中导出 java 对象的源代码。

DECLARE
  blob1 BLOB;
BEGIN
  DBMS_LOB.CREATETEMPORARY(blob1, FALSE);
  DBMS_JAVA.EXPORT_SOURCE('OBJECTNAME', 'SCHEMANAME', blob1);  
END;

每当我尝试运行它时,我都会收到此异常:

oracle.aurora.rdbms.ModifyPermissionException

即使我以 System.任何想法是什么导致了这种情况以及我如何让它发挥作用。

经过深入调查后,它在以 sysdba 和拥有对象的用户身份运行时工作。不幸的是,我正在制作一个程序来转储 Oracle 数据库中的 java 对象,但我不能真正强迫我的用户成为 sysdba 或对象的所有者。

有什么办法可以阻止这个错误?

【问题讨论】:

您可能已经尝试过授予执行权限,对吧?我似乎记得有系统无法运行 procs 的问题,因为它们没有 exec privs。看起来很奇怪,但我知道它偶尔会发生。 我想是的,尽管我完全有可能弄错了。问题是它似乎正在执行 DBMS_JAVA.EXPORT_SOURCE,但在运行 EXPORT_SOURCE 过程的过程中出现了异常。 如果你做了这样的事情,你可能做对了: SQL> connect sys/password SQL> grant execute on dbms_java to system; SQL> 连接系统/密码 SQL> @script (运行你的脚本) 好吧,我又做了一次以确保它仍然无法正常工作,所以我想这不是问题。 【参考方案1】:

连接时使用“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>

【讨论】:

这可行,但我正在编写一个工具来检索数据库中的 java 代码,我不能强制用户成为 sysdba。如果您以拥有该对象的用户身份登录,它似乎也可以工作。【参考方案2】:

我遇到了同样的问题,但在谷歌上搜索了几次后,我解决了。可能会帮助某人。

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;

【讨论】:

以上是关于试图从 Oracle 数据库中导出 java 源代码的主要内容,如果未能解决你的问题,请参考以下文章

从oracle数据库中导出大量数据到excel中为啥自动分成了好几个excel文件

在 oracle 中导出脚本中的更改(使用 Toad ?)

java从ldap中导出数据到ldif文件中

Oracle 中导出excel的方法

似乎可以从 bash 脚本中导出环境变量

无法从 Marmoset 工具包中导出 Gltf 模型动画