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/
'프로그래밍 > 프로젝트' 카테고리의 다른 글
오라클 텍스트 길이 제한 확장 (1) | 2020.12.17 |
---|---|
AMD 프로세서에서 Docker Toolbox 오류 발생시 (0) | 2020.09.11 |
[데이터베이스] 바인드 변수 (Bind Variables) (0) | 2020.08.14 |