oracle增加表空间大小的方法 oracle表空间不足的解决方法

发布时间:2019-08-23编辑:脚本学堂
有关增加oracle表空间大小的方法,为表空间增加数据文件,或增加表空间原始数据文件尺寸,oracle表空间不足问题的处理办法,需要的朋友参考下。

如何增加oracle表空间大小呢?
方法1,为表空间增加数据文件:
 

alter tablespace users add datafile '/opt/oracle/oradata/esop/so_data02.dbf' size 200m;

方法2,增加表空间原有数据文件尺寸:
 

alter database datafile '/opt/oracle/oradata/esop/so_data01.dbf' resize 200m;

下面详细介绍下oracle增加表空间的四种方法

增加表空间大小的四种方法
方法1:给表空间增加数据文件
 

alter tablespace app_data add datafile
'd:oracleproduct10.2.0oradataedwtestapp03.dbf' size 50m;
 

方法2:新增数据文件,并且允许数据文件自动增长
 

alter tablespace app_data add datafile
'd:oracleproduct10.2.0oradataedwtestapp04.dbf' size 50m
autoextend on next 5m maxsize 100m;

方法3:允许已存在的数据文件自动增长
 

alter database datafile 'd:oracleproduct10.2.0oradataedwtestapp03.dbf'
autoextend on next 5m maxsize 100m;

方法4:手工改变已存在数据文件的大小
 

alter database datafile 'd:oracleproduct10.2.0oradataedwtestapp02.dbf'
resize 100m;

第二部分,oracle 如何增加表空间?
 
1. 首先,找出该表空间对应的数据文件及路径
 

--查找对应的表空间中的数据文件的全路径,该路径对应file_name字段。
select * from dba_data_files t where t.tablespace_name='输入要查找的表空间';

方法1:增大数据文件
 

--增加对应的表空间里面的某个数据文件的大小为***m
alter database datafile '全路径的数据文件名称' resize ***m;

方法2:增加数据文件
 

alter tablespace 表空间名称 add datafile '全路径的数据文件名称' size ***m;
--新增一个数据文件,全路径的数据文件名称为该新增数据文件的全路径文件名称。大小为***m,数值具体设置。

说明:
表空间一般让free百分比保持在10%以上,mdmc里面目前的比例是25%,如果低于就增加datafile或者resieze datafile,一般数据文件大小不要超过2g.

第三部分,oracle的表空间提示空间不足怎么办?解决方法分享
 
oracle表空间报错:
sqlexception:ora-01654: unable to extend index atom.idx_underwriting_check_t2 b
y 1024 in tablespace tbsids

在网上找到一些解决方法,特此分享。

方法1:
当出现类似错误时,首先检查tablespace的空间是否足够大,如果不够大,说明tablespace的空间不够扩展了,这时候需要将tablespace的datafile的size变大,方法很简单我就不讲了,或增加新的datafile到此tablespace中,使用alter tablespace mytablespace add datafile 'xxx' size xxxx就ok啦.
先了解表空间(www.jb200.com)
1、查看表空间的名称及大小
 

select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size
from dba_tablespaces t, dba_data_files d
where t.tablespace_name = d.tablespace_name
group by t.tablespace_name;

2、查看表空间物理文件的名称及大小
 

select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name;

3、查看表空间的使用情况
 

select sum(bytes)/(1024*1024) as free_space,tablespace_name
from dba_free_space
 group by tablespace_name;
 

发现确实空间满了
同时发现2个文件不能自己扩展。
于是手动进行扩展
 

alter tablespace users add datafile '/home/oracle/oradata/xxx/users02.dbf' size 10000m autoextend on;


实际有2中方法,一个是增大原有数据文件,一个是新添加数据文件,添加后,问题解决。
如果添加过程中出错,oracle10g以后可以直接删除,以前的版本比较麻烦:
确认表空间未被存储占用:
 

sql> select segment_name,file_id,blocks from dba_extents where file_id=5;
  no rows selected

删除表空间中的空数据文件:
 

sql> alter tablespace users drop datafile '/opt/oracle/oradata/eygle/users02.dbf';
tablespace altered.

如果操作过程中空间不能释放可能因为其他操作导致,例如被归到undotbs空间里

可以如此操作:
首先,要查清楚数据文件的真实使用空间。可以通过查询dba_extents达到这个目的。
users表空间使用的数据文件为d:oracleoradataepcitdata_fileepcitusers01.dbf
 

sql> select file_name, sum(e.bytes)/1024/1024 as mb  
from dba_extents e join dba_data_files f on e.file_id=f.file_id  
group by file_name;  

epcitusers01.dbf实际使用空间只有143mb。resize datafile时不可以小过这个大小。
 

sql> alter database datafile 6 resize 100m;  
alter database datafile 6 resize 100m  
*  
error at line 1:  
ora-03297: file contains used data beyond requested resize value  
 
sql> alter database datafile 6 resize 500m;  
database altered.

以上详细介绍了oracle表空间不足时的解决方法,oracle如何增加表空间大小的办法,希望对大家有所帮助。