Oracle impdp的运行方式太长了

我试图将一个模式导入到一个oracle实例,这是运行在docker的容器(希望这是不相关的)。

我想为这个长期职位事先道歉,但是我想包括我已经查过的所有事情。

导入快速加载表,build立索引,但是当它进入包时,进程就停止。

日志输出停止这些行

Processing object type SCHEMA_EXPORT/VIEW/COMMENT Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY 

它似乎卡在进程273,“改变包装…”

 set linesize 200 select s.username, s.sid, s.process, s.status, t.command_type, t.sql_text from v$session s , v$sqltext t where t.sql_id = s.sql_id order by t.sql_id, t.piece USERNAME SID PROCESS STATUS COMMAND_TYPE SQL_TEXT ------------------------------ ---------- ------------------------ -------- ------------ ---------------------------------------------------------------- SYS 192 266 ACTIVE 47 BEGIN :1 := sys.kupc$que_int.get_status(:2, :3); END; SYS 195 699 ACTIVE 3 select s.username, s.sid, s.process, s.status, t.command_type, t SYS 195 699 ACTIVE 3 .sql_text from v$session s , v$sqltext t where t.sql_id SYS 195 699 ACTIVE 3 = s.sql_id order by t.sql_id, t.piece SYS 7 273 ACTIVE 98 ALTER PACKAGE "XXX"."XXX_AQ_PUT" COMPILE BODY PLSQL_OPTIM SYS 7 273 ACTIVE 98 IZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= SYS 7 273 ACTIVE 98 FALSE PLSCOPE_SETTINGS= 'IDENTIFIERS:NONE' REUSE SETTINGS TI SYS 7 273 ACTIVE 98 MESTAMP '2015-06-02 13:31:03' SYS 196 271 ACTIVE 47 BEGIN :1 := sys.kupc$que_int.receive(:2); END; 

但是“ps agxu”显示进程273使用了大量的CPU

 oracle 119 0.0 0.0 1782464 14724 ? Ss 10:56 0:01 ora_pmon_xxxdb oracle 121 0.0 0.0 1780172 11276 ? Ss 10:56 0:02 ora_vktm_xxxdb oracle 125 0.0 0.0 1780172 11216 ? Ss 10:56 0:00 ora_gen0_xxxdb oracle 127 0.0 0.0 1780172 11228 ? Ss 10:56 0:00 ora_diag_xxxdb oracle 129 0.0 0.0 1780172 19120 ? Ss 10:56 0:00 ora_dbrm_xxxdb oracle 131 0.0 0.0 1780172 11504 ? Ss 10:56 0:00 ora_psp0_xxxdb oracle 133 0.0 0.0 1780684 14884 ? Ss 10:56 0:04 ora_dia0_xxxdb oracle 135 0.0 0.3 1780172 109800 ? Ss 10:56 0:00 ora_mman_xxxdb oracle 137 0.0 1.3 1817344 439448 ? Ss 10:56 0:02 ora_dbw0_xxxdb oracle 139 0.0 0.0 1796924 20736 ? Ss 10:56 0:01 ora_lgwr_xxxdb oracle 141 0.0 0.0 1780684 29472 ? Ss 10:56 0:02 ora_ckpt_xxxdb oracle 143 0.0 0.3 1786832 108004 ? Ss 10:56 0:01 ora_smon_xxxdb oracle 145 0.0 0.0 1781708 20928 ? Ss 10:56 0:00 ora_reco_xxxdb oracle 147 0.0 0.1 1786180 62136 ? Ss 10:56 0:01 ora_mmon_xxxdb oracle 149 0.0 0.0 1780172 19240 ? Ss 10:56 0:00 ora_mmnl_xxxdb oracle 151 0.0 0.0 1803680 11540 ? Ss 10:56 0:00 ora_d000_xxxdb oracle 153 0.0 0.0 1781368 10352 ? Ss 10:56 0:00 ora_s000_xxxdb oracle 163 0.0 0.0 1780172 13140 ? Ss 10:56 0:00 ora_qmnc_xxxdb oracle 228 0.0 0.0 9508 1288 ? S 10:56 0:00 /bin/bash /home/oracle/bin/import-dump oracle 243 0.0 0.1 1784780 56672 ? Ss 10:56 0:01 ora_cjq0_xxxdb oracle 263 0.0 0.0 1783616 25872 ? Ss 10:56 0:00 ora_q001_xxxdb oracle 266 0.0 0.0 64128 12920 ? S 10:57 0:00 impdp as sysdba' directory=data dumpfile=xxx_exp.dmp schemas=xxx version=11.1 oracle 267 0.0 0.3 1796312 115144 ? Ss 10:57 0:04 oraclexxxdb (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 269 0.0 0.0 1780916 15944 ? Ss 10:57 0:00 ora_q002_xxxdb oracle 271 0.0 0.3 1828020 117032 ? Ss 10:57 0:04 ora_dm00_xxxdb oracle 273 98.1 3.9 1981864 1293136 ? Rs 10:57 216:44 ora_dw00_xxxdb oracle 275 0.0 0.0 1790988 20540 ? Ss 10:57 0:01 ora_smco_xxxdb oracle 277 0.0 0.0 1790920 28676 ? Ss 10:57 0:01 ora_w000_xxxdb 

