hva er standardkvoten På en tabellplass for en gitt bruker i oracle hvis du ikke angir en't?
mitt miljø
jeg bruker Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
Forklaring av situasjonen
jeg opprettet en bruker med følgende kommando
create user USRPRACTICA2 identified by 1234 default tablespace users;
så ok, jeg tildelte det en standard tabellplass, men JEG HAR IKKE ANGITT noen kvotegrense. Så da gikk jeg Til Oracle docs, og jeg leste dette:
som standard har en bruker ingen kvote på noen tabellplass i databasen. Hvis brukeren har tillatelse til å opprette et skjemaobjekt, må du tilordne en kvote for å tillate brukeren å opprette objekter. Minimalt, tilordne brukere en kvote for standard tabellplass, og flere kvoter for andre tabellområder der de kan opprette objekter.
Så da sa jeg vel, ok! Nå vil jeg teste om denne brukeren virkelig ikke kan lage tabeller, for eksempel hvis jeg ikke tildelte den en kvote.
da ga jeg det disse privilegiene:
grant create session to USRPRACTICA2;grant create table to USRPRACTICA2;
vel, nå skal jeg ikke kunne lage tabeller siden jeg ikke angav en kvote på tabellplassbrukerne. La oss prøve det.
jeg oppretter en forbindelse MED USRPRACTICA2 til oracle, jeg prøver å lage et bord, og dette er hva som skjer:
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.
Oops! Bordet ble opprettet.
i dette øyeblikk er når jeg tenker «vel, vi bør nå prøve å finne ut hva som er kvoten tildelt den brukeren på den tabellplassen, kanskje det er en standardkvote i oracle». Så jeg prøvde dette:
SQL> select tablespace_name, username, max_bytes 2 from dba_ts_quotas 3 where username = 'USRPRACTICA2' and TABLESPACE_NAME = 'USERS';no rows selected
På dette punktet tenkte jeg «dette er en tull, kanskje jeg ikke skrev spørringen riktig», så jeg prøvde dette:
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.
Så med denne informasjonen jeg gjettet at, sikkert, ingen kvote ble tildelt for på brukere tablespace for brukeren som jeg opprettet.
jeg gjettet også at i oracle bør det lagres noen verdi med standardkvoten på tabellplasser hvis du ikke angir en. Videre har den brukeren heller ikke ubegrenset plass på tabellplassen, fordi Det ville ha dukket opp i den visningen med en» MAX_BYTES -1 » – verdi.
jeg bladde mye på jakt etter en standard kvoteverdi i oracle, og alt jeg kunne få er at tekstutdrag fra oracle sier «Hvis brukeren har rett til å opprette et skjema objekt, må du tilordne en kvote for å tillate brukeren å lage objekter». Men åpenbart som jeg viste her, bør Det være en standard kvoteverdi et sted.
for å fullføre, prøvde jeg bare en annen ting. Hvis du tilordner en kvoteverdi for brukeren som dette
alter user USRPRACTICA2 quota 1M on USERS;
nå hvis du spør om tabellkvotene, finner du informasjonen
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
Så spørsmålet mitt her er…
er det en standard kvoteverdi tilordnet en bruker i et tabellområde hvis du ikke angir det? Hvis ja, hvordan kan jeg vise den verdien?