기타/기타

Oracle 데이터베이스 오류 코드 ORA-38824 CREATE OR REPLACE 명령이 기존 객체의 EDITIONABLE 속성을 변경할 수 없습니다.

뚠윤 2023. 3. 10. 09:02
300x250

오라클 임포트를 하거나 프로시저, 펑션 등을 생성 후 아래와 같은 오류가 발생하여 프로시저나 펑션 등이 수정이 안될때가 있다.

이럴때는 해당 오브젝트의 옵션을 바꿔주면 수정이 가능하다.

 

오류 코드: 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.

 

320x100
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';

위의 쿼리를 실행하면 위와같은 결과가 생성된다.

 

반응형

 

728x90
반응형