oracle dbf文件太大迁移,Oracle的undotbs01.dbf文件太大(占用大量磁盘空间)处理方法 ORA-01654 空间不足 ORA-01653...

有一次朝表中插入10万条数据,插入失败,提示空间不足,发现是undotbs01.dbf这个文件太大了。ORA-01654

登录到oracle服务器, 查看磁盘空间命令:df -h,我这里的结果为 /oradata  使用100%,查看/oradata里面文件,undotbs01.dbf,大小为32G。既然已经定位到问题,想法就是把undotbs01.dbf减小;

1.以dba用户登录oracle,

export ORACLE_SID=DB

sqlplus / as sysdba

2.我的oracle数据目录下就一个undotbs文件,所以基本确认使用的undo空间就是undotbs01,为了保险起见,还是查一下;

show parameter undo_tablespace;

查询结果为:

name

type

value

undo_tablespace

string

undotbs1

3.查看表空间和文件的对应关系

select file_name, tablespace_name, online_status from dba_data_files where tablespace_name='UNDOTBS1';

查询结果为:

file_name

tablespace_name

online_status

/oradata/DB/undotbs01.dbf

UNDOTBS1

ONLINE

4.查询当前回退表空间状态

select tablespace_name, status from dba_rollback_segs;

查询结果为:10条UNDOTBS1,状态全部为ONLINE;

5.undo_tablespace 是一个必须一直存在的表空间,要想删除当前的,我们必须设置一个临时空间供undo_tablespace 使用;

create undo tablespace UNDOTBS2 datafile '/oradata2/DB/undotbs02.dbf' size 100M;

alter system set undo_tablespace=UNDOTBS2;

6.重新查询当前回退表空间状态

select tablespace_name, status from dba_rollback_segs;

查询结果为:10条UNDOTBS1,状态全部为OFFLINE;10条UNDOTBS2,状态全部为ONLINE;证明回退表空间已经设置到UNDOTBS2;

7.删除回退表空间UNDOTBS1

drop tablespace UNDOTBS1 including contents and datafiles;

此时已经删除掉了文件,其他教程中说此处不需要重启oracle服务,但是我重新查看磁盘空间,发现文件已经不存在,但是空间是没有释放,因此我对oracle进行了重启;在sqlplus中执行命令:(关闭->启动)

shutdown immediate;

startup;

因为我是将数据文件放在了其他盘符下,作为一个强迫症患者,我还是将回退表空间重新设置回来了;重复以上命令,不再解释

create undo tablespace UNDOTBS1 datafile '/oradata/DB/undotbs1.dbf' size 100M autoextend on maxsize 25G;

alter system set undo_tablespace=UNDOTBS1;

select tablespace_name, status from dba_rollback_segs;

drop tablespace UNDOTBS2 including contents and datafiles;

shutdown immediate;

startup;

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值