서로 연관된 테이블을 Grouping 한다.
객체의 모음에 이름을 붙인거.
ex) ace user 일 때,
create table [schema(ace)] table_name
- ace라는 user를 만들고, 그 user의 schema가 생긴다. oracle 12c에서 인스턴스 하나에
DB 여러개 생성가능. 즉 인스턴스하나 DB여러개 -> 각 DB안에 스키마 여러개 만들기 가능.
특정 sql을 사용할 수 있는 권리
- System Privilege(시스템 권한) : DBA 관리
- Object Privilege(객체 권한) : DBA 혹은 객체 소유자가 관리
C:\Users\KOSA> sqlplus system/oracle@localhost:1521/xepdb1
SQL> create user kosa01
identified by kosa01;
SQL> grant create session, create table /* 시스템 권한 */
to kosa01;
SQL> grant select /* 객체 권한 */
on ace.emp
to kosa01;
SQL> grant select, insert /* 객체 권한 */
on ace.dept
to kosa01;
SQL> revoke create session, create table
from kosa01;
SQL> revoke select
on ace.emp
from kosa01;
SQL> revoke select, insert
on ace.dept
from kosa01;
/*Role 활용*/
SQL> create role dev_role;
SQL> grant create session, create table
to dev_role;
SQL> grant select
on ace.emp
to dev_role;
SQL> grant select, insert
on ace.dept
to dev_role;
SQL> grant dev_role
to kosa01;
SQL> revoke create table
from dev_role;
SQL> grant create procedure
to dev_role;
SQL> select * from dba_tablespaces;
SQL> select * from dba_users;
SQL> select distinct privilege from dba_sys_privs order by 1;
TableSpace나 user나 권한 같은 것들 유저 생성전에 확인해 볼 필요성 있음.