2020. 6. 30.

[Oracle] 관리자 8장 실습 2


CREATE USER <user >
IDENTIFIED BY <암호>
DEFAULT TABLESPACE <tablespace >
TEMPORARY TABLESPACE <tablespace >
QUOTA <크기> ON <tablespace >, ......
[ACCOUNT {LOCK / UNLOCK}]
[PROFILE {<profile> / DEFAULT}]
  • User를 생성한다.
  • DEFAULT TABLESPACE : User의 기본 tablespace
  • TEMPORARY TABLESPACE : User의 기본 temporary tablespace
  • QUOTA : tablespace별 허용된 저장량
  • ACCOUNT : 계정 잠금 설정
  • PROFILE : 적용될 PROFILE 지정
  • CREATE 문장은 ALTER 문장과 형식이 동일하다.
SELECT username, tablespace_name, max_bytes, max_blocks FROM dba_ts_quotas;
  • 각 사용자의 tablespace quota량을 조회한다.
  • MAX_BYTES : 할당된 quota (byte단위)
  • MAX_BLOCKS : 할당된 quota (block개수)
  • quota unlimited로 지정되어 제한하지 않는 경우 -1로 표시된다.

SELECT tablespace_name, bytes, file_name FROM dba_data_files;


CREATE TABLESPACE te
DATAFILE
'/app/ora12c/oradata/disk1/te01.dbf' SIZE 3M,
'/app/ora12c/oradata/disk2/te02.dbf' SIZE 3M;

CREATE TABLESPACE st
DATAFILE
'/app/ora12c/oradata/disk2/st01.dbf' SIZE 3M,
'/app/ora12c/oradata/disk1/st02.dbf' SIZE 3M;

CREATE TABLESPACE indx
DATAFILE
'/app/ora12c/oradata/disk1/indx01.dbf' SIZE 2M,
'/app/ora12c/oradata/disk2/indx02.dbf' SIZE 2M;


SELECT tablespace_name, bytes, file_name FROM dba_data_files;


SELECT tablespace_name, status, contents,
extent_management, segment_space_management
FROM dba_tablespaces;


CREATE USER te
IDENTIFIED BY te
DEFAULT TABLESPACE te
TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON te
QUOTA 2M ON st
QUOTA 2M ON indx;

CREATE USER st0
IDENTIFIED BY st0
DEFAULT TABLESPACE st
TEMPORARY TABLESPACE temp;

CREATE USER st1
IDENTIFIED BY st1
DEFAULT TABLESPACE st
TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON st
QUOTA 2M ON indx;

CREATE USER st2
IDENTIFIED BY st2
DEFAULT TABLESPACE st
TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON st
QUOTA 2M ON indx
ACCOUNT LOCK;


GRANT connect, resource TO te, st1, st2;

SELECT username, default_tablespace, temporary_tablespace, account_status, profile
FROM dba_users
ORDER BY 1;


SELECT username, tablespace_name, max_bytes, max_blocks FROM dba_ts_quotas
WHERE lower(username) IN ('te', 'st0', 'st1', 'st2')
ORDER BY 1;


SELECT grantee, granted_role FROM dba_role_privs
WHERE lower(grantee) IN ('te', 'st0', 'st1', 'st2')
ORDER BY 1;
CONNECT resource 권한이 아니라 권한의 묶음인 role이다. 이에 관해서는 다음 장에서 실습한다.

SELECT grantee, privilege FROM dba_sys_privs
WHERE lower(grantee) IN ('te', 'st0', 'st1', 'st2')
ORDER BY 1;
사용자에게 할당된 system 권한을 조회 한다.
unlimited tablespace 권한은 role 할당 되지 않지만 resource role 할당하면 자동으로 할당된다. 버전에 따라 다름으로 확인한다.

SELECT grantee, owner, table_name, grantor, privilege
FROM dba_tab_privs
WHERE lower(grantee) IN ('te', 'st0', 'st1', 'st2')
ORDER BY 1;
사용자에게 할당된 object 권한을 조회 한다.


CONN st1/st1

CONN st2/st2
st2 st1 권한이 동일 하지만 lock 설정되어 사용이 불가능 하다.

CONN st0/st0
st0 lock 설정되지는 않았지만 'CREATE session' 권한이 없어서 접속할 없다. 'CREATE session' 권한은 CONNECT role 포함되어 있다.

CONN / AS sysdba


GRANT create session TO st0;
st0 CREATE session 권한을 할당한다.

ALTER USER st2
ACCOUNT UNLOCK;
st2 OPEN으로 설정한다.

CONN st0/st0
CONN st2/st2



댓글 없음:

댓글 쓰기