为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm 8.4
【操作系统】:Kylin Linux Advanced Server V10
【CPU】: Intel Core Processor (Haswell)
【问题描述】*:使用dimp方式导入非常慢,看dump文件24G左右,一个小时都没有完成,查看会话信息,是有在插入数据,日志一致刷提交数据。
导入命令:
nohup dimp USERID=SYSDBA/'"xxxxxx"' FILE=exp00001.dmp LOG=fast.log FULL=Y DIRECTORY=/dmexpdp/expdp FAST_LOAD=Y TABLE_EXISTS_ACTION=REPLACE > /dmexpdp/expdp/imp_nohup.log 2>&1 &
文件大小信息:
数据库会话信息:
导入日志信息:
并发可以和cpu核数一样FAST_LOAD=Y COMMIT_ROWS=20000 TASK_THREAD_NUMBER=16 BUFFER_NODE_SIZE=2048 LOB_NOT_FAST_LOAD=Y
PARALLEL=cpu核数 TABLE_PARALLEL=cpu核数
试试这套参数组合
导入的时候,
1、nohup dimp USERID=SYSDBA/'"xxxxxx"' FILE=exp00001.dmp LOG=fast.log FULL=Y DIRECTORY=/dmexpdp/expdp FAST_LOAD=Y TABLE_EXISTS_ACTION=REPLACE > /dmexpdp/expdp/imp_nohup.log 2>&1 &
为啥要用到TABLE_EXISTS_ACTION=REPLACE 这个参数,这个表能否先直接truncate再导入;
2、按照1的方法导入时,用iostat命令看看磁盘负载,截图
1、既然是full=y 全库导入,能否先把对应数据库的数据都删除了再导入
2、或者
调整下TABLE_EXISTS_ACTION=REPLACE,按照你的情况调整成TRUNCATE或者TRUNCATE_CASCADE,replace这个就不是简单的insert了,你这是又带了1层drop删除表能不慢吗
SKIP:跳过此表。
APPEND:直接向现有表中导入数据。
TRUNCATE:先删除现有表中的数据,再向表中导入数据。
REPLACE:先删除现有表,再导数据。
TRUNCATE_CASCADE:先删除现有表中的数据,并且级联删除依赖表数据,再向表中
导入数据。
3、检查你磁盘的负载,如果导入的时候磁盘已经出现磁盘瓶颈,光调整数据库肯定提升有限

单机数据库的话,可以把归档日志先给关闭提高性能。sqllog如果打开了,也给关闭。或者增加并发。