저번 시간에 생성했던 INSA 계정의 경우 HR계정의 테이블에 SELECT를 통해 조회를 하려면 다음과 같은 오류가 발생되는 것을 확인할 수 있다.

ERROR at line 1: ORA-00942: table or view does not exist
오류에는 해당 테이블이 존재하지 않는다고 표기되지만, 실제로는 해당 테이블은 존재한다.
즉 실제로 발생한 오류는 해당 테이블에 SELECT를 할 권한이 없기 때문에 오류가 발생한다.
DBA로 또는 해당 객체 소유자인 HR로 부터 권한을 부여받으면 가능하다.
DBA가 객체 권한 부여
grant select(객체권한 명) on hr.employees to insa;

분명히 DBA가 해당 권한을 부여했지만 실제로 조회해 봤을 때 부여자는 소유자(HR) 로 표기되는 것을 확인할 수 있다.
유저 입장에서 객체 권한 조회
select * from user_tab_privs;

HR 계정의 EMPLOYEES테이블에 대해 SELECT PRIVILEGE를 위임받은 것을 확인하였고 다시 해당 테이블에 SELECT 문을 진행하면 정상적으로 결과가 출력되는 것을 확인할 수 있다.

GRANT를 통해 권한을 부여하였다면 당연히 REVOKE를 통해 해당 권한을 회수할 수 있다.
REVOKE SELECT ON hr.employees from INSA;
위의 코드를 통해 hr의 employees테이블에 대해 insa의 SELECT권한의 회수를 진행하였으며
select * from user_tab_privs;
위 코드를 통해 권한이 회수된 것을 확인할 수 있다.

권한이 회수된 이후에는 해당 테이블은 자신의 소유가 아니고, 접근할 권한도 없기 때문에 SELECT를 실행할 시 오류가 발생하는 것을 확인할 수 있다.
