oracle imp两张大表千万条数据直接卡死

wdyr321 2015-01-14 12:47:12
现有一个dmp文件,6个G,内有两张表,表A,表B
表A数据:890万条 (包含一个Blob和Date类型字段),3.7G
表B数据:220万条 (包含一个Long类型字段),2.3G
表空间上限10G,自增长
导出dmp文件的数据库字符集UTF-8,导入的数据库字符集GBK
问题描述:
1、先倒入表A后,表B无法导入,直接卡死,无错误提示
2、先倒入表B后,表A无法导入,直接卡死,无错误提示
1和2中,导入前都会做drop table或truncate操作,
imp命令添加tables参数指定表导入,也是一样的问题,第一张表正常导入,第二张表卡死。
3、导入第一张表后,对第一张表重命名后,第二张表即能正常导入
以下是导入imp命令:
imp xxxx/xxxx fromuser=user1 touser=user2 file=/xxx/xx/xx.dmp commit=n feedback=10000 buffer=202400000 ignore=y rows=y indexes=n grants=n

以下是对方的exp命令:
exp xxx/xxx@xxx compress=n file=xxxx/xxx.dmp log=xxx/xxx.log tables="(A,B)"

我想问下怎么去定位这个问题的原因
...全文
1002 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wdyr321 2015-01-14
  • 打赏
  • 举报
回复
引用 2 楼 bw555 的回复:
可以分别导入,然后分别查看表的空间占用情况,根据结果适量增大表空间
select a.tablespace_name ,count(1) 碎片量 from dba_free_space a,dba_tablespaces b where a.tablespace_name =b.tablespace_name and b.extent_management = 'LOCAL' group by a.tablespace_name order by 2 有这个语句查询到表空间的碎片量过大达到1543,是否会造成这个问题
wdyr321 2015-01-14
  • 打赏
  • 举报
回复
引用 5 楼 binsweet 的回复:
这两张表有相关关联的触发器吗
都是独立的,没有任何关系,只有表数据和主键索引
binsweet 2015-01-14
  • 打赏
  • 举报
回复
这两张表有相关关联的触发器吗
wdyr321 2015-01-14
  • 打赏
  • 举报
回复
引用 2 楼 bw555 的回复:
可以分别导入,然后分别查看表的空间占用情况,根据结果适量增大表空间
我增加tables参数指定表分开导入过, SELECT UPPER(F.TABLESPACE_NAME) "表空间名",   D.TOT_GROOTTE_MB "表空间大小(M)",   D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",   TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比",   F.TOTAL_BYTES "空闲空间(M)",   F.MAX_BYTES "最大块(M)"   FROM (SELECT TABLESPACE_NAME,   ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,   ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES   FROM SYS.DBA_FREE_SPACE   GROUP BY TABLESPACE_NAME) F,   (SELECT DD.TABLESPACE_NAME,    ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB   FROM SYS.DBA_DATA_FILES DD   GROUP BY DD.TABLESPACE_NAME) D   WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME   ORDER BY 1; 用上面的语句查表空间还有充足的空闲空间, alter database datafile '/opt/oracle/oradata/orcl/xxx.dbf' resize 15000M; 用这个语句将表空间扩大到15个G,还是导不进去。 第一张表可以正常导入,第二张表导入卡死 修改导入的第一张表表名,第二张表就可以导入
wdyr321 2015-01-14
  • 打赏
  • 举报
回复
引用 1 楼 bw555 的回复:
1、这两个表是不是分区表,分区表在创建时会额外申请一部分空间 2、是否存在索引,索引也会占用很大空间的 上面这两种在dmp中只记录了创建语句,在dmp中是不占空间的
这两个表不是分区表,索引的话,只有主键索引。
bw555 2015-01-14
  • 打赏
  • 举报
回复
可以分别导入,然后分别查看表的空间占用情况,根据结果适量增大表空间
bw555 2015-01-14
  • 打赏
  • 举报
回复
1、这两个表是不是分区表,分区表在创建时会额外申请一部分空间 2、是否存在索引,索引也会占用很大空间的 上面这两种在dmp中只记录了创建语句,在dmp中是不占空间的

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