有一次我用schema:test01來新建Table時,出現了錯誤的訊息:ORA-01950: no privileges on tablespace 'USER_1'
依照上述的訊息,應該是權限不足,但是我早已經把Create Table的權限授予test01,不應該會有這個訊息出現。
雖然知道是權限不足,但是還真的不知道從何查起,明明已經授權了…,幸好這是在測試機上先行測試,不然就糗了。
最後經一番查詢與測試,發現不是沒有授予Create Table的權限,而是沒有設定Tablespace的配額給test01,所以我的方向一直都是搞錯了。
執行下列的指令後,用test01新建Table就成功了。
SQL> alter user test01 quota unlimited on USER_1;
原來我在用test02第一次新建USER_1這個Tablespace時,有對此Tablespace設定配額限制
後來建立新的user:test01,並將USER_1這個Tablespace設定為test01的Default Tablespace,而預設test01對此tablespace是沒有配額的。
因為我之前新建Tablespace時,都沒有設定配額限制,所以使用上當然都沒有問題。
查詢Tablespace的配額情況,其中的欄位MAX_BYTES的值如果是-1,表示是unlimited:
SQL> select * from dba_ts_quotas