계정에 DB, DB 객체에 대한 접근 권한을 부여(GRANT)하고 회수(REVOKE)하는 언어
시스템 권한 : DB접속, 객체 생성 권한 (DDL)
CREATE SESSION : 데이터베이스 접속 권한
CREATE TABLE : 테이블 생성 권한
CREATE VIEW : 뷰 생성 권한
CREATE SEQUENCE : 시퀀스 생성 권한
CREATE PROCEDURE : 함수(프로시져) 생성 권한
CREATE USER : 사용자(계정) 생성 권한
DROP USER : 사용자(계정) 삭제 권한
DROP ANY TABLE : 임의 테이블 삭제 권한
객체 권한 : 특정 객체 조작 권한 (DML)
SELECT --> TABLE, VIEW, SEQUENCE
INSERT --> TABLE, VIEW
UPDATE --> TABLE, VIEW
DELETE --> TABLE, VIEW
ALTER --> TABLE, SEQUENCE
REFERENCES --> TABLE
INDEX --> TABLE
EXECUTE --> PROCEDURE
관리자 계정
: 데이터베이스의 생성과 관리를 담당하는 계정! 모든 권한과 책임을 가짐
ex) sys(최고관리자), system(sys에서 권한 몇개 제외된 관리자)
사용자 계정
: 데이터베이스에 대하여 질의, 갱신, 보고서 작성 등의 작업을 수행할 수 있는 계정!
--> 업무에 필요한 최소한의 권한만을 가지는 것을 원칙으로 함
ex) kh 계정
ALTER SESSION SET "_ORACLE_SCRIPT" = TRUE;
(sys)
CREATE USER csj_sample IDENTIFIED BY csj1234;
GRANT CREATE SESSION TO csj_sample;
GRANT CREATE TABLE TO csj_sample;
ALTER USER csj_sample DEFAULT TABLESPACE
SYSTEM QUOTA UNLIMITED ON SYSTEM;
(csj_sample)
CREATE TABLE TB_TEST(
PK_COL NUMBER PRIMARY KEY,
CONTENT VARCHAR2(100)
);
: 권한 묶음 ! --> 묶어둔 권한을 특정 계정에 부여하면 그 계정은 권한을 갖게 된다.
(sys)
GRANT CONNECT, RESOURCE TO csj_sample;
GRANT 객체권한 ON 객체명 TO 사용자명;
GRANT SELECT ON EMPLOYEE TO csj_sample;
SELECT * FROM kh.EMPLOYEE;
** 보통 KH계정(운영용DB)/ SAMPLE(테스트DB)
--> 운영용DB의 데이터를 복사해서 테스트!
CREATE TABLE EMP_SAMPLE
AS SELECT * FROM KH.EMPLOYEE;
SELECT * FROM EMP_SAMPLE;
--> 복사본이므로 원본 영향 X
REVOKE SELECT ON EMPLOYEE FROM csj_sample;