有大量的可用磁盘空间,表空间可以从这个报告中看到

 set linesize 150 set pagesize 50 col "Tablespace" for a25 col "Used MB" for 99,999 col "Free MB" for 99,999 col "Total MB" for 99,999 col "Max MB" for 99,999 select df.tablespace_name "Tablespace" , totalusedspace "Used MB" , (df.totalspace - tu.totalusedspace) "Free MB" , df.totalspace "Total MB" , round(100 * ( (df.totalspace - tu.totalusedspace)/ df.totalspace)) "Pct. Free" , MaxSpace "Max MB" from ( select tablespace_name , round(sum(bytes) / 1048576) TotalSpace , round(sum( case when maxbytes = 0 then bytes else maxbytes end ) / 1024 / 1024) MaxSpace from dba_data_files group by tablespace_name ) df, ( select round(sum(bytes)/(1024*1024)) totalusedspace , tablespace_name from dba_segments group by tablespace_name ) tu where df.tablespace_name = tu.tablespace_nam Tablespace Used MB Free MB Total MB Pct. Free Max MB ------------------------- ------- ------- -------- ---------- ------- SYSAUX 455 25 480 5 32,768 UNDOTBS1 127 3 130 2 32,768 XXX_T_256K 50 2 52 4 32,768 XXX_T_8M 858 43 901 5 32,768 XXX_T_256M 11,664 642 12,306 5 65,536 USERS 0 5 5 100 32,768 SYSTEM 684 6 690 1 32,768 XXX_I_8M 584 29 613 5 32,768 XXX_I_256K 5 1 6 17 32,768 XXX_I_256M 34,496 1,772 36,268 5 65,536 

