care este cota implicită pe un spațiu de masă pentru un anumit utilizator în oracle dacă nu't setați unul?
mediul meu
folosescOracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
explicarea situației
am creat un utilizator cu următoarea comandă
create user USRPRACTICA2 identified by 1234 default tablespace users;
deci ok, I-am atribuit un spațiu de tabel implicit, dar nu am specificat nicio limită de cotă. Apoi m-am dus la Oracle docs și am citit asta:
în mod implicit, un utilizator nu are nicio cotă pe niciun spațiu de tabel din Baza de date. Dacă utilizatorul are privilegiul de a crea un obiect schemă, trebuie să atribuiți o cotă pentru a permite utilizatorului să creeze obiecte. Minim, atribuiți utilizatorilor o cotă pentru spațiul de tabelă implicit și cote suplimentare pentru alte spații de tabelă în care pot crea obiecte.
deci, atunci am spus bine, ok! Acum vreau să testez dacă acest utilizator nu poate crea tabele, de exemplu, dacă nu I-am atribuit o cotă.
atunci, I-am acordat aceste privilegii:
grant create session to USRPRACTICA2;grant create table to USRPRACTICA2;
Ei bine, acum nu ar trebui să pot crea tabele, deoarece nu am specificat o cotă pe utilizatorii tablespace. Să încercăm.
creez o conexiune cu USRPRACTICA2 la oracle, încerc să creez un tabel și asta se întâmplă:
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.
Hopa! Tabelul a fost creat.
în acest moment este când mă gândesc „Ei bine, ar trebui să încercăm acum să ne dăm seama care este cota atribuită acelui utilizator pe acel spațiu de masă, poate că există o cotă implicită în oracle”. Așa că am încercat asta:
SQL> select tablespace_name, username, max_bytes 2 from dba_ts_quotas 3 where username = 'USRPRACTICA2' and TABLESPACE_NAME = 'USERS';no rows selected
în acest moment mă gândeam „acesta este un nonsens, poate că nu am scris interogarea corect”, așa că am încercat asta:
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.
deci, cu aceste informații am ghicit că, cu siguranță, nu a fost atribuită nicio cotă pentru spațiul de masă al utilizatorilor pentru utilizatorul pe care l-am creat.
de asemenea, am ghicit că în oracle ar trebui să fie stocată o anumită valoare cu cota implicită pe spațiile de masă dacă nu setați una. În plus, acel utilizator nu are spațiu nelimitat pe spațiul tablespace, deoarece ar fi apărut în acea vizualizare cu o valoare „MAX_BYTES -1”.
am navigat mult în căutarea unei valori de cotă implicite în oracle și tot ce am putut obține este acel fragment din oracle spunând „dacă utilizatorul are privilegiul de a crea un obiect schemă, trebuie să atribuiți o cotă pentru a permite utilizatorului să creeze obiecte”. Dar, evident, așa cum am arătat aici, ar trebui să fie o valoare implicită a cotei undeva.
pentru a termina, am încercat doar un alt lucru. Dacă atribuiți o valoare de cotă pentru utilizator ca aceasta
alter user USRPRACTICA2 quota 1M on USERS;
acum, dacă interogați cotele de spațiu de tabel, veți găsi informațiile
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
deci întrebarea mea aici este…
există o valoare implicită a cotei atribuită unui utilizator într-un spațiu de tabel dacă nu o specificați? Dacă da, cum pot arăta această valoare?