#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 $(
Комментариев нет:
Отправить комментарий