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;
위 상황은 버그인가요? 원래 안되는 건가요? 안되는 이유나 정의가 되어있나요?