12:57 четверг 22 августа 2024 г. завершился вебинар
"Инструменты миграции. Ora2PG - когда инструмент не работает и что делать?!"
Здесь вы найдете Запись и материалы вебинара

ORA-38824: A CREATE OR REPLACE command may not change the EDITIONABLE property of an existing object.

Всё по теме СУБД Oracle: установка, настройка, использование, решение проблем и т.д. и т.п. и др. и пр.
Ответить
Аватара пользователя
SQL*Plus
Сообщения: 248
Зарегистрирован: Ср апр 20, 2022 1:09 pm

ORA-38824: A CREATE OR REPLACE command may not change the EDITIONABLE property of an existing object.

Сообщение SQL*Plus »

АГ в телеграм-чате писал(а): Всем добрый день!

Подскажите, встречался ли кто-то с ошибкой "ORA-38824: A CREATE OR REPLACE command may not change the EDITIONABLE property
of an existing object.",

при переезде с oracle12
на oracle 19c? Как можно её пофиксить? Гугл не помогает)

Cause: An attempt was made to replace an existing object with a different value for the EDITIONABLE property.

Action: Switch the EDITIONABLE property in the REPLACE statement, or alter the existing object to have an EDITIONABLE property matching the EDITIONABLE property in the REPLACE statement.
Аватара пользователя
SQL*Plus
Сообщения: 248
Зарегистрирован: Ср апр 20, 2022 1:09 pm

Re: ORA-38824: A CREATE OR REPLACE command may not change the EDITIONABLE property of an existing object.

Сообщение SQL*Plus »

Посмотрите, что установлено у существующего объекта: EDITIONABLE или NOEDITIONABLE ?

Из доки на Oracle 19c для команды CREATE FUNCTION:

[ EDITIONABLE | NONEDITIONABLE ]
Use these clauses to specify whether the function is an editioned or noneditioned object if editioning is enabled for the schema object type FUNCTION in schema. The default is EDITIONABLE.
Аватара пользователя
SQL*Plus
Сообщения: 248
Зарегистрирован: Ср апр 20, 2022 1:09 pm

Re: ORA-38824: A CREATE OR REPLACE command may not change the EDITIONABLE property of an existing object.

Сообщение SQL*Plus »

АГ в телеграм-канале писал(а): Это уже всё проверили, объясняю в чём проблема: после миграции, при попытке внести изменения в пакет получаем ошибку ora-38824 и невозможность скомпилировать пакет.

На данный момент решение состоит в пересоздания пакета (удалили существующий и его же пересоздали), после этого пакет компилируется. Если будут найдены другие решения, отпишусь.
Аватара пользователя
SQL*Plus
Сообщения: 248
Зарегистрирован: Ср апр 20, 2022 1:09 pm

Re: ORA-38824: A CREATE OR REPLACE command may not change the EDITIONABLE property of an existing object.

Сообщение SQL*Plus »

Проблема воспроизводится на Oracle 19.13 при попытке CREATE OR REPLACE EDITIONABLE... для объекта, который NONEDITIONABLE.

Код: Выделить всё

SQL> SELECT banner_full FROM v$version;

BANNER_FULL                                                                                                                                                     
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.13.0.0.0


SQL> 
SQL> CREATE NONEDITIONABLE FUNCTION test_func_1 RETURN VARCHAR2
  2  IS BEGIN RETURN 'I am function TEST_FUNC_1'; END;
  3  /
Function TEST_FUNC_1 compiled

SQL> 
SQL> CREATE OR REPLACE NONEDITIONABLE FUNCTION test_func_1 RETURN VARCHAR2
  2  IS BEGIN RETURN 'I am function TEST_FUNC_1'; END;
  3  /
Function TEST_FUNC_1 compiled

SQL> 
SQL> CREATE OR REPLACE EDITIONABLE FUNCTION test_func_1 RETURN VARCHAR2
  2  IS BEGIN RETURN 'I am function TEST_FUNC_1'; END;
  3  /

Error starting at line : 15 in command -
CREATE OR REPLACE EDITIONABLE FUNCTION test_func_1 RETURN VARCHAR2
IS BEGIN RETURN 'I am function TEST_FUNC_1'; END;
Error report -
ORA-38824: A CREATE OR REPLACE command may not change the EDITIONABLE property of an existing object.
38824. 00000 -  "A CREATE OR REPLACE command may not change the EDITIONABLE property of an existing object."
*Cause:    An attempt was made to replace an existing object with a different
           value for the EDITIONABLE property.
*Action:   Switch the EDITIONABLE property in the REPLACE statement, or alter
           the existing object to have an EDITIONABLE property matching the
           EDITIONABLE property in the REPLACE statement.
На Oracle 19.18.0.1 и 21.4 ошибка не воспроизводится.
Ответить