Можем ли мы удалить записи из мета-словаря - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь перекомпилировать один из файлов .Java в Oracle 11g и получаю следующую ошибку:

$ . /dboracle/orabase/product/11.2.0.BTSP8/bin/loadjava -verbose -resolve -synonym -user nm/nm -grant PUBLIC DeviceAttribParserConstants.java
arguments: '-user' 'nm/***' '-verbose' '-resolve' '-synonym' '-grant' 'PUBLIC' ' DeviceAttribParserConstants.java'
creating : source com/bt/nmsloader/model/DeviceAttribParserConstants
loading  : source com/bt/nmsloader/model/DeviceAttribParserConstants
Error while creating source com/bt/nmsloader/model/DeviceAttribParserConstants
    ORA-29542: class com/bt/nmsloader/model/DeviceAttribParserConstants already defined by source DeviceAttribParserConstants/java
ORA-06512: at line 1

The following operations failed
    source com/bt/nmsloader/model/DeviceAttribParserConstants: creation (createFailed)
exiting  : Failures occurred during processing

Когда я посмотрел в мета-словаре ALL_Objects, я не нашелJAVA SOURCE, но я вижу только JAVA CLASS для DeviceAttribParserConstants.

Теперь, когда я пытаюсь перекомпилировать, я получаю ошибку выше, и если я сбрасываю тот же файл класса JAVA, то я получаю ошибку, как показано ниже:

ORA-29537: class or resource cannot be created or dropped directly. 
ORA-06512: at line1
* Cause: An attempt was made to create or drop JAVA class or resources that is a known result from compilation of an existing JAVA Source object.

Я застрял.Может ли кто-нибудь помочь мне решить эту ошибку.

Заранее большое спасибо.

С уважением, Химми Чаухан

1 Ответ

0 голосов
/ 29 января 2019

Можем ли мы удалить записи из Мета-словаря

Вы не должны, так как это может повредить вашу базу данных.

Теперь, когда я пытаюсьперекомпилируйте, тогда я получаю вышеуказанную ошибку, и если я сбрасываю тот же файл класса JAVA, то я получаю ошибку, как показано ниже:

ORA-29537: class or resource cannot be created or dropped directly. 
ORA-06512: at line1
* Cause: An attempt was made to create or drop JAVA class or resources that is a known result from compilation of an existing JAVA Source object.

Утилита loadjava имеетforce опция:

-force      Forces files to be loaded, even if they match digest table entries.

Итак, вы можете попробовать:

loadjava -verbose -force -resolve -synonym -user nm/nm -grant PUBLIC DeviceAttribParserConstants.java

Вы также можете попробовать удалить существующий объект Java :

SELECT OWNER, OBJECT_NAME
FROM   ALL_OBJECTS
WHERE  OWNER = 'NM'
AND    OBJECT_NAME LIKE '%DeviceAttribParserConstants';

DROP JAVA CLASS NM.<insert_object_name>

, а затем попробуйте использовать loadjava без параметра force.

(Вы можете попробовать сделать резервную копию существующего файла класса , прежде чем вы просто удалите / перезапишите егоесли вам нужно вернуться к предыдущей версии.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...