分享

11g导入大量包含子分区的数据时表空间不足

 昵称10504424 2013-10-30

ORACLE11g使用impdp数据泵导入时遭遇:

ORA-01691: Lob 段 ISCS.SYS_LOB0000100750C00045$$ 无法通过 128 (在表空间 RT_DATA 中) 扩展

还可能遇到TEMP和UNDO表空间不足:

ORA-30036: 无法按 8 扩展段 (在还原表空间 'UNDOTBS1' 中)

ORA-01652: 无法按 8 扩展段 (在还原表空间 'TEMP 中)

解决方式:

查看RT_DATA表空间下面的段使用情况:

select *
  from (select owner,
               segment_name,
               tablespace_name,
               segment_type,
               bytes / 1024 / 1024 AS "SIZE(M)"
          from dba_segments
         order by 5 desc)
 where TABLESPACE_NAME = 'RT_DATA'
   AND rownum < 20;

 

LOBSEGMENT的系统命名规则是: 

SYS_LOB(10 digit object_id)C(5 digit col#)$$   表段
SYS_IL(10 digit object_id)C(5 digit col#)$$        索引

查看段空间使用者:

select * from dba_objects where object_id='0000100750';

 

最终发现11g导入时,impdp命令在默认表空间RT_DATA中生成的sys_import_table_01表中字段xml_clob为可变字段,且占用大量空间,下面是11条记录的片段。

select object_name,
       object_schema,
       partition_name,
       subpartition_name,
       object_tablespace,
       xml_clob,
       round(dbms_lob.getlength(xml_clob) / 1024 ) as "XML_CLOB SIZE(K)"
  from SYS_IMPORT_TABLE_01
 where rownum < 12;

 

相比10g的sys_import_table_01 ,11g增加了子分区的描述,从该表由原来82列变为95列,11g中在该表中对子分区的记录,会导致xml_clob列占用空间巨大,上述结果中子分区每条信息占用导致默认表空间爆满。

而这个原因目前不得而知,网上资料甚少,还请高手指点。不过可以通过手动扩展或自动扩展默认表空间,等完成导入之后,再收缩默认表空间。

 

方法一(手动扩展):

alter database datafile '/data1/oradata/i1000/rt_data01.dbf' resize 10G;

impdp结束后:

alter database datafile '/data1/oradata/i1000/rt_data01.dbf' resize 2G;

 

方法二(自动扩展):

alter database datafile '/data1/oradata/i1000/rt_data01.dbf'  autoextend on;

impdp结束后:

alter database datafile '/data1/oradata/i1000/rt_data01.dbf' resize 2G autoextend off ;

如果遭遇temp和undo表空间不足,亦如此扩展。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多