共计 1742 个字符,预计需要花费 5 分钟才能阅读完成。
问题描述
使用expdp导出数据,报ORA-01691表空间不足错误
WTF!!导出怎么会报表空间不足?导出还会占用表空间大小吗?
问题排查及解决
亲自开着挖掘机上百度一顿挖。。。。。。
查看SYSTEM表空间使用率
SQL> select b.tablespace_name "表空间",b.bytes/1024/1024 "大小M",(b.bytes-sum(nvl(a.bytes,0)))/1024/1024 "已使用M",substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5) "利用率" from dba_free_space a,dba_data_files b where a.file_id=b.file_id and b.tablespace_name='SYSTEM' group by b.tablespace_name,b.file_name,b.bytes order by b.tablespace_name;
SQL> select tablespace_name,sum(bytes/1024/1024/1024) gbytes from dba_free_space where tablespace_name = 'SYSTEM' group by tablespace_name;
TABLESPACE_NAME GBYTES
------------------------------ ----------
SYSTEM 0.03298889
从这里看,由于system可能存在一些碎片的情况,无法找到一个连续的空间也很正常。由于导出的时候,会生成一个表SYS_EXPORT_SCHEMA_01,这个表主要是记录一些导出的任务信息等内容,其本向大小也就100多m,但是通过查询发现,本表有一个lob字段,已经到了1.2g
SQL> select l.owner,
2 l.table_name,
3 l.segment_name,
4 s.bytes/1024/1024/1024 gbytes
5 from dba_lobs l,
6 dba_segments s
7 where l.table_name like 'SYS_EXPORT_SCHEMA%' and
8 l.table_name = s.segment_name;
OWNER TABLE_NAME SEGMENT_NAME GBYTES
------------------------------ ------------------------------ ------------------------------ ----------
SYSDB SYS_EXPORT_SCHEMA_01 SYS_LOB0000665077C00039$$ 1.2479325
可以看到lob字段已经比较大了,并且还在扩张。
出现这种情况,也比较正常,比如说导出的内容挺多,需要记录到这个表中,导致这个lob段不断的扩展!
解决办法就是扩展system表空间!!
[v_notice]
1、为SYSTEM表空间增加一个数据文件SYSTEM02.DBF
2、设置SYSTEM表空间为自动拓展[/v_notice]
拓展数据文件
SQL> select file_name,bytes from dba_data_files where tablespace_name = 'SYSTEM';
FILE_NAME BYTES
---------------------------------------------------------------
/u01/app/oracle/oradata/myerp/system01.dbf 2147483648
SQL> alter database datafile '/u01/app/oracle/oradata/myerp/system01.dbf' resize 4096m
设置为自动拓展
alter database datafile '/u01/app/oracle/oradata/myerp/system01.dbf' autoextend on next 50m maxsize 32000m;
将文件扩展到4g后,expdp任务执行完成!
尾巴
最近真的是被Oracle搞的不要不要的,阿里去IOE万岁
正文完