A 유저가 만든 프로시저안에서 B유저 소유의 테이블 BBB를 Select 하려고A 유저에서 BBBB테이블에 대한 Synonym 을 만들었습니다...물론 B유저에서 A유저가 BBB테이블을 Select할 수 있도록 Grant시켜주었죠.
sqlplus에서는 당근 select가 됩니다.
하지만 A유저로 프로시저를 만들어 해당 Synonym을 사용하면 존재하지 않는
테이블이라고 나오네요..(A, B 유저 모두 DBA 권한을 준 상태입니다.
시노님의 문제가 아닙니다.
원래 프로시져등에서는 Role을 통해서 부여된 권한이 보안상 이유로 전부 무효화 됩니다. 따라서 DBA권한이 주어졌다고 해도 엑세스 권한이 없습니다.
해결책은 직접 권한을 부여해주세요.
1. B유저로 로그인한다.
2. grant select, insert, delete, update on table_name to A ; -- A유저에게 롤을 통하지 않고 권한을 직접준다.
그리고 편하다는 이유로 일반 유저 계정에 "DBA"나 "Drop Any Table"같은 권한을 함부로 부여하지 마시기 바랍니다.
우리나라 보안 의식도 엉망인데 DB보안은 더 엉망입니다.
오라클의 경우 굉장히 복잡한 보안관리 체계를 갖추고 있는데... grant dba하는 순간 그걸 무용지물로 만들어버리는겁니다.
sys, system 암호를 디폴트 그대로 쓰는건 비일비재고... DBA롤을 남용하거나... 유저 아이디와 암호가 동일한 경우가 굉장히 많다면 믿어지시겠습니까?