【DB笔试面试164】在Oracle中,如何彻底停止expdp数据泵进程?

前端之家收集整理的这篇文章主要介绍了【DB笔试面试164】在Oracle中,如何彻底停止expdp数据泵进程?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

真题1、如何彻底停止expdp进程?


@H_301_18@答案:许多同事在使用@H_301_18@expdp@H_301_18@命令时,不小心按了@H_301_18@CTRL+C@H_301_18@组合键,然后又输入@H_301_18@exit@H_301_18@命令(或者网络中断等异常情况),导致expdp进程不存在,但Oracle数据库的会话仍存在,所以dmp文件也一直在增长。@H_301_18@在这种情况下的处理办法如下所示:@H_301_18@

@H_301_18@1@H_301_18@、检查@H_301_18@expdp@H_301_18@进程是否还在@H_301_18@

@H_301_18@ps -ef | grep expdp

@H_301_18@若存在,则可用“@H_301_18@kill -9 process@H_301_18@”命令杀掉@H_301_18@expdp@H_301_18@的进程。@H_301_18@

@H_301_18@2@H_301_18@、检查会话是否仍存在,若存在则把相关的会话杀掉(注意:先使用命令“@H_301_18@ALTER SYSTEM KILL SESSION SID,SERIAL# IMMEDIATE;@H_301_18@”在数据库级别杀掉会话,然后在@H_301_18@OS@H_301_18@级别使用@H_301_18@kill -9@H_301_18@杀掉进程),如无杀会话的权限则可以将相关的表@H_301_18@DROP@H_301_18@掉,表名可以使用如下的@H_301_18@sql@H_301_18@来查询:@H_301_18@

@H_301_18@SELECT * FROM DBA_DATAPUMP_SESSIONS;

@H_301_18@SELECT * FROM DBA_DATAPUMP_JOBS;

@H_301_18@例如:@H_301_18@

@H_301_18@SYS@orclasm > SELECT * FROM DBA_DATAPUMP_SESSIONS;

@H_301_18@OWNER_NAME JOB_NAME INST_ID SADDR SESSION_TYPE

@H_301_18@---------- ------------------------- ---------- ---------------- --------------

@H_301_18@LHRSYS_EXPORT_SCHEMA_04@H_301_18@ 1 00000000A8B71D98 MASTER

@H_301_18@LHR SYS_EXPORT_SCHEMA_04 1 00000000AB98AFC8 WORKER

@H_301_18@@H_301_18@SYS@orclasm >@H_301_18@DROP TABLE LHR.SYS_EXPORT_SCHEMA_04 PURGE;

@H_301_18@Table dropped.

@H_301_18@SYS@orclasm > SELECT * FROM DBA_DATAPUMP_SESSIONS;

@H_301_18@no rows selected

@H_301_18@SYS@orclasm > SELECT * FROM DBA_DATAPUMP_JOBS;

@H_301_18@no rows selected

@H_301_18@使用相同的办法也删除从视图@H_301_18@DBA_DATAPUMP_JOBS@H_301_18@中查询出来的表,直到这两个视图无记录。@H_301_18@

@H_301_18@3@H_301_18@、删除导出的@H_301_18@dmp@H_301_18@文件。如不删除,则在重新执行@H_301_18@expdp@H_301_18@命令时会报@H_301_18@dmp@H_301_18@文件已存在的错误。@H_301_18@

@H_301_18@这里作者给出自己常用的一个@H_301_18@sql@H_301_18@语句,可以查询@H_301_18@expdp@H_301_18@的相关会话的详细信息,如下所示:@H_301_18@

@H_301_18@---------------------------@H_301_18@如何彻底停止@H_301_18@expdp@H_301_18@进程?@H_301_18@

@H_301_18@SET LINE 9999

@H_301_18@COL OWNER_NAME FOR A10

@H_301_18@COL JOB_NAME FOR A25

@H_301_18@COL OPERATION FOR A10

@H_301_18@COL JOB_MODE FOR A10

@H_301_18@COL STATE FOR A15

@H_301_18@COL OSUSER FOR A10

@H_301_18@COL "DEGREE|ATTACHED|DATAPUMP" FOR A25

@H_301_18@COL SESSION_INFO FOR A20

@H_301_18@SELECT DS.INST_ID,

@H_301_18@ DJ.OWNER_NAME,

@H_301_18@ DJ.JOB_NAME,

@H_301_18@ TRIM(DJ.OPERATION) OPERATION,

@H_301_18@ TRIM(DJ.JOB_MODE) JOB_MODE,

@H_301_18@ DJ.STATE,

@H_301_18@ DJ.DEGREE || ',' || DJ.ATTACHED_SESSIONS || ',' ||DJ.DATAPUMP_SESSIONS "DEGREE|ATTACHED|DATAPUMP",

@H_301_18@ DS.SESSION_TYPE,

@H_301_18@ S.OSUSER,

@H_301_18@ (SELECT S.SID || ',' || S.SERIAL# || ',' || P.SPID

@H_301_18@ FROM GV$PROCESS P

@H_301_18@ WHERE S.PADDR = P.ADDR

@H_301_18@ AND S.INST_ID = P.INST_ID) SESSION_INFO

@H_301_18@ FROM DBA_DATAPUMP_JOBS DJ --GV$DATAPUMP_JOB

@H_301_18@ FULL OUTER JOIN DBA_DATAPUMP_SESSIONS DS --GV$DATAPUMP_SESSION

@H_301_18@ ON (DJ.JOB_NAME = DS.JOB_NAME AND DJ.OWNER_NAME = DS.OWNER_NAME)

@H_301_18@ LEFT OUTER JOIN GV$SESSION S

@H_301_18@ ON (S.SADDR = DS.SADDR AND DS.INST_ID = S.INST_ID)

@H_301_18@ORDER BY DJ.OWNER_NAME,DJ.JOB_NAME;

@H_301_18@

@H_301_18@

@H_301_18@

@H_301_18@

@H_301_18@select * from GV$DATAPUMP_SESSION;

@H_301_18@select * from GV$datapump_jobs;

@H_301_18@select * From dba_datapump_jobs;

猜你在找的Oracle相关文章