需要在创建的时候就设置为自动扩展,语句如下:
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站制作、网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的武强网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
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 ;