2010-03-18 2 views
1

다음 코드를 사용하여 oracle 데이터베이스에서 java 객체의 소스를 내보내려고합니다. 나는 시스템으로 실행하고 비록Oracle 데이터베이스에서 java 소스 코드를 내보내려고합니다.

oracle.aurora.rdbms.ModifyPermissionException 

: 나는 그것을 실행하려고 할 때마다

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

, 나는이 예외를 얻을. 어떤 아이디어가 이것을 일으키는 지, 어떻게 작동시킬 수 있습니까?

좀 더 조사한 결과, sysdba 및 개체를 소유 한 사용자로 실행될 때 더 효과적이었습니다. 불행히도 Oracle 데이터베이스에서 Java 객체를 덤프하는 프로그램을 만들고있어 사용자를 sysdba 또는 객체 소유자로 만들 수는 없습니다.

이 오류를 막을 방법이 있습니까?

+0

아마도 이미 실행 권한 부여를 시도 했습니까? 나는 그들이 exec privs을 가지지 않았기 때문에 시스템이 procs를 실행할 수없는 문제를 상기 한 것 같다. 이상하게 보일 지 모르지만 나는 그것이 한동안 일어난다는 것을 안다. – MJB

+0

나는 entirly 가능하다해도 나는 그것을 틀리게 생각한다. 문제는 DBMS_JAVA.EXPORT_SOURCE를 실행하고있는 것처럼 보이지만 EXPORT_SOURCE proc를 실행하여 예외적 인 부분을 얻는 것입니다. – Lionel

+0

이와 같은 작업을 수행했다면 아마 올바르게 처리 할 수 ​​있습니다. SQL> connect sys/password SQL> dbms_java에서 시스템에 grant 실행; SQL> connect system/password SQL> @script (스크립트를 실행하십시오) – MJB

답변

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

관련 문제