Oracle 권한 설정 질문 0 1 1,106

by 밤톨이 [Oracle Admin] ORA-00942 [2020.06.23 08:58:18]


A USER의 테이블 Tab_A1, Tab_A2를 A_SELECT_FOR_B라는 ROLE을 통해서
B USER에게 권한을 줬습니다.
# A USER SESSION
 - CREATE ROLE A_SELECT_FOR_B;
 - GRANT A_SELECT_FOR_B TO B;

 - GRANT SELECT ON A.Tab_A1 TO A_SELECT_FOR_B;
 - GRANT SELECT ON A.Tab_A2 TO A_SELECT_FOR_B;

당연히 B USER에서 Tab_A1, Tab_A2 테이블이 조회가 가능합니다.
# B USER SESSION
 - SELECT * FROM A.Tab_A1;
 - SELECT * FROM A.Tab_A2;

근데 B USER의 프로시저를 생성하는데, 프로시저 안에 Tab_A1, Tab_A2 테이블을 조회하면

 - ORA-00942: 테이블 또는 뷰가 존재하지 않습니다

가 발생합니다.
ROLE을 제외하고 직접 권한을 주면, ORA 에러가 발생하지 않습니다.
 - GRANT SELECT ON A.Tab_A1 TO B;
 - GRANT SELECT ON A.Tab_A2 TO B;

위 상황은 버그인가요? 원래 안되는 건가요? 안되는 이유나 정의가 되어있나요?

by 타락천사 [2020.06.23 17:22:58]

pl/sql 에서는 권한 체크 시, 롤이 아닌 사용자에게 직접 부여된 권한이 필요합니다.

참조 : https://hatssarjy.tistory.com/43

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입