问题描述
我在11.2和12.1上,想用纯SQL监视datapump会话 (我不允许在数据库上创建对象)。
我可以使用以下方式监控:
-----------
但是我想从各个工人那里获得信息-例如在ie中。状态命令从附加到datadump会话。我可以使用PL/SQL这样得到它,但我正在寻找纯SQL而不创建对象:
我可以在12.1做一个内联函数,它的api调用?或者我可以使用内部视图来获取工人的身份?
关于DK的梅特
我可以使用以下方式监控:
select ss.sid , s.job_name , j.state --, j.job_mode --, j.degree , dbms_rcvman.Sec2DisplayTime(l.time_remaining) remain --, round((l.sofar/l.totalwork)*100,2) done --, s.owner_name , sq.sql_text , l.message , l.totalwork , l.sofar , round((l.sofar/l.totalwork)*100,2) done , l.sql_id , ss.event , ss.state , ss.seconds_in_wait from dba_datapump_jobs j left join dba_datapump_sessions s on (s.job_name = j.job_name) left join v$session ss on (ss.saddr = s.saddr) left join v$sql sq on (ss.sql_id = sq.sql_id) left join v$session_longops l on (l.sql_id = ss.sql_id) WHERE 1=1 and ss.module='Data Pump Worker' --and l.time_remaining > 0 order by sid, l.start_time ;复制
-----------
但是我想从各个工人那里获得信息-例如在ie中。状态命令从附加到datadump会话。我可以使用PL/SQL这样得到它,但我正在寻找纯SQL而不创建对象:
DECLARE ind NUMBER; h1 NUMBER; percent_done NUMBER; job_state VARCHAR2(30); js ku$_JobStatus; ws ku$_WorkerStatusList; sts ku$_Status; BEGIN h1 := DBMS_DATAPUMP.attach('SYS_IMPORT_FULL_01', 'SYSTEM'); dbms_datapump.get_status(h1, dbms_datapump.ku$_status_job_error + dbms_datapump.ku$_status_job_status + dbms_datapump.ku$_status_wip, 0, job_state, sts); js := sts.job_status; ws := js.worker_status_list; dbms_output.put_line('*** Job percent done = ' || to_char(js.percent_done)); dbms_output.put_line('restarts - '||js.restart_count); ind := ws.first; while ind is not null loop dbms_output.put_line( ws(ind).worker_number || ',' || ws(ind).state || ',' || ws(ind).schema || ',' || ws(ind).NAME || ',' || ws(ind).object_type || ',' || ws(ind).degree || ',' || ws(ind).percent_done || ',' || ws(ind).COMPLETED_ROWS ); -- dbms_output.put_line('rows completed - '|| ws(ind)); ind := ws.next(ind); end loop; DBMS_DATAPUMP.detach(h1); end; /复制
我可以在12.1做一个内联函数,它的api调用?或者我可以使用内部视图来获取工人的身份?
关于DK的梅特
专家解答
你的例子没有创建任何对象?这只是一个匿名的街区。
无论如何,从12.1开始,您可以在w跟子句中定义PL/SQL函数。所以你可以做这样的事情:
无论如何,从12.1开始,您可以在w跟子句中定义PL/SQL函数。所以你可以做这样的事情:
with FUNCTION get_job ( job_name varchar2, owner_name varchar2 ) RETURN INT AS ind NUMBER; h1 NUMBER; percent_done NUMBER; job_state VARCHAR2(30); js ku$_JobStatus; ws ku$_WorkerStatusList; sts ku$_Status; BEGIN h1 := DBMS_DATAPUMP.attach(job_name, owner_name); dbms_datapump.get_status(h1, dbms_datapump.ku$_status_job_error + dbms_datapump.ku$_status_job_status + dbms_datapump.ku$_status_wip, 0, job_state, sts); js := sts.job_status; ws := js.worker_status_list; dbms_output.put_line('*** Job percent done = ' || to_char(js.percent_done)); dbms_output.put_line('restarts - '||js.restart_count); ind := ws.first; while ind is not null loop dbms_output.put_line( ws(ind).worker_number || ',' || ws(ind).state || ',' || ws(ind).schema || ',' || ws(ind).NAME || ',' || ws(ind).object_type || ',' || ws(ind).degree || ',' || ws(ind).percent_done || ',' || ws(ind).COMPLETED_ROWS ); -- dbms_output.put_line('rows completed - '|| ws(ind)); ind := ws.next(ind); end loop; DBMS_DATAPUMP.detach(h1); return 1; exception when others then if sqlcode = -31626 then return 1; else raise; end if; end; select job_name , owner_name, get_job ( job_name , owner_name ) from dba_datapump_jobs; / JOB_NAME OWNER_NAME GET_JOB(JOB_NAME,OWNER_NAME) SYS_IMPORT_SCHEMA_04 CHRIS 1 SYS_IMPORT_TABLE_01 CHRIS 1 SYS_IMPORT_SCHEMA_11 CHRIS 1 SYS_IMPORT_TABLE_04 CHRIS 1 IMPORT_JOB_SQLDEV_206 CHRIS 1 SYS_IMPORT_TABLE_05 CHRIS 1 SYS_IMPORT_TABLE_03 CHRIS 1 SYS_IMPORT_TABLE_06 CHRIS 1 SYS_IMPORT_SCHEMA_10 CHRIS 1复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle DataGuard高可用性解决方案详解
孙莹
509次阅读
2025-03-26 23:27:33
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
489次阅读
2025-04-15 17:24:06
墨天轮个人数说知识点合集
JiekeXu
406次阅读
2025-04-01 15:56:03
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
401次阅读
2025-04-08 09:12:48
Oracle SQL 执行计划分析与优化指南
Digital Observer
381次阅读
2025-04-01 11:08:44
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
370次阅读
2025-04-18 14:18:38
Oracle 19c RAC更换IP实战,运维必看!
szrsu
346次阅读
2025-04-08 23:57:08
oracle定时任务常用攻略
virvle
317次阅读
2025-03-25 16:05:19
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
316次阅读
2025-04-15 14:48:05
风口浪尖!诚通证券扩容采购Oracle 793万...
Roger的数据库专栏
312次阅读
2025-03-24 09:42:53