오라클에서 주어진 사용자에 대 한 테이블스페이스의 기본 할당량은 무엇입니까
내 환경
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
상황에 대한 설명
다음 명령
create user USRPRACTICA2 identified by 1234 default tablespace users;
을 사용하여 사용자를 만들었습니다. 그래서 나는 오라클 문서로 가서,나는 이것을 읽고:
기본적으로 사용자는 데이터베이스의 모든 테이블 공간에 할당량이 없습니다. 사용자에게 스키마 개체를 만들 수 있는 권한이 있는 경우 사용자가 개체를 만들 수 있도록 할당량을 할당해야 합니다. 최소한 사용자에게 기본 테이블스페이스에 대한 할당량을 할당하고 개체를 만들 수 있는 다른 테이블스페이스에 대한 추가 할당량을 할당합니다.
그래서 나는 잘 말했다. 이제이 사용자가 실제로 테이블을 만들 수 없는지 테스트하려고합니다(예:할당량을 할당하지 않은 경우).
그런 다음 다음과 같은 권한을 부여했습니다.:
grant create session to USRPRACTICA2;grant create table to USRPRACTICA2;
이제 테이블 공간 사용자에 할당량을 지정하지 않았기 때문에 테이블을 만들 수 없습니다. 의 그것을 시도 할 수 있습니다.
나는 테이블을 만들려고하고,이 무슨 일이 일어나는지입니다:
SQL> CREATE TABLE EMP 2 (EMPNO NUMBER(4) NOT NULL, 3 ENAME VARCHAR2(10), 4 JOB VARCHAR2(9), 5 MGR NUMBER(4), 6 HIREDATE DATE, 7 SAL NUMBER(7, 2), 8 COMM NUMBER(7, 2), 9 DEPTNO NUMBER(2));Tabla creada.
아차! 테이블이 만들어졌습니다.
이 순간 나는”글쎄,우리는 이제 그 테이블 스페이스에서 해당 사용자에게 할당 된 할당량이 무엇인지 알아 내려고 노력해야한다. 그래서 나는 이것을 시도했다:
SQL> select tablespace_name, username, max_bytes 2 from dba_ts_quotas 3 where username = 'USRPRACTICA2' and TABLESPACE_NAME = 'USERS';no rows selected
이 시점에서 나는”이것은 말도 안돼,어쩌면 내가 제대로 쿼리를 작성하지 않았다”고 생각하고 있었기 때문에 나는 이것을 시도했다:
SQL> select * from dba_ts_quotas;TABLESPACE_NAME USERNAME BYTES MAX_BYTES BLOCKS MAX_BLO------------------------------ -------------------------------------------------------------------------------------------------------------------------------- ---------- ---------- ----------SYSAUX AUDSYS 655360 -1 80SYSAUX GSMADMIN_INTERNAL 917504 -1 112SYSAUX DBSFWUSER 0 -1 0SYSAUX APPQOSSYS 0 -1 0SYSAUX GGSYS 0 -1 0SYSAUX OLAPSYS 0 -1 06 rows selected.
이 정보를 통해 나는 내가 만든 사용자에 대한 사용자 테이블 스페이스에 할당 된 할당량이 없다는 것을 짐작했습니다.
또한 오라클에서는 테이블스페이스에 기본 할당량이 있는 값을 설정하지 않으면 저장해야 한다고 생각했습니다. 또한,이 사용자는 테이블 공간에 무제한 공간이 없습니다.
오라클에서 기본 할당량 값을 많이 찾아 봤는데 오라클의 스 니펫이”사용자가 스키마 개체를 만들 수있는 권한이있는 경우 사용자가 개체를 만들 수 있도록 할당량을 할당해야합니다”라고 말하면서 얻을 수 있습니다. 그러나 분명히 내가 여기서 보여준 것처럼,그것은 어딘가에 기본 할당량 값이어야합니다.
마무리,난 그냥 다른 일을 시도했다. 이
alter user USRPRACTICA2 quota 1M on USERS;
와 같은 사용자에 대한 할당량 값을 할당하면 이제 테이블 공간 할당량을 쿼리하면
SQL> select tablespace_name, username, max_bytes 2 from dba_ts_quotas 3 where username = 'USRPRACTICA2' and TABLESPACE_NAME = 'USERS';TABLE USERNAME MAX_BYTES----- ------------ ----------USERS USRPRACTICA2 1048576
정보를 찾을 수 있습니다…
지정하지 않은 경우 테이블스페이스의 사용자에게 할당된 기본 할당량 값이 있습니까? 그렇다면 그 가치를 어떻게 보여줄 수 있습니까?