IMPDP使用的磁盘空间比预期的多

时间:2019-01-13 23:13:07

标签: oracle oracle12c rhel datapump impdp

背景

我的任务是将大量数据从生产数据库导入测试数据库(在RHEL上运行的Oracle 12c第2版),并且正在使用数据泵。

我第一次导入表时,将创建表并按计划导入数据,但是-由于我的数据泵参数文件中的问题-约束未导入。

但是,我随后的尝试并不顺利。数据泵开始冻结,并且STATUS命令显示没有字节正在处理。

我的解决方案尝试

我尝试使用TABLE_EXISTS_ACTION=REPLACE并在尝试后直接删除表。我还删除了无法从实用程序终止的任何数据泵作业的主表。

不过,在我不断尝试导入表的过程中,它似乎挂得越来越早。 df -h每次挂起时都会返回100%的磁盘使用情况。

转储文件本身位于单独的驱动器上,因此不再占用空间。我一直在尝试清理空间,但是当我从事一项工作时,空间一直在填满,我不知道在哪里。 Oracle闪回已禁用,我确保清除了Oracle回收站。

tl;博士

正在运行的impdp作业似乎会耗尽已添加的表和作业主表之外的磁盘空间。该内存在哪里用完了,该如何清除才能成功导入?

1 个答案:

答案 0 :(得分:0)

我发现了问题:

该数据库位于archivelog mode中,以便设置流和Recovery Manager备份。结果,impdp导致大量已归档的数据库更改。

为了清除旧存档,我在rman中为服务器上noarchivelog mode中的每个数据库运行了以下文件。

connect target /
run { 
allocate channel c1 type disk; 
delete force noprompt archivelog until time 'SYSDATE-30'; 
release channel c1; 
} 

这清除了60 GB。我还向我的transform=disable_archive_logging:Y参数文件中添加了参数impdp。这样可以在运行数据泵导入时禁止创建存档。