2021-08-23

当Oracle数据库在迁移大量数据时遇到ORA-01659错误,意味着表空间不足。要解决这个问题,首先需要检查表空间使用情况,然后通过扩容表空间或增加数据文件来扩大容量。直接操作DBF文件可能无效,建议使用ALTER TABLESPACE命令进行扩容,例如设置AUTOEXTEND选项。如果仍存在问题,添加新的数据文件是最保险的方法。在扩容前,务必预估所需空间以避免迁移失败。
摘要由CSDN通过智能技术生成

ORA-01659 无法分配超出5(XXX)的MINEXTENTS

oracle在迁移大量数据的时候,如果是老项目或者DB管理者的疏忽,会把数据库的表空间设定成小表空间结构;
这就很蛋疼了,导入数据导了一上午,如果爆出ORA-01659,就意味一上午的劳动付之流水,所以以后再迁移数据时,记得查看表空间的数据:

#查看表空间的使用情况 
SELECT SUM(bytes) / (1024 * 1024) AS free_space, tablespace_name 
FROM dba_free_space 
GROUP BY tablespace_name; 
SELECT a.tablespace_name, 
a.bytes total, 
b.bytes used, 
c.bytes free, 
(b.bytes * 100) / a.bytes "% USED ", 
(c.bytes * 100) / a.bytes "% FREE " 
FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free c 
WHERE a.tablespace_name = b.tablespace_name 
AND a.tablespace_name = c.tablespace_name;

如果大小不够,先估算一下,扩容再导入;
扩容这里也有一些坑点,我百度查到的扩容方法大抵有俩种,对
表空间进行扩容操作,或者直接对表空间的DBF文件进行操作:

#对表空间扩容,直接不限大小,最大大小不限,步进100m
alter tablespace XXX(表空间id) autoextend on next 100m maxsize unlimited;
#对表空间扩容,最大大小为xxm
alter tablespace xxx(表空间id) autoextend on maxsize xxm;
#对dbf文件进行操作,扩展dbf文件的最大大小为不限大小,步进100m
alter database datafile '表文件dbf文件路径' autoextend on next 100m maxsize unlimited
#对dbf文件进行操作,修改dbf文件大小为xxm
alter database datafile 'dbf文件路径' resize xxm;

但是直接操作dbf文件对小表空间来说,是无效的,至少在11.2上;sqlplus工具会提示表空间已修改,但是实际上你再尝试迁移数据,会发现依旧不会扩容!
因此,最好直接操作表空间,而不是dbf文件,如果直接操作表空间,在尝试修改表空间大小的时候便会提示此表空间为小表空间,操作失效;
我个人尝试过几次,最好给表空间添加新的dbf文件,最保险

#添加新的dbf文件以保存数据
alter tablespace add datafile='新的dbf文件路径' size 10m autoextend on next 100m maxsize 500m;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值