Wat is de standaard quota op een tablespace voor een bepaalde gebruiker in oracle Als u't een tablespace instelt?

mijn omgeving

Ik gebruik Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

uitleg van de situatie

Ik was een gebruiker aan het maken met het volgende commando

create user USRPRACTICA2 identified by 1234 default tablespace users;

dus ok, Ik heb hem een standaard tablespace toegewezen, maar ik heb geen quotalimiet opgegeven. Toen ging ik naar de Oracle docs en Las dit:

standaard heeft een gebruiker geen quota op een tablespace in de database. Als de gebruiker de bevoegdheid heeft om een schemaobject te maken, moet u een quota toewijzen om de gebruiker toe te staan objecten te maken. Wijs gebruikers minimaal een quotum toe voor de standaardtabletruimte en extra quota voor andere tabletruimten waarin ze objecten kunnen maken.

dus toen zei ik goed, ok! Nu wil ik testen of deze gebruiker echt geen tabellen kan maken, bijvoorbeeld, als ik hem geen quota heb toegewezen.
toen gaf ik het deze privileges:

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

Nou, nu zou ik geen tabellen moeten kunnen maken omdat ik geen quota heb opgegeven voor de tablespace gebruikers. Laten we het proberen.
ik maak een verbinding met USRPRACTICA2 naar oracle, ik probeer een tabel te maken, en dit is wat er gebeurt:

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.

Oeps! De tafel is gemaakt.

op dit moment denk ik “nou, we moeten nu proberen uit te zoeken wat de quota is toegewezen aan die gebruiker op die tablespace, misschien is er een standaard quota in oracle”. Dus ik probeerde dit:

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

op dit moment dacht ik “dit is onzin, misschien heb ik de query niet goed geschreven”, dus ik probeerde dit:

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.

dus met deze informatie raadde ik dat, zeker, geen quotum was toegewezen voor op gebruikers tablespace voor de gebruiker die ik gemaakt.
ook raadde ik dat het in oracle een waarde zou moeten worden opgeslagen met de standaard quota op tablespaces als je er geen instelt. Bovendien heeft die gebruiker ook geen onbeperkte ruimte op de tablespace, omdat het in die weergave zou zijn verschenen met een “MAX_BYTES -1” waarde.

ik heb veel bladeren op zoek naar een standaard quota waarde in oracle, en alles wat ik kon krijgen is dat fragment van oracle te zeggen: “als de gebruiker de bevoegdheid heeft om een schema object te maken, moet u een quota toe te wijzen om de gebruiker om objecten te maken”. Maar zoals ik hier heb laten zien, zou het ergens een standaard quotawaarde moeten zijn.

om te eindigen, heb ik net iets anders geprobeerd. Als u een quota waarde voor de gebruiker als deze

alter user USRPRACTICA2 quota 1M on USERS; 

nu als u query de tablespace quota, vindt u de informatie

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

dus mijn vraag is hier…

is er een standaard quotawaarde toegewezen aan een gebruiker in een tablespace als u deze niet opgeeft? Zo ja, hoe kan ik die waarde laten zien?

Leave a Reply

Het e-mailadres wordt niet gepubliceerd.