在对oracle数据库表空间进行扩容时报错
可能扩容的大小>文件可设置最大值
问题出现:
1、查询表空间存储文件所在的位置:?XXXX为表空间名字
select a.tablespace_name,total,free,total-free used,a.file_name from
( select tablespace_name,sum(bytes)/1024/1024 total,file_name from dba_data_files group by tablespace_name,file_name) a,
( select tablespace_name,sum(bytes)/1024/1024 free from dba_free_space group by tablespace_name) b
where a.tablespace_name=b.tablespace_name
and a.tablespace_name='XXXX';
2、进行扩容: XXX为表空间名字,路径是上一句查询出的
alter database datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\USER.DBF' resize 40G;
解决思路:
1、创建多个数据文件,都不能超过32g
2、创建大表空间。create bigfile tablespace??他的上限是32t,不过,oracle10及以后版本才能用。
这里之讲加数据文件: USER是表空间名称, 后面是限制大小的
alter tablespace USER add datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\USER1.DBF' size 1024M autoextend on next 1024M maxsize unlimited;
扩展:
以下语句可以查看所有表空间名称以及使用情况
select upper(f.tablespace_name) "表空间名",
d.tot_grootte_mb "表空间大小(m)",
d.tot_grootte_mb - f.total_bytes "已使用空间(m)",
to_char(round((d.tot_grootte_mb - f.total_bytes) / d.tot_grootte_mb * 100,2),
'990.99') || '%' "使用比",
f.total_bytes "空闲空间(m)",
f.max_bytes "最大块(m)"
from (select tablespace_name,
round(sum(bytes) / (1024 * 1024), 2) total_bytes,
round(max(bytes) / (1024 * 1024), 2) max_bytes
from sys.dba_free_space
group by tablespace_name) f,
(select dd.tablespace_name,
round(sum(dd.bytes) / (1024 * 1024), 2) tot_grootte_mb
from sys.dba_data_files dd
group by dd.tablespace_name) d
where d.tablespace_name = f.tablespace_name
order by 1