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