没有阻塞锁

 set lines 200 set pages 50 col object1 for a30 col object2 for a30 select l.*, o1.owner || '.' || o1.object_name object1, o2.owner || '.' || o2.object_name object2 from v$lock l , dba_objects o1 , dba_objects o2 where o1.object_id = l.id1 and o2.object_id(+) = l.id2 ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK OBJECT1 OBJECT2 ---------------- ---------------- ---------- -- ---------- ---------- ---------- ---------- ---------- ---------- ------------------------------ ------------------------------ 00000000BFC51AC8 00000000BFC51B20 7 TO 12697 1 3 0 11738 0 SYS.IMPDP_STATS . 00000000BFC50F50 00000000BFC50FA8 3 RS 25 1 2 0 12155 0 SYS.PROXY_ROLE_DATA$ . 00000000BFC519E0 00000000BFC51A38 66 TS 3 1 3 0 12155 0 SYS.I_OBJ# . 00000000BFC51910 00000000BFC51968 127 MR 201 0 4 0 12155 0 SYS.I_SQL$TEXT_HANDLE . 00000000BFC510F0 00000000BFC51148 7 AE 100 0 4 0 12087 0 SYS.ORA$BASE . 00000000BFC51360 00000000BFC513B8 192 AE 100 0 4 0 12092 0 SYS.ORA$BASE . 00000000BFC51430 00000000BFC51488 190 AE 100 0 4 0 12154 0 SYS.ORA$BASE . 00000000BFC51B98 00000000BFC51BF0 196 AE 100 0 4 0 12090 0 SYS.ORA$BASE . 00000000BFC51C68 00000000BFC51CC0 195 AE 100 0 4 0 180 0 SYS.ORA$BASE . 00000000BFC527E0 00000000BFC52838 127 MR 11 0 4 0 12093 0 SYS.I_USER# . 00000000BFC50DB0 00000000BFC50E08 3 XR 4 0 1 0 12159 0 SYS.TAB$ . 00000000BFC51840 00000000BFC51898 127 MR 4 0 4 0 12155 0 SYS.TAB$ . 00000000BFC516A0 00000000BFC516F8 127 MR 2 0 4 0 12155 0 SYS.C_OBJ# . 00000000BFC528B0 00000000BFC52908 127 MR 12 0 4 0 12093 0 SYS.FET$ . 00000000BFC52628 00000000BFC52680 127 MR 10 0 4 0 12093 0 SYS.C_USER# . 00000000BFC52558 00000000BFC525B0 127 MR 8 0 4 0 12093 0 SYS.C_FILE#_BLOCK# . 00000000BFC52218 00000000BFC52270 127 MR 5 0 4 0 12093 0 SYS.CLU$ . 00000000BFC522E8 00000000BFC52340 127 MR 6 0 4 0 12093 0 SYS.C_TS# . 00000000BFC52488 00000000BFC524E0 127 MR 7 0 4 0 12093 0 SYS.I_TS# . 00000000BFC523B8 00000000BFC52410 127 MR 9 0 4 0 12093 0 SYS.I_FILE#_BLOCK# . 00000000BFC51770 00000000BFC517C8 127 MR 3 0 4 0 12155 0 SYS.I_OBJ# . 

更新

不幸的是我仍然看不出有什么问题。

从gv $ sessionselect没有行。

这里是gv $ sql的输出摘录。 它按last_load_timesorting,所以它应该显示正在进行的时间线。 ALTER PACKAGE仍然被标记为活动状态,但在三天内仅使用了182微秒,并且据我所见,没有recursionSQL语句,ALTER可能正在等待。

 SQL> select elapsed_time/1000000 seconds, s.inst_id, s.sql_text, s.users_executing, s.cpu_time, s.first_load_time, s.last_load_time 2 3 from gv$sql s 4 where users_executing > 0 5 union select elapsed_time/1000000 seconds, s.inst_id, s.sql_text, s.users_executing, s.cpu_time, s.first_load_time, s.last_load_time 6 7 8 from gv$sql s 9 where rownum < 50 10 order by last_load_time 11 / SECONDS INST_ID SQL_TEXT USERS_EXECUTING CPU_TIME FIRST_LOAD_TIME LAST_LOAD_TIME ---------- ---------- -------------------------------------------------- --------------- ---------- ------------------- ------------------- .000293 1 LOCK TABLE FOR INDEX "XXX"."PK_YYYYYYYYYYYYYYYYYY 0 572 2016-04-08/11:02:09 2016-04-08/11:02:09 " IN EXCLUSIVE MODE NOWAIT .000358 1 LOCK TABLE FOR INDEX "XXX"."IX_XXX_YYYYYYYYYYYYYY 0 2132 2016-04-08/11:02:38 2016-04-08/11:02:38 YYYYY" IN EXCLUSIVE MODE NOWAIT .000349 1 LOCK TABLE FOR INDEX "XXX"."IX_XXX_DATA_02" IN EX 0 574 2016-04-08/11:03:06 2016-04-08/11:03:06 CLUSIVE MODE NOWAIT .000402 1 INSERT INTO "SYS". "IMPDP_STATS" (TYPE,VERSION,FLA 0 289 2016-04-08/11:03:17 2016-04-08/11:03:17 GS,C1,C2,C3,C5,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11, N12,D1,CL1) VALUES ('I',5,2,:B3 ,NULL,NULL,:B2 ,15 219,31,15219,1,1,2108,1,15219,NULL,NULL,NULL,NULL, TO_DATE('2014-11-15 19:10:36',:B1 ),NULL) .000405 1 INSERT INTO "SYS". "IMPDP_STATS" (TYPE,VERSION,FLA 0 0 2016-04-08/11:03:17 2016-04-08/11:03:17 GS,C1,C2,C3,C5,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11, N12,D1,CL1) VALUES ('I',5,2,:B3 ,NULL,NULL,:B2 ,10 6867,670,713,1,6,4759,2,106867,NULL,NULL,NULL,NULL ,TO_DATE('2016-03-19 19:19:38',:B1 ),NULL) .000419 1 INSERT INTO "SYS". "IMPDP_STATS" (TYPE,VERSION,FLA 0 743 2016-04-08/11:03:17 2016-04-08/11:03:17 GS,C1,C2,C3,C5,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11, N12,D1,CL1) VALUES ('I',5,2,:B3 ,NULL,NULL,:B2 ,13 7849,1763,11,160,686,7556,2,137849,NULL,NULL,NULL, NULL,TO_DATE('2016-02-20 19:20:18',:B1 ),NULL) .000425 1 INSERT INTO "SYS". "IMPDP_STATS" (TYPE,VERSION,FLA 0 0 2016-04-08/11:03:17 2016-04-08/11:03:17 GS,C1,C2,C3,C5,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11, N12,D1,CL1) VALUES ('I',5,2,:B3 ,NULL,NULL,:B2 ,70 9979,2005,3,668,18908,56726,2,709979,NULL,NULL,NUL L,NULL,TO_DATE('2016-03-26 19:19:30',:B1 ),NULL) .000451 1 INSERT INTO "SYS". "IMPDP_STATS" (TYPE,VERSION,FLA 0 280 2016-04-08/11:03:17 2016-04-08/11:03:17 GS,C1,C2,C3,C5,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11, N12,D1,CL1) VALUES ('I',5,2,:B3 ,NULL,NULL,:B2 ,0, 0,0,0,0,0,0,0,NULL,NULL,NULL,NULL,TO_DATE('2016-02 -20 19:20:18',:B1 ),NULL) .001567 1 delete from viewtrcol$ where obj#=:1 0 1405 2016-04-08/10:57:24 2016-04-08/11:03:18 .000182 1 ALTER PACKAGE "XXX"."XXX_AQ_PUT" COMPILE BODY 1 372 2016-04-08/11:03:25 2016-04-08/11:03:25 PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= I NTERPRETED PLSQL_DEBUG= FALSE PLSCOPE_SETTI NGS= 'IDENTIFIERS:NONE' REUSE SETTINGS TIMESTAMP '2015-06-02 13:31:03' .003691 1 insert into wrh$_filemetric_history (snap_id, 0 2914 2016-04-08/11:06:36 2016-04-08/11:06:36 dbid, instance_number, fileid, creationtime, begin_time, end_time, intsize, group_id, avgreadtime, avgwritetime, physicalread, phy sicalwrite, phyblkread, phyblkwrite) select :snap_id, :dbid, :instance_number, fileid, cr eationtime, begtime, endtime, intsize_csec, g roupid, avrdtime, avwrtime, phyread, phy write, phybkrd, phybkwr from x$kewmflmv .004734 1 INSERT INTO WRH$_METRIC_NAME(dbid, GROUP_ID, METRI 0 2384 2016-04-08/11:06:36 2016-04-08/11:06:36 C_ID, GROUP_NAME, METRIC_NAME, METRIC_UNIT) SELECT DISTINCT :dbid, GROUP_ID, METRIC_ID, GROUP_NAME, METRIC_NAME, METRIC_UNIT FROM V$METRICNAME .009059 1 SELECT COUNT(*) FROM (SELECT TOP_LEVEL_CALL#, TOP_ 0 4325 2016-04-08/11:06:36 2016-04-08/11:06:36 LEVEL_CALL_NAME FROM V$TOPLEVELCALL MINUS SELECT T OP_LEVEL_CALL#, TOP_LEVEL_CALL_NAME FROM WRH$_TOPL EVELCALL_NAME WHERE dbid = :dbid) .003014 1 delete from WRH$_ENQUEUE_STAT tab where (:beg_snap 0 2124 2016-04-08/11:26:19 2016-04-08/11:26:19 <= tab.snap_id and tab.snap_id <= :end_sn ap and dbid = :dbid) and not exists (se lect 1 from WRM$_BASELINE b whe re (tab.dbid = b.dbid) and (tab.snap_id >= b.start_snap_id) and (tab.snap_id <= b.end_snap_id)) 

