重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
需要在創建的時候就設置為自動擴展,語句如下:
創新互聯公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網站制作、網站設計、企業官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的武強網站設計、移動媒體設計的需求,幫助企業找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!
create??tablespace?shopping?--創建shopping的表空間
datafile?'shopping.dbf'??--物理文件名
size?50m??--初始大小為50M
autoextend?on??--自動擴展
next?50m?maxsize?20480m??--每次自動擴展50M,最大可到20480M
extent?management?local;
表空間:
表空間是數據庫的邏輯劃分,一個表空間只能屬于一個數據庫。所有的數據庫對象都存放在指定的表空間中。但主要存放的是表, 所以稱作表空間。
Oracle數據庫中至少存在一個表空間,即SYSTEM的表空間。
SQL Server數據庫與Oracle數據庫之間最大的區別要屬表空間設計。Oracle數據庫開創性地提出了表空間的設計理念,這為Oracle數據庫的高性能做出了不可磨滅的貢獻。可以這么說,Oracle中很多優化都是基于表空間的設計理念而實現的。
首先說明一下,數據文件在加入的時候就可以直接設定為自動擴展,不用再次alter。
再把語句給你解析一下:
create tablespace?SIRM2?
datafile?'路徑+文件'?size?1024M --存儲地址 初始大小1G
autoextend on next?10M maxsize unlimited?? --每次擴展10M,直到不能再擴展為止EXTENT MANAGEMENT local? autoallocate ? ? ? ? ? ? ? ?--區管理方式為本地管理,segment space management auto; --段管理方式為自動
然后再回答你的問題:
并不是只能增加2G,這里的2G是你設定的數據文件的初始大小,并不是最后的大小。因為你的表空間是small datafile組成(區別于bigfile),所以每個數據文件最多只能有4M個block塊。也就是說,假設你設定的block塊的大小是8K,那么這里的每個數據文件最大就是32G(理論最大值,其實并不能完全達到這么大),你的數據文件初始大小2G,也就是說還有30G的可擴展大小左右(small datafile,以8K的block塊大小計算,如果是16K,或者32k,那么也就是說可擴展空間更大一些),擴展到不能再擴展了,那么自然就需要增加數據文件了。個人建議:表空間自動擴展關閉(起碼我不喜歡用),直接建立需要大小的數據文件,比如每個數據文件30G,一次加4個,那么表空間大小直接增加120G,足夠你用了,就算不夠再加,工作量也不是很大(比如每月操作一次,一次加四個,估計5分鐘搞定,工作量不大吧)。不然天天看著表空間要滿,很難受的。
你的alter database datafile '全路徑' autoextend on;語句本身沒有問題,但是你沒有設定next大小,所以數據庫會根據自己的判斷增加數據文件的大小,默認參數是多少我忘記了,這個是有默認值的,不過這個默認值真的不大(好像是初始參數的百分之幾,你初始設定2G,假設是5%,那么也就是100M左右,對于你來說幾乎感覺不到,而且擴展速度慢),所以幾乎感覺不到也是可以理解的。
如果實在感覺麻煩,那么就直接建立一個bigfile的表空間,那你就基本不用管了,那可是4G個數據塊,也就是說按照每個block塊8K計算,最終能擴展到32T,足夠了。不過如果不是數據量特別大,個人感覺還是不要這么干,有利就有弊,而且一個文件那么大,總是感覺不太好。
方法/步驟
第一步:查看表空間的名字及文件所在位置:
select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name
2
第二步:增大所需表空間大小:
alter database datafile '表空間位置'resize 新的尺寸
例如:
alter database datafile '\oracle\oradata\anita_2008.dbf' resize 4000m
3
第三步:設置表空間自動擴展
alter database datafile '\oracle\oradata\anita_2008.dbf'
autoextend on next 100m maxsize 10000m
sql語句
1.查詢表空間大小
select tablespace_name , sum(bytes/1024/1024) sizeM from dba_data_files group by tablespace_name ;
2.設置數據文件為自動拓展
alter database datafile n autoextend on ;
不知道你說的兩個東西有什么關聯性。
下面是設置全部數據文件為自動拓展的plsql匿名塊:
begin
for?rec?in?(select?file_id?,?autoextensible?from?dba_data_files?where?autoextensible='NO')?loop
execute?immediate?'alter?database?datafile?'||rec.file_id||'?autoextend?on?'?;
end?loop?;
end?;