#java #sql #oracle #oracle11g
С помощью утилиты командной строки loadjava была загружена JAVA-библиотека в БД. Команда с параметрами: loadjava -jarsasdbobjects -resolve -verbose -thin -user login/pass@host:port:SID "sqljdbc.jar" Теперь я пытаюсь удалить эту библиотеку следующим образом: dropjava -jarsasdbobjects -resolve -verbose -thin -user login/pass@host:port:SID "sqljdbc.jar" На что я получаю ошибку: dropping: class com/microsoft/sqlserver/jdbc/ActivityCorrelator Error while dropping com/microsoft/sqlserver/jdbc/ActivityCorrelator ORA-29537: класс или ресурс не могут быть созданы или удалены напрямую И так для каждого класса в этой библиотеке. Пробовал удалять с помощью dbms_java.dropjava() и через drop java class, но ошибка была всё та же. Нужно сказать, что библиотека, загруженная без параметра -jarsasdbobjects, удалялась без проблем. Как мне правильно удалить библиотеку?
Ответы
Ответ 1
TL;DR: Полное сообщение об ошибке: $ oerr ora 29537 29537, 00000, "class or resource cannot be created or dropped directly" // *Cause: An attempt was made to create or drop a Java class or resource that // is known to result from compilation of an existing Java source object. // *Action: Act on the class or resource by acting on the source, or change // the source so that it no longer defines the class or resource. Нельзя создать или удалить Java класс, который является результатом компиляции уже существующего Java объекта с исходным кодом (object_type='JAVA SOURCE'). Простейший воиспроизводимый пример: $ echo "public class SomeClass { }" >SomeClass.java $ javac SomeClass.java $ jar -cvf SomeClass.jar SomeClass.class $ connstr="user/pass@dbserver/sevice" $ loadjava -u $connstr -r -v SomeClass.jar resolving: class SomeClass Classes Loaded: 1 $ dropjava -u $connstr -v SomeClass.jar dropping: class SomeClass Пока всё хорошо, но после: $ sqlplus -l -s $connstr <<+++ create or replace and compile java source named SomeClass as $(
Комментариев нет:
Отправить комментарий