티스토리 뷰

고객사에 가서 프로시져 및 함수를 배포 하는데 아래와 같은 오류(ORA-38824)가 발생했다. 


내부적으로 개발 서버에서는 이상이 없는데 고객사에서만 나는 오류이다.
구글에서 찾아보면 EDITIONABLE 옵션을 프로시져 및 함수명 앞에 쓰면 된다고 하는데... 잘 안되는 것 같다.
ORA-38824: 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.

따라서 우선 사용자 권한 및 역할을 개발 DB와 맞출 예정이다.
select * from dba_role_privs where grantee = '사용자명'
select grantee, privilege, admin_option from dba_sys_privs where grantee = '사용자명'

그이후에는 해당 함수 및 프로시져명의 editionable 옵션을 확인 예정이다.
--ditionable 옵션 확인
select * from ALL_OBJECTS where owner = '사용자명' and upper(object_name) = upper('객체명') and editionable = 'Y'
--위의 쿼리에서 editionable이 Y이면 프로시저, 함수를 drop시키고 재배포 예정이다.
drop procedure 프로시져명;
drop function 함수명; 

--컴파일
alter procedure 프로시저명 compile;
alter function 함수명 compile;

댓글
댓글쓰기 폼