oracle表空间不足,该怎么办

如题所述

--1、查看表在那个表空间
select tablespace_name,table_name from user_talbes where table_name='test';
--2、获取用户的默认表空间
select username, DEFAULT_TABLESPACE from dba_users where username='MXH';
--3、查看表空间所有的文件
select * from dba_data_files where tablespace_name='USERS';
--4、查看表空间使用情况:
SELECT tbs 表空间名,
sum(totalM) 总共大小M,
sum(usedM) 已使用空间M,
sum(remainedM) 剩余空间M,
sum(usedM)/sum(totalM)*100 已使用百分比,
sum(remainedM)/sum(totalM)*100 剩余百分比FROM(SELECT b.file_id ID,
b.tablespace_name tbs,
b.file_name name,
b.bytes/1024/1024 totalM,
(b.bytes-sum(nvl(a.bytes,0)))/1024/1024 usedM,
sum(nvl(a.bytes,0)/1024/1024) remainedM,
sum(nvl(a.bytes,0)/(b.bytes)*100),
(100 - (sum(nvl(a.bytes,0))/(b.bytes)*100))
FROM dba_free_space a,dba_data_files b
WHERE a.file_id = b.file_id
GROUP BY b.tablespace_name,b.file_name,b.file_id,b.bytes
ORDER BY b.tablespace_name)GROUP BY tbs
--5、扩展表空间
alterdatabase datafile 'D:\ORACLE\PRODUCT\ORADATA\TEST\USERS01.DBF' resize 50m;--自动增长
alterdatabase datafile 'D:\ORACLE\PRODUCT\ORADATA\TEST\USERS01.DBF' autoextend onnext 50m maxsize 500m;--增加数据文件
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-27
有时候一个表空间的文件剩余空间太小了是会从dba_free_space视图中删除的,因为那时候bytes列接近0,当你释放点空间,它又会回到dba_free_space视图中,就是这样的机制。
uniform size 1m的意思是为该表空间划分的每个区都是1M大小,就算你的表只有256K,他也会分配1M给你。这个是跟autoallocate相对的
1.可能我说的不好。不是这么理解,表是一个段(segment),段由区(extent)组成,区由block组成。uniform size固定的是区大小。比如你一个表已经用了1M需要继续扩充,他就会分配给你1M的新区,加入这个SEGMENT,而不是由AUTOallocate方式根据你表的需要分配适当大小的区。
3.你最好再指定下MAXSIZE UNLIMITED,插入数据让大小过5M一点再看一下。
第2个回答  2014-10-26
用 sys身份登录,然后把表空间设置为自动增长
相似回答