2020. 6. 30.

[Oracle] 관리자 8장 실습 3


Quota User

SQL> SELECT u.username, u.default_tablespace, max_bytes, max_blocks
2 FROM dba_users u, dba_ts_quotas q
3 WHERE u.username = q.username
4 AND u.default_tablespace = q.tablespace_name;
- 사용자의 DEFAULT TABLESPACE quota량을 조회한다.
SQL> ALTER USER <user >
2 QUOTA <크기> ON <tablespace >;
- User quota 량을 조정한다.

SELECT username, tablespace_name, max_bytes, max_blocks FROM dba_ts_quotas
WHERE lower(username) IN ('te', 'st0', 'st1', 'st2')
ORDER BY 1;
확인 결과 st0 quota가 없다. dba_ts_quotas quota 설정된 user만 표시된다.

SELECT u.username, u.default_tablespace, max_bytes, max_blocks
FROM dba_users u, dba_ts_quotas q
WHERE u.username = q.username
AND u.default_tablespace = q.tablespace_name
AND lower(u.username) IN ('te', 'st0', 'st1', 'st2');
User DEFAULT TABLESPACE quota -1 제한하지 않는다는 뜻이다.


CONN te/te

CREATE TABLE te (no NUMBER);
quota 할당된 사용자는 segment 생성에 문제가 없다.


SELECT table_name, tablespace_name FROM user_tables;

CONN st0/st0

CREATE TABLE st0 (no NUMBER);
st0에게는 table 생성 있는 권한이 없다.


CONN / AS sysdba

SELECT grantee, privilege FROM dba_sys_privs
WHERE grantee = 'ST0';

GRANT create table TO st0;
st0에게 table table 생성하는 권한을 할당한다.

SELECT grantee, privilege FROM dba_sys_privs
WHERE grantee = 'ST0'; 
st0의 시스템 권한을 조회한다.


CONN st0/st0

CREATE TABLE st0 (no NUMBER);
table 정상적으로 만들어 진다.

INSERT INTO st0 VALUES (1);
st0 DEFAULT TABLESPACE quota 없다.


CONN / AS sysdba

SELECT username, default_tablespace FROM dba_users
WHERE username='ST0';

DEFAULT TABLESPACE설정은 사용 권한이나 사용량에 대한 설정이 아니다.

ALTER USER st0
QUOTA UNLIMITED ON st;
st tablespace 대해 quota 설정한다.

SELECT username, tablespace_name, max_bytes, max_blocks FROM dba_ts_quotas
WHERE username = 'ST0';
st0에게 unlimit quota 할당되었다.


CONN st0/st0
INSERT INTO st0 VALUES (1);



댓글 없음:

댓글 쓰기