关于Oracle导入错误后,重启库提示ORA-03113: end-of-file on communication channel(undotbs爆满)。

最近因为要测试,一直在重导生产库的数据导测试库里面,由于生产库数据比较大,导入时间比较久,这种情况自己在心里已有一定的预期,但是在导入data数据时,跑了一天,进度一直没有进展,然后就纳闷了,于是查了一下库空间使用情况,

SELECT total.tablespace_name,
       Round(total.MB, 2)           AS Total_MB,
       Round(total.MB - free.MB, 2) AS Used_MB,
       Round(( 1 - free.MB / total.MB ) * 100, 2)
       || '%'                       AS Used_Pct
FROM   (SELECT tablespace_name,
               Sum(bytes) / 1024 / 1024 AS MB
        FROM   dba_free_space
        GROUP  BY tablespace_name) free,
       (SELECT tablespace_name,
               Sum(bytes) / 1024 / 1024 AS MB
        FROM   dba_data_files
        GROUP  BY tablespace_name) total
WHERE  free.tablespace_name = total.tablespace_name;

 

发现原有的一个数据库undotbs1的设备不见了,这才发现原来是undo空间爆满,导致设备不可见。

新增undotbs设备即可。

但其实最好的方式还是在数据导入前做好undo空间的规划,以下是我的做法:

1. 新增一个临时的undo tablespace (  undotbs2 )

 create undo tablespace UNDOTBS2 datafile '/u01/app/oracle/oradata/asp/undotbs02.dbf' size 20M extent management local;

2. 设置使用新增的undo tablespace.(共存)

 alter system set undo_tablespace=UNDOTBS2 scope=both;

3. 删除旧的设备undotbs1

 drop tablespace UNDOTBS1 including contents and datafiles cascade constraints;

4. 重建undotbs1

create undo tablespace UNDOTBS1 DATAFILE '/u01/app/oracle/oradata/asp/undotbs01_1.dbf' SIZE 2048M autoextend on next 100m maxsize unlimited;
alter tablespace UNDOTBS1 add DATAFILE '/u01/app/oracle/oradata/asp/undotbs01_2.dbf' SIZE 2048M autoextend on next 100m maxsize unlimited;

5. 设置使用新的undotbs1(共存)

alter system set undo_tablespace=UNDOTBS1 scope=both;

6. 删除临时undo tablespace (删除undotbs2表空间)

 drop tablespace UNDOTBS2 including contents and datafiles cascade constraints;

 

画外音:

1、在Oracle数据库里面,数据库表空间自增长最大只能到32G,并不是无限增长;

2、如果在一个给定的已知数据量较大的数据库环境下,在创建数据块时,最好创建多个固定大小的数据块,以便后期扩容;

3、如果在一个未知数据量的数据库环境下,在创建数据块时,可以采用创建少数个可自增长的数据库表空间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值