本文主要是以Oracle更改表空間大小的實際操作代碼來引出Oracle更改表空間大小的實際操作步驟,同時此文章也對用戶空間限額的具體操作步驟有一詳細介紹,望大家在看望此片文章之後會有所收獲。
- 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、Oracle更改表空間大,乃修改的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 ***
以上的相關內容就是對Oracle更改表空間大小的介紹,望你能有所收獲。