프로시저 사용이 불가할 때의 메시지는,
대체로 '프로시저를 찾을 수 없습니다' 나
프로시저 ooo 에서 오류가 발생하였습니다.
그럼, '사용할 수 없습니다' 는 뭔 소리지..?
배경 설명을 해 보면,
DB 사용자 A 가 만든 '프로시저A' 를,
DB 사용자 B 가 '시너님A' 로 등록하여 실행해 왔던 것인데..
('프로시저A' 는 DB 사용자 A 가 만든 '테이블A' 를 select/update/insert)
DB 사용자 C 가 해당 프로시저를 컴파일 하는 시점에서
DB 사용자 B 가 만든 '시너님A' 로는
DB 사용자 C 가 컴파일한 '프로시저A' 와의 owner 관계가 끊어졌던 것.
다만, synonym 관계는 끊어지지 않음.
연결 관계가 끊어졌으면 오류 메시지가 '찾을 수 없습니다' 였을듯.
'프로시저A' 의 권한관계에는
DB 사용자 A 와 DB 사용자 B와 DB 사용자 C 가 모두 들어 있음.
그래서, DB 사용자 C 로 컴파일 해도 되는 줄 알았는데..
DB 사용자 C 로 컴파일 했을 때,
'프로시저A' 의 소유관계가 DB 사용자 C 로 넘어감.
프로시저의 이름만 같았지 owner 가 바뀐거.
DB 사용자 A 로 '프로시저A' 를 다시 컴파일 했지만,
DB 사용자 B 의 '프로시저A' 에 대한 '시너님A' 는 정상작동 하지 않음.
그래서, DB 사용자 B 의 '프로시저A' 에 대한 '시너님A' 를 drop 하고,
DB 사용자 A 가 컴파일한 '프로시저A' 에 대하여
DB 사용자 B 가 '시너님A' 를 재생성 하니 정상작동 함..
DB 사용자 A 로 작업해야 하는 것을,
DB 사용자 C 로 작업한 것이 패착..
DB 작업할 때는,
해당 사용자로 작업하자.. ^^;
'Server Oriented > DB-Oracle' 카테고리의 다른 글
프로시저에서 테이블/인덱스 생성 등 ddl 문을 실행하려면.. (0) | 2023.07.14 |
---|---|
orai18n.jar 다운로드 및 적용 (0) | 2022.11.08 |
Toad 토드, Function/Job/Procedure/Trigger 추출 (1) | 2020.05.29 |
경품 추첨 DB 로직 (1) | 2019.10.24 |
to_char(숫자,'fm90.0') 오라클 형식 (0) | 2017.10.27 |