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);
댓글 없음:
댓글 쓰기