Was ist das Standardkontingent für einen Tablespace für einen bestimmten Benutzer in Oracle, wenn Sie ' kein Kontingent festlegen?

Meine Umgebung

Ich verwende Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

Erklärung der Situation

Ich habe einen Benutzer mit dem folgenden Befehl erstellt

create user USRPRACTICA2 identified by 1234 default tablespace users;

Also ok, ich habe ihm einen Standard-Tablespace zugewiesen, aber ich HABE KEIN Kontingentlimit ANGEGEBEN. Also ging ich zu den Oracle-Dokumenten und las dies:

Standardmäßig hat ein Benutzer kein Kontingent für einen Tablespace in der Datenbank. Wenn der Benutzer über die Berechtigung zum Erstellen eines Schemaobjekts verfügt, müssen Sie ein Kontingent zuweisen, damit der Benutzer Objekte erstellen kann. Weisen Sie Benutzern minimal ein Kontingent für den Standard-Tablespace und zusätzliche Kontingente für andere Tablespaces zu, in denen sie Objekte erstellen können.

Also dann sagte ich gut, ok! Jetzt möchte ich testen, ob dieser Benutzer wirklich KEINE Tabellen erstellen kann, zum Beispiel, wenn ich ihm kein Kontingent zugewiesen habe.
Dann gewährte ich ihm diese Privilegien:

grant create session to USRPRACTICA2;grant create table to USRPRACTICA2; 

Nun, jetzt sollte ich keine Tabellen mehr erstellen können, da ich kein Kontingent für die Tablespace-Benutzer angegeben habe. Lass es uns versuchen.
Ich erstelle eine Verbindung mit USRPRACTICA2 zu Oracle, ich versuche eine Tabelle zu erstellen, und das passiert:

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.

Hoppla! Die Tabelle wurde erstellt.

In diesem Moment denke ich: „Nun, wir sollten jetzt versuchen herauszufinden, wie hoch das Kontingent ist, das diesem Benutzer in diesem Tablespace zugewiesen ist. Also habe ich das versucht:

SQL> select tablespace_name, username, max_bytes 2 from dba_ts_quotas 3 where username = 'USRPRACTICA2' and TABLESPACE_NAME = 'USERS';no rows selected

An diesem Punkt dachte ich „Das ist ein Unsinn, vielleicht habe ich die Abfrage nicht richtig geschrieben“, also habe ich das versucht:

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.

Mit diesen Informationen habe ich vermutet, dass für den von mir erstellten Benutzer sicher kein Kontingent für den on users Tablespace zugewiesen wurde.
Außerdem habe ich vermutet, dass in Oracle ein Wert mit dem Standardkontingent für Tablespaces gespeichert werden sollte, wenn Sie keinen festlegen. Darüber hinaus verfügt dieser Benutzer auch nicht über unbegrenzten Speicherplatz im Tablespace, da er in dieser Ansicht mit einem Wert „MAX_BYTES -1“ angezeigt worden wäre.

Ich habe viel nach einem Standardkontingentwert in Oracle gesucht, und alles, was ich bekommen konnte, ist das Snippet von Oracle, das besagt: „Wenn der Benutzer das Recht hat, ein Schemaobjekt zu erstellen, müssen Sie ein Kontingent zuweisen, damit der Benutzer Objekte erstellen kann“. Aber offensichtlich, wie ich hier gezeigt habe, sollte es irgendwo ein Standardkontingentwert sein.

Zum Schluss habe ich noch etwas anderes versucht. Wenn Sie dem Benutzer einen Kontingentwert wie diesen zuweisen

alter user USRPRACTICA2 quota 1M on USERS; 

Wenn Sie nun die Tablespace-Kontingente abfragen, finden Sie die Informationen

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

Also meine Frage hier ist…

Wird einem Benutzer in einem Tablespace ein Standardkontingentwert zugewiesen, wenn Sie ihn nicht angeben? Wenn ja, wie kann ich diesen Wert anzeigen?

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht.