本案例演示了用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/
,如需转载,请注明出处,否则将追究法律责任。