АГ в телеграм-чате писал(а): Всем добрый день!
Подскажите, встречался ли кто-то с ошибкой "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.
12:57 четверг 22 августа 2024 г. завершился вебинар
"Инструменты миграции. Ora2PG - когда инструмент не работает и что делать?!"
Здесь вы найдете Запись и материалы вебинара
"Инструменты миграции. Ora2PG - когда инструмент не работает и что делать?!"
Здесь вы найдете Запись и материалы вебинара
ORA-38824: A CREATE OR REPLACE command may not change the EDITIONABLE property of an existing object.
ORA-38824: A CREATE OR REPLACE command may not change the EDITIONABLE property of an existing object.
Re: ORA-38824: A CREATE OR REPLACE command may not change the EDITIONABLE property of an existing object.
Посмотрите, что установлено у существующего объекта: 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.
Из доки на 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.
Re: ORA-38824: A CREATE OR REPLACE command may not change the EDITIONABLE property of an existing object.
АГ в телеграм-канале писал(а): Это уже всё проверили, объясняю в чём проблема: после миграции, при попытке внести изменения в пакет получаем ошибку ora-38824 и невозможность скомпилировать пакет.
На данный момент решение состоит в пересоздания пакета (удалили существующий и его же пересоздали), после этого пакет компилируется. Если будут найдены другие решения, отпишусь.
Re: ORA-38824: A CREATE OR REPLACE command may not change the EDITIONABLE property of an existing object.
Проблема воспроизводится на Oracle 19.13 при попытке CREATE OR REPLACE EDITIONABLE... для объекта, который NONEDITIONABLE.
На Oracle 19.18.0.1 и 21.4 ошибка не воспроизводится.
Код: Выделить всё
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.