也看不到太多的dba_resumables

  1* select * from dba_resumable USER_ID SESSION_ID INSTANCE_ID COORD_INSTANCE_ID COORD_SESSION_ID STATUS TIMEOUT START_TIME SUSPEND_TIME RESUME_TIME NAME SQL_TEXT ERROR_NUMBER ERROR_PARAMETER1 ERROR_PARAMETER2 ERROR_PARAMETER3 ERROR_PARAMETER4 ERROR_PARAMETER5 ERROR_MSG ---------- ---------- ----------- ----------------- ---------------- --------- ---------- -------------------- -------------------- -------------------- ------------------------------ -------------------------------------------------- ------------ -------------------- -------------------- -------------------- -------------------- -------------------- -------------------------------------------------- 0 196 1 NORMAL 7200 SYS.SYS_IMPORT_SCHEMA_01 BEGIN :1 := sys.kupc$que_int.receive(:2); END; 0 0 7 1 NORMAL 7200 SYS.SYS_IMPORT_SCHEMA_01.1 ALTER PACKAGE "XXX"."XXX_AQ_PUT" COMPILE BODY 0 PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= I NTERPRETED PLSQL_DEBUG= FALSE PLSCOPE_SETTI NGS= 'IDENTIFIERS:NONE' REUSE SETTINGS TIMESTAMP '2015-06-02 13:31:03' 

我感觉卡住了:-(

查找阻塞锁的最简单方法是查看会话。 通常情况下,最好的方法是查找阻止,而不是阻止什么

 select * from gv$session where blocking_session is not null 

ALTER可能正在等待一个recursion的SQL语句。 这些陈述并不总是被视为“封锁”。 运行此语句以查看正在运行的其他SQL。 如果你幸运的话,会有一个几乎和ALTER一样长的声明; 这将是下一个要调查的查询:

 select elapsed_time/1000000 seconds, gv$sql.* from gv$sql where users_executing > 0 order by users_executing desc; 

为了研究空间问题,最好查看DBA_RESUMABLE而不是特定的空间大小。 Oracle有很多方法可能会耗尽空间。 表空间可能看起来不错,但ASM或操作系统可能没有空间。

 select * from dba_resumable; 

基于更新,它看起来像导入的数据包含高级队列对象。 高级队列有额外的导入和导出限制 。 AQ的一切都是“特殊的”。 希望你的组织有一个专门从事AQ的人。 如果您需要为此问题创build支持请求,则不会感到意外。