sys@TEST1>alter tablespace test_16k offline;資料表空間已更改。
sys@TEST1>alter database datafile 'd:\oracle\product\10.2.0\oradata\test1\test6k.dbf' autoextend on next 50m maxsize 200m;資料庫已更改。sys@TEST1>alter database datafile 'd:\oracle\product\10.2.0\oradata\test1\test.dbf' resize 10m;資料庫已更改。
sys@TEST1>alter user mxl quota 200m on test_16k;使用者已更改。
總結:
1、修改資料表空間大小,乃修改的datafile非tablespace
2、不要出低級拼字錯誤。
3、錯誤提示很重要,不要想當然。
附:
三、磁碟配額管理的幾個建議。 1、當在建立資料表空間對象的時候,出現“超出資料表空間的空間限量”錯誤提示的處理思路。這種情況一般是由很多種情況所造成的。筆者在遇到這種問題的時候,一般的處理思路是,先查看該使用者的磁碟配額,看其是否滿足空間上的需求。若該使用者沒有磁碟配額管理的話,或者磁碟配額大小符合既定需求的話,則建議查看錶空間的大小,看是否是因為資料表空間不足所造成的。若前兩步還是不能夠解決問題的,則看看錶空間的管理方式。若是資料字典管理員模式的話,則把他改為本地管理員模式,一般就可以解決問題了。 2、若資料庫中存放著不同辦事處或者不同分公司的資料時,筆者建議對Oracle資料庫進行磁碟限額。這可以有效防止因為硬碟空間的不足導致整個資料庫的崩潰。而若對使用者進行磁碟配額管理的話,那最多隻是某個辦事處(某個使用者)資料庫操作出現故障而已。這也是提高Oracle資料庫可用性的一個有效手段。
經查,資料表空間跟資料表空間限額兩個值是不一樣的.
推測按預設的話oracle應該會給每個使用者指派一個預設的資料表空間限額,具體比例待查,但這比例肯定遠小於100%.
所以說分配了400M的資料表空間未必能儲存400M的資料.
解決辦法如下:
查看使用者資料表空間的限額
select * from user_ts_quotas;
max_bytes欄位就是了
-1是代表沒有限制,其它值多少就是多少了.
不對使用者做資料表空間限額控制:
GRANT UNLIMITED TABLESPACE TO ***(使用者);
這種方式是全域性的.
或者
alter user ***(使用者名稱) quota unlimited on ***(資料表空間);
這種方式是針對特定的資料表空間的.
可以分配自然也可以回收了:
revoke unlimited tablespace from ***(使用者)
或者
alter user *** quota 0 on ***