본문으로 바로가기

1. 권한 부여

-- SELECT 권한 부여
GRANT SELECT ON [table_owner].[table_name] TO [leaser]

-- INSERT 권한 부여
GRANT SELECT ON [table_owner].[table_name] TO [leaser]

-- DELETE 권한 부여
GRANT SELECT ON [table_owner].[table_name] TO [leaser]

-- UPDATE 권한 부여
GRANT SELECT ON [table_owner].[table_name] TO [leaser]

-- 한꺼번에 권한 부여
GRANT SELECT, INSERT, DELETE, UPDATE ON [table_owner].[table_name] TO [leaser]


-- 사용
SELECT * FROM [table_owner].[table_name]

 

2. 권한 부여 취소

-- SELECT 권한 부여 취소
REVOKE SELECT ON [table_owner].[table_name] FROM [leaser]

-- INSERT 권한 부여 취소
REVOKE SELECT ON [table_owner].[table_name] FROM [leaser]

-- DELETE 권한 부여 취소
REVOKE SELECT ON [table_owner].[table_name] FROM [leaser]

-- UPDATE 권한 부여 취소
REVOKE SELECT ON [table_owner].[table_name] FROM [leaser]

-- 한꺼번에 권한 부여 취소
REVOKE SELECT, INSERT, DELETE, UPDATE ON [table_owner].[table_name] FROM [leaser]

 

3. 스키마의 모든 테이블에 권한 부여

안타깝게도 Oracle SQL은 모든 테이블에 적용하는 단일 SQL을 지원하지 않습니다. 따라서 일일이 적용하든지 PL/SQL을 사용해야 합니다.

CREATE PROCEDURE grant_select(
    username VARCHAR2, 
    grantee VARCHAR2)
AS   
BEGIN
    FOR r IN (
        SELECT owner, table_name 
        FROM all_tables 
        WHERE owner = username
    )
    LOOP
        EXECUTE IMMEDIATE 
            'GRANT SELECT ON '||r.owner||'.'||r.table_name||' to ' || grantee;
    END LOOP;
END; 

사용 (사용자명은 대문자로 줘야 합니다)

EXEC grant_select('OT','DW');

만약 다른 권한도 주고 싶다면 EXECUTE IMMEDIATE의 'GRANT SELECT ON ' 부분을 수정해 주면 되겠습니다.

 

 

출처

www.oracletutorial.com/oracle-administration/oracle-grant-select/

 

How To Grant SELECT Object Privilege On One or More Tables to a User

In this tutorial, you will learn how to use the Oracle GRANT statement to grant SELECT object privilege on one or more tables to a user.

www.oracletutorial.com