oracle 表空间一般有两个原因:
一,原表空间太小,没有自增长;
二,表空间已自增长,而且表空间也已足够大,对于这两种原因分别有各自的解决办法。
1.查看所有表空间使用情况
select b.file_id 文件ID号,b.tablespace_name表空间名,b.bytes/1024/1024||'M'字节数,(b.bytes-sum(nvl(a.bytes,0)))/1024/1024||'M' 已使用,sum(nvl(a.bytes,0))/1024/1024||'M' 剩余空间,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_id,b.bytes order by b.file_id;
select username,default_tablespace from dba_users;
3.查看要扩展的表空间使用的数据文件路径与名字
select file_name from dba_data_files;
select * from dba_data_files where tablespace_name like 'USERS%';
4.扩展表空间,表空间扩展有两种方法:增加数据文件;调整当前数据文件的大小或扩展的大小
ALTER TABLESPACE TESTTBS ADD DATAFILE 'D:/ora/datafile/users.ora' SIZE 500M AUTOEXTEND ON NEXT 50M MAXSIZE 2000M; --增加了一个500M的数据文件,并且可以自动扩展到2G,每次扩展50M
增加了一个500M的数据文件,并且可以自动扩展到2G,每次扩展50M。
ALTER DATABASE DATAFILE 'D:/ora/datafile/users.ora' RESIZE 50000M;
或者使用file_id
ALTER DATABASE DATAFILE 10 RESIZE 50000M;
(3)在使用过程中,如果想改变某个数据文件的最大大小,可以使用如下语句
ALTER DATABASE DATAFILE 'D:/ora/datafile/users.ora' AUTOEXTEND ON MAXSIZE 10240M;
使用:
SELECT file_id,file_name,tablespace_name,autoextensible,increment_by FROM dba_data_files WHERE tablespace_name = 'PAY_DATA'order by file_id desc; SELECT file_id,increment_by FROM dba_data_files WHERE tablespace_name = 'BEBE'order by file_id desc; alter tablespace BEBE add datafile '/u01/app/oracle/oradata/nbb/BEBE1.DBF' size 30g; alter tablespace BEBE add datafile '/u01/app/oracle/oradata/nbb/BEBE2.DBF' size 30g; alter tablespace PAY_DATA add datafile '/u01/app/oracle/oradata/nbb/pay_DATA1.DBF' size 30g; alter tablespace PAY_DATA add datafile '/u01/app/oracle/oradata/nbb/pay_DATA2.DBF' size 30g;