使使用者在資料表空間有寫的quota 使用者在資料表空間上建表、插入資料這些基本操作,有時也會報ORA-01950: no privileges on tablespace 'SYSTEM' ,那麼,此時該怎麼做呢?
9i的庫,對使用者自己的default tablespace,或者其他的tablespace,也需要授quota,不然也會報ORA-01950: no privileges on tablespace 'SYSTEM';alter user ldh quota unlimited on system;當然,使用者還得有create table許可權。grant create table to fwy;如果只有quota,而沒create table許可權,會報ORA-01031: insufficient privileges總結:在9i庫,一個使用者在一個資料表空間上建表,既要有quota,也要有create table許可權。10g的應該跟9i一樣。11g的庫,沒有quota,只要授予create table許可權,那麼在default tablespace或其他tablespace,都是可以建表的,這得益於11g的延遲段建立特性。(可以將deferred_segment_creation設為false來禁止)因為延遲段建立的特性,所以此時建的表,只存在於資料字典,而不會有內容寫到該資料表空間。但插入資料,無論是預設資料表空間還是其他其他資料表空間,就會報錯。ORA-01950: no privileges on tablespace 'EPSSLOGTMPDATA'所以11g的庫,也還是要quota與create table兩者結合才行。
查詢:如果在這個視圖沒查到對應的行,那麼這個FWY4就沒quota在任何錶空間了。select * from DBA_TS_QUOTAS where USERNAME='FWY4';bytes是現在該使用者的對象已經占該tablespace多大。max_bytes是最大能占的quota有可能bytes比max_bytes還大哦,因為一旦授予UNLIMITED TABLESPACE系統許可權後,那怕bytes到了max_bytes,還能超過max_bytes往上增長的,而max_bytes就不會變了。
命令:授予使用者quota:alter user fwy4 quota 300m on users; --對users資料表空間有最大300m的quota,體現alter user fwy4 quota unlimited on users; --對users資料表空間有最大無限的quotagrant unlimited tablespace to fwy; --UNLIMITED TABLESPACE這是一種系統許可權,可以讓這使用者對所有資料表空間有最大無限的quota
上面的前兩項,可以在dba_ts_quotas視圖中反映出來,但最後一項,要在dba_sys_privis中才能反映出來。