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

来源:这里教程网 时间:2026-03-03 16:41:14 作者:

   本案例演示了用oracle11g的数据泵impdp工具导入数据,使用并发功能。要解决的问题是:1.数据泵impdp在什么情况下开并发导入?2.什么情况下开并发导入效率有明显的提升?3.在导入的过程怎么样监控数据泵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是不同的用户。这样我们就明白了:原来数据泵导入并发是用户数据,有几个schema,理论上开几个并发。这就回答了第一个问题,有多个用户,可以考虑用并发同时导入数据。如果在深入点,理论上来说,数据库主机有几个逻辑CPU,就可以开几个并发导入,但是如果导入的用户只有一个,我想其他线程(也就是上面的worker)只能wait,因为帮不上忙。     结果很满意:我之前导入一次这个文件,用了一个小时,不要笑话我导入速度慢,(因为存储真心很慢,我在ASM分配一个8G的DG,用了13分钟。)但这次是5分钟导入完成。

相关推荐