행위

오라클 DEFAULT ROLE

DB CAFE

Dbcafe (토론 | 기여)님의 2024년 7월 4일 (목) 18:34 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
thumb_up 추천메뉴 바로가기


1 디폴트 롤(DEFAULT ROLE)[편집]

  1. 롤(ROLE)을 생성하고 부여 했어도 유저가 롤을 모두 사용할 수 있는건 아님
  2. 유저는 디폴트로 설정된, 활성화된 롤만을 사용할 수 있음.
    1. USER_ROLE_PRIVS , DBA_ROLE_PRIVS 뷰의 DEFALT_ROLE 이 'YES' 인 경우만 사용가능함.
  3. ORA-01031: insufficient privileges 에러 발생시 DBA_ROLE_PRIVS 확인할것 .

1.1 디폴트 롤 테스트[편집]

-- 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


1.2 해결 방법[편집]

  • 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;