다른 명령
디폴트 롤(DEFAULT ROLE)
- 롤(ROLE)을 생성하고 부여 했어도 유저가 롤을 모두 사용할 수 있는건 아님
- 유저는 디폴트로 설정된, 활성화된 롤만을 사용할 수 있음.
- USER_ROLE_PRIVS , DBA_ROLE_PRIVS 뷰의 DEFALT_ROLE 이 'YES' 인 경우만 사용가능함.
- ORA-01031: insufficient privileges 에러 발생시 DBA_ROLE_PRIVS 확인할것 .
디폴트 롤 테스트
-- 1.롤 생성 SQL> CREATE ROLE role_name; -- 2.생성된 롤에 권한 부여 SQL> GRANT SELECT, UPDATE, INSERT, DELETE on user_name.table_name to role_name; -- 3.생성된 롤을 유저에게 부여 SQL> GRANT role_name TO user_name; -- 4.유저에게 롤이 부여되었는지 확인 SQL> SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'user_name'; -- 롤이 정상적으로 생성이 되었는지 확인이 되었으면 권한을 부여한 유저로 SELECT, UPDATE, INSERT, DELETE를 해본다.
- SELECT, UPDATE, INSERT, DELETE 명령문들을 실행하였을 때 권한이 부족하다는 오류 메세지가 뜨면서 안될 때가 있음.
Error: ORA-01031: insufficient privileges 01031.00000 - "insufficient privileges" *Cause: An attempt was made to perform a database operation without the necessary privileges. *Action: Ask your database administrator or designated security administrator to grant you the necessary privileges
해결 방법
- session_roles 조회
select * from session_roles;
1) 부여한 롤을 default 값으로 만들기
alter user user_name default role hr_clerk;
2) 롤을 새롭게 set 해줌.
SQL>set role all 또는 SQL>set role role_name;