Oracle 데이터베이스 오류 코드 ORA-38824 CREATE OR REPLACE 명령이 기존 객체의 EDITIONABLE 속성을 변경할 수 없습니다.
오라클 임포트를 하거나 프로시저, 펑션 등을 생성 후 아래와 같은 오류가 발생하여 프로시저나 펑션 등이 수정이 안될때가 있다.
이럴때는 해당 오브젝트의 옵션을 바꿔주면 수정이 가능하다.
오류 코드: ORA-38824
설명: CREATE OR REPLACE 명령이 기존 객체의 EDITIONABLE 속성을 변경할 수 없습니다.
원인: 기존 오브젝트를 EDITIONABLE 특성의 다른 값으로 바꾸려고했습니다.
조치: REPLACE 문에서 EDITIONABLE 특성을 전환하거나 REPLACE 문의 EDITIONABLE 특성과 일치하는 EDITIONABLE 특성을 갖도록 기존 오브젝트를 변경하십시오.
오류 코드: ORA-38824
설명: A CREATE OR REPLACE command may not change the EDITIONABLE property of an existing object.
원인: An attempt was made to replace an existing object with a different value for the EDITIONABLE property.
조치: 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.
ALTER PROCEDURE 유저.프로시저명 NONEDITIONABLE;
ALTER FUNCTION 유저.펑션명 NONEDITIONABLE;
수정이 안되는 프로시저나 펑션을 위의 쿼리를 실행하면 수정 가능하게 옵션이 바뀐다.
다만 수정 할 객체들이 많을 때는 하나씩 찾아서 입력해주기가 여간 귀찮다.
이럴때는 수정이 불가능한 객체들을 한번에 조회하는 쿼리를 만들어 주고 조회된 결과를 복붙하여 실행해주면된다.
select
'ALTER ' || OBJECT_TYPE || ' ' || owner || '.' || object_name || ' NONEDITIONABLE;' as sql
from ALL_OBJECTS
where lower(owner) = '유저'
and editionable = 'Y';