ITPub博客

首页 > 数据库 > Oracle > 用数据泵并发导入数据的一个案例

用数据泵并发导入数据的一个案例

原创 Oracle 作者:e71hao 时间:2016-06-03 13:55:06 0 删除 编辑
   本案例演示了用oracle11g的数据泵impdp工具导入数据,使用并发功能。要解决的问题是:1.什么情况下开并发导入效率有明显的提升?2.在导入的过程怎么样监控数据泵impdp导入数据的?
    本次导入文件是1G,导入数据不多。数据文件放在openfiler的存储中,写入很慢,所以开并发导入。导入语句为:
impdp system/123456@test66   PARALLEL=4 job_name=job_test66_import   logfile=test3320160424user10bak.log dumpfile=test3320160422user10bak.dmpdp  version=11.2.0.1.0 schemas=RISK,POS,INF,PE,POSJK,ACC,FO,INTRA,FI  
其中 parallel为4,job_name为job_test66_import。开始导入。
     回答第二个问题:怎么样监控?数据泵支持交互模式,附加attach参数的方式重新连接到中断的任务中,并选择后续的操作。 这就是交互方式。 在另外一个shell窗口,另外一个shel窗口监控:
impdp system/123456@test66  attach=JOB_TEST66_IMPORT
,看到如下内容:
Job: JOB_TEST66_IMPORT
  Owner: SYSTEM                         
  Operation: IMPORT                         
  Creator Privs: TRUE                           
  GUID: 3448DAD136BF201EE0534F0010AC90E6
  Start Time: Thursday, 02 June, 2016 17:01:42
  Mode: SCHEMA                         
  Instance: test66
  Max Parallelism: 4
  EXPORT Job Parameters:
     CLIENT_COMMAND        system/********@TEST33-172.16.0.97 COMPRESSION=all logfile=test3320160422user10bak.log dumpfile=test3320160422user10bak.dmpdp version=11.2.0.1.0 schemas=RISK,POS,INF,PE,FI,POSJK,VAS,ACC,FO,INTRA 
     COMPRESSION           ALL                                     
  IMPORT Job Parameters:
  Parameter Name      Parameter Value:
     CLIENT_COMMAND        system/********@test66 PARALLEL=4 job_name=job_test66_import logfile=test3320160424user10bak.log dumpfile=test3320160422user10bak.dmpdp version=11.2.0.1.0 schemas=RISK,POS,INF,PE,POSJK,ACC,FO,INTRA,FI 
  State: EXECUTING                      
  Bytes Processed: 289,480,112
  Percent Done: 29
  Current Parallelism: 4
  Job Error Count: 0
  Dump File: /u01/app/oracle/admin/test66/dpdump/test3320160422user10bak.dmpdp
  
Worker 1 Status:
  Process Name: DW00
  State: EXECUTING                      
  Object Schema: FI
  Object Name: GATEWAY_REQUEST
  Object Type: SCHEMA_EXPORT/TABLE/TABLE_DATA
  Completed Objects: 1
  Completed Rows: 186,259
  Completed Bytes: 349,938,120
  Percent Done: 35
  Worker Parallelism: 1
  
Worker 2 Status:
  Process Name: DW01
  State: EXECUTING                      
  Object Schema: INF
  Object Name: T_REQUEST_INFO_CONTENT
  Object Type: SCHEMA_EXPORT/TABLE/TABLE_DATA
  Completed Objects: 1
  Completed Rows: 730,691
  Completed Bytes: 316,879,688
  Percent Done: 69
  Worker Parallelism: 1
  
Worker 3 Status:
  Process Name: DW02
  State: EXECUTING                      
  Object Schema: INTRA
  Object Name: ACCESS_LOG
  Object Type: SCHEMA_EXPORT/TABLE/TABLE_DATA
  Completed Objects: 9
  Completed Bytes: 2,986,168
  Worker Parallelism: 1
  
Worker 4 Status:
  Process Name: DW03
  State: EXECUTING                      
  Object Schema: RISK
  Object Name: TRADE_MONITOR
  Object Type: SCHEMA_EXPORT/TABLE/TABLE_DATA
  Completed Objects: 4
  Completed Rows: 370,103
  Completed Bytes: 4,109,392
  Percent Done: 100
  Worker Parallelism: 1
可以看到有4个worker,每个worker是不同的用户。我猜想,每一个worker,就是操作系统一个线程。这样我们就明白了:数据泵并发导入是不同用户可以并发导入data。这就回答了第一个问题,如果有多个用户导入数据,那么可以考虑用并发同时导入数据。在深入点,理论上来说,数据库主机有几个逻辑CPU,就可以开几个并发导入.实际上,假设导入的用户是一个,其他线程(也就是上面的worker)只能wait,因为帮不上忙,一个用户只能顺序导入data。也就是说,并发导入能不能有效果,由导入的用户情况,以及硬件cpu的支持。
    结果很满意:这次是5分钟导入完成。我之前导入一次这个文件,没有用并发,用了一个小时,(不要笑话我导入速度慢,因为openfiler存储真心很慢,我在ASM分配一个8G的diskgroup,用了13分钟。)

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30393770/viewspace-2113436/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2015-08-05

  • 博文量
    133
  • 访问量
    235556