Data Control Language, 즉 database 제어에 대한 privilige를 부여하거나(grant) 회수(revoke)에 관련된 언어. 또한 Transaction을 제어하는 TCL명령어(commit, rollback, savepoint)도 넓은 범위에서 여기에 포함된다.
Syntax for creating user/granting Priviliges:
--Creating User
create user ACCOUNT-NAME identified by USERPASSWORD;
default tablespace to user/system
--grant privilige for connect:
grant connect to ACCOUNT-NAME;
--grant resource-role to user
grant resource to ACCOUNT-NAME;
...
--CREATE USER ACCOUNT
create user TestAcc identified by 1111;
default tablespace to user;
--UNLOCK THE ACCOUNT
alter user park account unlock;
--GRANT PRIVILEGE FOR CONNECT/RESOURCE ROLE
grant connect to TestAcc;
grant resource to TestAcc;
--GRANT PRIVILIGE FOR ACCESS TO TABLE
grant select on codepark.tbl_test to park;
--GRANT PRIVILIGE FOR CRUD TO ACCOUNT
grant insert, select, update, delete on employee from park;
--REVOKE THE PRIVILIGES FROM ACCOUNT
revoke insert, select, update, delete on employee from park;
가장 기초적인 Privilige(권한)을 부여하는 코드. 신규 계정 생성 단계에서 해당 계정에 일일히 새로운 권한을 부여하는 방법보다는, resource Role을 부여하는 방법이 널리 쓰인다. 여기서 role이란 privilige의 묶음이라 보면 되며, 개체 생성의 권한 역시 포함되어 있다. 해당 계정에 권한을 부여한 후 cmd(window+R)에 command를 입력하는 방식으로도 확인이 가능한데, 먼저 sqlplus -> conn USER-NAME/IDENTIFIED-Val의 입력으로 손쉬운 connect와 disconn USER-NAME/IDENTIFIED-Val을 통한 disconnect가 가능하고 이후 Oracle DB에서 가능한 모든 작업을 sqlplus에 입력할 수 있다. 단, sqlplus CMD에서 데이터를 추가한 경우 별도로 commit을 진행해야 해당 데이터가 DB서버에 반영된다.
resource Role과 같이 기존의 role을 Account에 부여하는 방법도 있지만, 사용자가 직접 privilige의 집합으로써 Role을 생성하고 계정에 부여하여 관리할 수 있다. 이러한 경우는 우선 관리자로부터 create role 권한을 부여받아 진행되며 그 과정은 다음과 같다:
더불어 권한 회수는 다음과 같이 진행된다:
revoke ROLENAME from ACCOUNT-NAME;