2010-03-19 3 views
0

J'essaie d'obtenir la source d'une ressource java stockées dans une base de données Oracle en utilisant ce code (connexion en tant que SYSTEM pour les essais):SecurityException lorsque vous essayez d'exporter une ressource java

DECLARE 
    javalob CLOB; 
BEGIN 
    DBMS_LOB.CREATETEMPORARY(javalob, false); 
    DBMS_JAVA.EXPORT_RESOURCE('RESOURCENAME', 'SCHEMA', javalob); 
    DBMS_OUTPUT.PUT_LINE(javalob); 
END; 

Mais lorsque je tente pour l'exécuter je reçois ceci:

Java call terminated by uncaught Java exception: java.lang.SecurityException: cannot read <Resource Handle: RESOURCENAME|SCHEMA|301> because SYSTEM does not have execute privilege on it 

cette chose est, je ne sais pas comment accorder des autorisations sur <Resource Handle: RESOURCENAME|SCHEMA|301>, car ce n'est pas un SQL ou d'un objet PL/SQL. Et pourquoi SYSTEM n'a-t-il pas accès à cela?

+0

FWIW, cette page est actuellement la seule page trouvée par Google pour une recherche sur « parce que le système n'a pas droit d'exécution dessus". –

+0

Sûrement quelqu'un d'autre a déjà rencontré ce problème avant? – thecoop

Répondre

0

la procédure ci-dessous dans DBMS_JAVA package peut résoudre votre problème:

PROCEDURE grant_permission(
    grantee varchar2, 
    permission_type varchar2, 
    permission_name varchar2, 
    permission_action varchar2) 

http://download.oracle.com/docs/cd/B14117_01/java.101/b12021/security.htm#i1005789

+0

Que dois-je utiliser pour 'permission_type',' permission_name' et 'permission_action'? – thecoop

+0

ma réponse en tant qu '"appel grant_permission" peut ne pas être correcte, pouvez-vous s'il vous plaît essayez d'accorder l'exécution sur java RESOURCENAME pour SYSTEM comme: subvention exécuter sur ressource java RESOURCENAME ... – gokhant

Questions connexes