오라클에서 다른 스키마의 함수 실행(사용) 권한을 부여하기 위해서는 "GRANT EXECUTE" 구문을 사용하면 된다. 그리고 함수의 생성 또는 컴파일 권한을 부여하기 위해서는 "GRANT CREATE FUNCTION" 구문을 사용할 수 없고 "GRANT CREATE PROCEDURE" 구문을 사용하여 함수 생성 권한을 부여할 수 있다.
목차
- 함수 실행 권한 부여 (EXECUTE)
- 함수 생성 권한 부여 (CREATE)
함수 실행 권한 부여 (EXECUTE)
특정 함수의 실행 권한 부여
-- 함수 실행 권한 부여 GRANT EXECUTE ON hr.fn_helloworld TO scott; -- 함수 실행 권한 제거(회수) REVOKE EXECUTE ON hr.fn_helloworld FROM scott;GRANT EXECUTE ON [스키마.함수명] TO [사용자 계정]
다른 스키마(hr)에 생성된 특정 함수의 실행 권한을 부여하기 위해서는 GRANT 문을 사용하면 된다.
함수의 실행 권한을 제거하기 위해서는 REVOKE 문을 사용해서 권한을 회수하면 된다.
모든 함수의 실행 권한 부여
-- 모든 함수 실행 권한 부여 GRANT EXECUTE ANY PROCEDURE TO scott; -- 모든 함수 실행 권한 제거(회수) REVOKE EXECUTE ANY PROCEDURE FROM scott;특정 함수명을 지정하지 않고 모든 함수의 실행 권한을 부여하기 위해서는 EXECUTE ANY PROCEDURE 구문을 사용하면 된다.
함수 생성 권한 부여 (CREATE)
자신의 스키마에 함수 생성 권한 부여
-- 자신의 스키마에 함수 생성 권한 부여 GRANT CREATE PROCEDURE TO scott; -- 자신의 스키마에 함수 생성 권한 제거(회수) REVOKE CREATE PROCEDURE FROM scott;CREATE PROCEDURE 구문은 자신의 스키마(scott)에 함수를 생성할 수 있는 권한을 부여한다.
자신의 스키마에 함수 생성(CREATE), 수정(REPLACE), 제거(DROP)를 할 수 있다.
모든 스키마의 함수 생성 권한 부여
-- 모든 스키마에 함수 생성 권한 부여 GRANT CREATE ANY PROCEDURE TO scott; -- 모든 스키마에 함수 삭제 권한 부여 GRANT DROP ANY PROCEDURE TO scott;CREATE ANY PROCEDURE 구문은 자신의 스키마뿐만 아니라, 다른 스키마(hr 등)에 함수를 생성할 수 있다.
함수를 제거할 수 있는 DROP 권한이 필요할 경우 추가로 권한을 부여해야 한다.
-- 모든 스키마에 함수 생성 권한 제거(회수) REVOKE CREATE ANY PROCEDURE FROM scott; -- 모든 스키마에 함수 생성 삭제 제거(회수) REVOKE DROP ANY PROCEDURE FROM scott;REVOKE 문을 사용하여 권한을 제거(회수)할 수 있다.
[Oracle] 테이블 권한 부여 방법 (GRANT, REVOKE)
오라클에서 다른 스키마(사용자)에 생성된 테이블의 DML(SELECT, INSERT, UPDATE, DELETE ) 권한을 부여하기 위해서는 GRANT 문을 사용하면 된다. GRANT CREATE ANY TABLE 권한을 부여하면 다른 스키마에 테이블을.
gent.tistory.com
[Oracle] 시스템 권한 부여 방법 (GRANT, REVOKE)
오라클에서 시스템 권한을 부여하거나 회수(제거) 하기 위해서는 GRANT, REVOKE 문을 사용하면 된다. 사용자를 생성 후 시스템 권한이 부여되어야 데이터베이스 접속(로그인)이 가능하고 테이블 생
gent.tistory.com
--1. 사용자에게 부여된 시스템 권한 확인 SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = '사용자명'; --2. 사용자에게 부여된 롤 확인(시스템 권한이 롤에 포함됨) SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = '사용자명'; --3. 사용자에게 부여된 롤에 부여된 시스템 권한 확인 SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = '롤명'; --4. 타 사용자에게 부여한 객체(테이블등)권한 확인 SELECT * FROM DBA_TAB_PRIVS WHERE OWNER = '테이블소유자명'; SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = '권한부여자명';
권한 부여--1. 테이블 권한 주기 grant select, insert, update, delete on [테이블명] TO [사용자명] --2. 함수 권한 주기 grant EXECUTE on [테이블명] to [사용자명]; --3. 시퀀스 권한 주기 grant select,alter on [시퀀스명] to [사용자명];
필요시 테이블/프로시져에 대한 권한을 다른 계정에 부여할 경우가 생긴다.
예를 들어서,
EAI를 통해 타 시스템으로부터 데이터를 I/F받을 경우에
중간 I/F테이블을 구성하는 경우가 있다.
[ 타시스템 ] <-- EAI --> [ IF계정 테이블 -> [JOB[프로시져 수행] -> 업무계정 테이블] ]
이렇게되면 I/F테이블에 대한 Access권한을 업무 계정에 부여하여 사용한다.
테이블에 대한 권한부여 / 회수
GRANT ALL ON 테이블명 TO 계정; -- ALL 권한 GRANT SELECT ON 테이블명 TO 계정; -- 조회 권한 GRANT UPDATE ON 테이블명 TO 계정; -- 수정 권한 GRANT DELETE ON 테이블명 TO 계정; -- 삭제 권한 GRANT INSERT ON 테이블명 TO 계정; -- 등록 권한 REVOKE ALL ON 테이블명 FROM 계정; -- ALL 권한 REVOKE SELECT ON 테이블명 FROM 계정; -- 조회 권한 REVOKE UPDATE ON 테이블명 FROM 계정; -- 수정 권한 REVOKE DELETE ON 테이블명 FROM 계정; -- 수정 권한 REVOKE INSERT ON 테이블명 FROM 계정; -- 수정 권한GRANT의 경우 구문 마지막부분에 WITH GRANT OPTION 옵션을 넣을경우 권한을 부여받은 계정도
권한을 부여할 수 있는 권한이 생긴다.