Oracle SQL 강좌
롤(Role) 32 24 99,999+

by 구루비 ROLE CREATE ROLE GRANT REVOKE USER_ROLE_PRIVS [2002.01.19]


롤(ROLE) 이란 사용자에게 허가 할 수 있는 권한들의 집합 이라고 할 수 있다.

롤(ROLE) 이란?

  • - ROLE을 이용하면 권한 부여와 회수를 쉽게 할 수 있다.
  • - ROLE은 CREATE ROLE권한을 가진 USER에 의해서 생성 된다.
  • - 한 사용자가 여러개의 ROLL을 ACCESS할 수 있고, 여러 사용자에게 같은 ROLE을 부여할 수 있다.
  • - 시스템 권한을 부여하고, 취소할 때와 동일한 명령을 사용하여 사용자에게 부여하고, 취소 한다.
  • - 사용자는 ROLE에 ROLE을 부여할 수 있다.
  • - 오라클 데이터베이스를 설치하면 기본적으로 CONNECT, RESOURCE, DBA ROLE이 제공 된다.

아래의 그림처럼 DBA가 유저들에게 권한을 부여할 때 일일이 권한 하나하나씩을 지정을 한다면 몹시 불편할 것 입니다. DBA가 USER의 역할에 맞도록 ROLE을 생성하여서 ROLE만 유저에게 지정을 한다면 보다 효율적으 로 유저들의 권한을 관리 할 수 있다.

ROLE을 사용하지 않고 권한부여 ROLE을 사용하여 권한부여
롤사용하지않고권한부여 롤사용하여권한부여

ROLE 생성 문법

ROLE 생성 문법

ROLE 부여 예제

ROLE의 부여 순서
  • ① ROLE의 생성 : CREATE ROLE manager
  • ② ROLE에 권한 부여 : GRANT create session, create table TO manager
  • ③ ROLE을 사용자 또는 ROLE에게 부여 : GRANT manager TO scott, test;
	
-- ROLE을 생성 합니다.
SQL>CREATE ROLE manager;

-- ROLE에 권한을 부여 합니다.
SQL>GRANT create session, create table TO manager;

-- 권한이 부여된ROLE을 USER나 ROLE에 부여 합니다.
SQL>GRANT manager TO scott, test;
	

ROLE관련 데이터 사전

데이터 사전 설 명
ROLE_SYS_PRIVS ROLE에 부여된 시스템 권한
ROLE_TAB_PRIVS ROLE에 부여된 테이블 권한
USER_ROLE_PRIVS 현재 사용자가 ACCESS할 수 있는 ROLE
USER_TAB_PRIVS_MADE 현재 사용자의 객체에 부여한 객체 권한
USER_TAB_PRIVS_RECD 현재 사용자의 객체에 부여된 객체 권한
USER_COL_PRIVS_MADE 현재 사용자 객체의 특정 컬럼에 부여한 객체 권한
USER_COL_PRIVS_RECD 현재 사용자 객체의 특정 컬럼에 부여된 객체 권한

- 강좌 URL : http://www.gurubee.net/lecture/1010

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by yoyo [2004.04.08 16:50:35]
아주 좋은 롤이네요..역시 효률은 효률이네요..

by ERP [2004.10.14 14:20:30]
Goooooooooooooooooooooood~!!!

by 그누세상 [2005.10.15 03:46:02]
그럼 취소는
REVOKE manager FROM scott;
인지요?

by LinDol [2005.10.25 21:02:16]
유저 생성시에 했던것도 롤을 부여하는것이죠? connect랑 resource 랑 맞나요?

by smile [2005.11.09 20:38:07]
퍼갑니다. ^^

by pai [2005.12.08 09:53:30]
revoke 맞습니다~

by 시근땀 [2006.03.14 16:24:03]
revoke가 맞으면 많이 아프겠죠?

by 아웅 [2006.03.14 20:44:15]
저기.. 전강의에 있는 데이터사전뷰 하구요 바로 위의 Dictionary 뷰, 내용은 뭐고 어디에 쓰는건가요?

by 아잉~ [2006.07.14 20:27:41]
딕셔너리 뷰의 내용을 봐보면 옆에 글이 이해가 가실듯 싶네여..
너무 늦은 답변이지만..
select * from USER_TAB_PRIVS;
이런 식으로... ㅎ

by Javakiller [2006.07.17 18:21:56]
drop role manager;

by kaiger [2006.12.07 17:45:25]
감사요~

by 초보 [2007.09.12 10:20:30]
질문이 있습니다.
혹시 user1에 부여되어진 role이 뭐뭐 잇는지는 어떻게 검색해서 봐야 할까요?

by 웅 [2007.09.16 00:12:52]
SELECT * FROM USER_ROLE_PRIVS

by 김윤경 [2007.10.24 18:02:57]
지금은 잘 모르지만 나중에 다시 봐야겠어요/.

by 김광오 [2008.01.06 16:15:44]
템플릿과 비슷한 역할을 것이군

by 초보 [2009.02.11 16:11:27]
CREATE ROLE manager 이라고 만들고 권한을 줬을 때
후에 manager의 권한이 뭐가 있는지 보고싶다면 어떻게 해야하나요?

by 초보 [2009.02.11 16:43:07]
select * from role_sys_privs where role = 'MANAGER' 이네요..;;
role명을 소문자로 하면 안되네요.;; 나만 모르는..;;;

by 궁금 [2010.03.25 13:04:55]
시스템 권한 종류 중에
role : 부여할 데이터베이스 역할의 이름 이라고 설명이 되있었는데
role 은 사용자에게 허가할 수 있는 권한들의 집합 이라고 정의 하잖아요
부여할 데이터베이스 역할의 이름 <-- 이게 무슨말인지 이해가 안가요


by jhj [2010.08.10 10:40:32]
감사합니다. 제 블로그에 올려도 될지요. 출처도 게시하겠습니다.

by 김창환 [2010.10.08 18:31:31]
잘보고갑니다.

by univer09 [2011.10.13 17:06:44]
create role manager;
grant create session,create table to manager;
grant manager to user1.user2;

by 돌이맹이 [2012.02.23 16:45:12]
쉽게 설명 잘 되어 있네요^^

by zandi [2012.09.18 14:35:55]
평소에는 해보지 않았던 것들을 회사에서 한번 씩 돌려보게 되네요.

by 이리나인 [2012.12.17 18:25:03]

처음부터 하나하나 하고있는데
정말 많은 도움이 됩니다!!
감사합니다 ^^

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