をスタックします。'tを設定しない場合、oracleの特定のユーザーの表領域のデフォルトのクォータは何ですか?
私の環境
私は使用していますOracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
状況の説明
私は次のコマンドでユーザーを作成していました
create user USRPRACTICA2 identified by 1234 default tablespace users;
だからok、私はそれにデフォルトの表領域を割 だから私はOracle docsに行って、私はこれを読んだ:
デフォルトでは、ユーザーにはデータベース内のどの表領域にもクォータがありません。 ユーザーにスキーマオブジェクトを作成する権限がある場合は、ユーザーがオブジェクトを作成できるようにクォータを割り当てる必要があります。 最小限に抑えて、ユーザーにデフォルトの表領域のクォータと、オブジェクトを作成できる他の表領域の追加のクォータを割り当てます。
だから、私はよく言った、ok! ここで、クォータを割り当てていない場合、このユーザーが実際にテーブルを作成できないかどうかをテストしたいと思います。
そして、私はそれにこれらの特権を与えました:
grant create session to USRPRACTICA2;grant create table to USRPRACTICA2;
さて、今、私はテーブルスペースのユーザーにクォータを指定しなかったので、テーブルを作成することはできません。 試してみましょう。
USRPRACTICA2とoracleへの接続を作成し、テーブルを作成しようとしますが、これは何が起こるかです:
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.
おっと! テーブルが作成されました。 この時点では、「そのテーブルスペースでそのユーザーに割り当てられているクォータが何であるか、oracleにデフォルトのクォータがあるかどうかを把握しようと だから私はこれを試しました:
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.
そのため、この情報を使用して、作成したユーザーのon users tablespaceにクォータが割り当てられていないことを推測しました。また、oracleでは、デフォルトのクォータを設定しない場合は、テーブルスペースに値を格納する必要があると推測しました。 さらに、そのユーザーは、「MAX_BYTES-1」値でそのビューに表示されるため、表領域に無制限の領域もありません。
私はoracleでデフォルトのクォータ値を探して多くを参照しましたが、私が得ることができるのは、”ユーザーがスキーマオブジェクトを作成する権限を持ってい しかし、明らかに私がここで示したように、それはどこかのデフォルトのクォータ値であるべきです。
終わりに、私はちょうど別のことを試しました。 この
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
という情報が表示されますので、ここで私の質問..
指定しない場合、テーブルスペース内のユーザーに割り当てられたデフォルトのクォータ値はありますか? もしそうなら、どうすればその価値を示すことができますか?