精华内容
下载资源
问答
  • jobs简介

    2021-05-11 11:51:23
    jobs简介jobs可以显示当前shell 环境中已启动的作业状态。用linux的时候经常会碰到类似这种情形,复制,下载一个很大的文件或编辑一个文件,任务占据着界面不能做其他操作,这个时候想不暂停或中止任务去做别的操作...

    jobs简介

    jobs可以显示当前shell 环境中已启动的作业状态。

    用linux的时候经常会碰到类似这种情形,复制,下载一个很大的文件或编辑一个文件,任务占据着界面不能做其他操作,这个时候想不暂停或中止任务去做别的操作就可以将正在执行的命令送往后台去运行。

    作业:作业号

    # jobs

    作业控制命令:

    # fg [[%]JOBNUM] :将制定命令调回前台

    # bg [[%]JOBNUM] :让送往后台的作业在后台继续运行

    # kill %JOBNUM :终止制定的作业

    fg,bg的时候:%可以省略

    kill %JOBNUM :%不可省略

    PS:"n"为jobs查看到的进程编号.

    fg、bg、jobs、&、ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的

    & :这个用在一个命令的最后,可以把这个命令放到后台执行

    ctrl + z:可以将一个正在前台执行的命令放到后台,并且暂停

    jobs:查看当前有多少在后台运行的命令

    如果 JobID 参数没有指定特定作业,就显示所有的活动的作业的状态信息。如果报告了一个作业的终止,shell 从当前的 shell 环境已知的列表中删除作业的进程标识。

    fg:将后台中的命令调至前台继续运行

    如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

    bg:将一个在后台暂停的命令,变成继续执行

    如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

    细节,讲解

    概念:当前任务

    如果后台的任务号有2个,[1],[2];如果当第一个后台任务顺利执行完毕,第二个后台任务还在执行中时,当前任务便会自动变成后台任务号码“[2]”的后台任务。所以可以得出一点,即当前任务是会变动的。当用户输入“fg”、“bg”和“stop”等命令时,如果不加任何引号,则所变动的均是当前任务。

    察看jobs

    使用jobs或ps命令可以察看正在执行的jobs。

    jobs命令执行的结果,+表示是一个当前的作业,减号表是是一个当前作业之后的一个作业,jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated,但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识;也就是说,jobs命令显示的是当前shell环境中所起的后台正在运行或者被挂起的任务信息;

    进程的挂起

    后台进程的挂起:

    在solaris中通过stop命令执行,通过jobs命令查看job号(假设为num),然后执行stop %num;

    在redhat中,不存在stop命令,可通过执行命令kill -stop PID,将进程挂起;

    当要重新执行当前被挂起的任务时,通过bg %num 即可将挂起的job的状态由stopped改为running,仍在后台执行;当需要改为在前台执行时,执行命令fg %num即可;

    前台进程的挂起:

    ctrl+Z;

    进程的终止

    后台进程的终止:

    方法一:

    通过jobs命令查看job号(假设为num),然后执行kill %num

    方法二:

    通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid

    前台进程的终止:

    ctrl+c

    扩展知识:

    kill的其他作用

    kill除了可以终止进程,还能给进程发送其它信号,使用kill -l 可以察看kill支持的信号。

    SIGTERM是不带参数时kill发送的信号,意思是要进程终止运行,但执行与否还得看进程是否支持。如果进程还没有终止,可以使用kill -SIGKILL pid,这是由内核来终止进程,进程不能监听这个信号。

    关闭终端,此终端的后台job继续运行

    按照上面的方法在当前终端运行的命令将他们调到后台去后,如果关闭了终端这些后台的jobs都会关闭。假如我们登陆到服务器下载一个东西,下载的很慢,下班时间到了,总不能不关掉电脑回家吧,这个时候介绍一个新命令

    nohup,

    nohup /root/start.sh &

    在shell中回车后提示:

    [~]$ appending output to nohup.out

    原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用。

    关于nohup的详细使用,可以查看我以后的博客。

    原创文章,作者:瓶云,如若转载,请注明出处:http://www.178linux.com/4707

    展开全文
  • jobs 查看后台运行的进程3. fg %n 让后台运行的进程n到前台来4. bg %n 让进程n到后台去;PS:"n"为jobs查看到的进程编号.B. 命令详解fg、bg、jobs、&、ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要...

    A,Shell支持作用控制,有以下命令:

    1. command& 让进程在后台运行

    2. jobs 查看后台运行的进程

    3. fg %n 让后台运行的进程n到前台来

    4. bg %n 让进程n到后台去;

    PS:"n"为jobs查看到的进程编号.

    B. 命令详解

    fg、bg、jobs、&、ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的

    一。& 最经常被用到

    这个用在一个命令的最后,可以把这个命令放到后台执行

    二。ctrl + z

    可以将一个正在前台执行的命令放到后台,并且暂停

    三。jobs

    查看当前有多少在后台运行的命令

    四。fg

    将后台中的命令调至前台继续运行

    如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

    五。bg

    将一个在后台暂停的命令,变成继续执行

    如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

    #Linux下使用Shell命令控制任务Jobs执行

    下列命令可以用来操纵进程任务:

    ps 列出系统中正在运行的进程;

    kill 发送信号给一个或多个进程(经常用来杀死一个进程);

    jobs 列出当前shell环境中已启动的任务状态,若未指定jobsid,则显示所有活动的任务状态信息;如果报告了一个任务的终止(即任务的状态被标记为Terminated),shell 从当前的shell环境已知的列表中删除任务的进程标识;

    bg 将进程搬到后台运行(Background);

    fg 将进程搬到前台运行(Foreground);

    将job转移到后台运行

    如果你经常在X图形下工作,你可能有这样的经历:通过终端命令运行一个GUI程序,GUI界面出来了,但是你的终端还停留在原地,你不能在shell中继续执行其他命令了,除非将GUI程序关掉。

    为了使程序执行后终端还能继续接受命令,你可以将进程移到后台运行,使用如下命令运行程序: #假设要运行xmms

    $xmms &

    这样打开xmms后,终端的提示又回来了。现在xmms在后台运行着呢;但万一你运行程序时忘记使用“&”了,又不想重新执行;你可以先使用ctrl+z挂起程序,然后敲入bg命令,这样程序就在后台继续运行了。

    概念:当前任务

    如果后台的任务号有2个,[1],[2];如果当第一个后台任务顺利执行完毕,第二个后台任务还在执行中时,当前任务便会自动变成后台任务号码“[2]”的后台任务。所以可以得出一点,即当前任务是会变动的。当用户输入“fg”、“bg”和“stop”等命令时,如果不加任何引号,则所变动的均是当前任务。

    察看jobs

    使用jobs或ps命令可以察看正在执行的jobs。

    jobs命令执行的结果,+表示是一个当前的作业,减号表是是一个当前作业之后的一个作业,jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated,但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识;也就是说,jobs命令显示的是当前shell环境中所起的后台正在运行或者被挂起的任务信息;

    进程的挂起

    后台进程的挂起:

    在solaris中通过stop命令执行,通过jobs命令查看job号(假设为num),然后执行stop %num;

    在redhat中,不存在stop命令,可通过执行命令kill -stop PID,将进程挂起;

    当要重新执行当前被挂起的任务时,通过bg %num 即可将挂起的job的状态由stopped改为running,仍在后台执行;当需要改为在前台执行时,执行命令fg %num即可;

    前台进程的挂起:

    ctrl+Z;

    进程的终止

    后台进程的终止:

    方法一:

    通过jobs命令查看job号(假设为num),然后执行kill %num

    方法二:

    通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid

    前台进程的终止:

    ctrl+c

    kill的其他作用

    kill除了可以终止进程,还能给进程发送其它信号,使用kill -l 可以察看kill支持的信号。

    SIGTERM是不带参数时kill发送的信号,意思是要进程终止运行,但执行与否还得看进程是否支持。如果进程还没有终止,可以使用kill -SIGKILL pid,这是由内核来终止进程,进程不能监听这个信号。

    ===================

    Unix/Linux下一般想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台:

    /usr/local/mysql/bin/mysqld_safe --user=mysql &

    但是我们很多程序并不象mysqld一样可以做成守护进程,可能我们的程序只是普通程序而已,一般这种 程序即使使用 & 结尾,如果终端关闭,那么程序也会被关闭。为了能够后台运行,我们需要使用nohup这个命令,比如我们有个start.sh需要在后台运行,并且希望在 后台能够一直运行,那么就使用nohup:

    nohup /root/start.sh &

    在shell中回车后提示:

    [~]$ appending output to nohup.out

    原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用。

    但是有时候在这一步会有问题,当把终端关闭后,进程会自动被关闭,察看nohup.out可以看到在关闭终端瞬间服务自动关闭。

    咨询红旗Linux工程师后,他也不得其解,在我的终端上执行后,他启动的进程竟然在关闭终端后依然运行。

    在第二遍给我演示时,我才发现我和他操作终端时的一个细节不同:他是在当shell中提示了nohup成 功后还需要按终端上键盘任意键退回到shell输入命令窗口,然后通过在shell中输入exit来退出终端;而我是每次在nohup执行成功后直接点关 闭程序按钮关闭终端.。所以这时候会断掉该命令所对应的session,导致nohup对应的进程被通知需要一起shutdown。

    这个细节有人和我一样没注意到,所以在这儿记录一下了。

    附:nohup命令参考

    nohup 命令

    用途:不挂断地运行命令。

    语法:nohup Command [ Arg ... ] [ & ]

    描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示"and"的符号)到命令的尾部。

    无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。

    退出状态:该命令返回下列出口值:

    126 可以查找但不能调用 Command 参数指定的命令。

    127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。

    否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

    nohup命令及其输出文件

    nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。

    该命令的一般形式为:nohup command &

    使用nohup命令提交作业

    如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:

    nohup command > myout.file 2>&1 &

    在上面的例子中,输出被重定向到myout.file文件中。

    使用 jobs 查看任务。

    使用 fg %n 关闭。

    另外有两个常用的ftp工具ncftpget和ncftpput,可以实现后台的ftp上传和下载,这样就可以利用这些命令在后台上传和下载文件了。

    简单而有用的nohup命令在UNIX/LINUX中,普通进程用&符号放到后台运行,如果启动该程序的控制台logout,则该进程随即终止。

    要实现守护进程,一种方法是按守护进程的规则去编程(本站有文章介绍过),比较麻烦;另一种方法是仍然用普通方法编程,然后用nohup命令启动程序:

    nohup<程序名>&

    则控制台logout后,进程仍然继续运行,起到守护进程的作用(虽然它不是严格意义上的守护进程)。

    使用nohup命令后,原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用,实现了完整的守护进程功能。

    ygwu @ 2005年04月18日 上午10:03

    For example:

    如何远程启动WebLogic服务?

    用telnet远程控制服务器,远程启动WEBLOGIC服务,启动后关闭telnet,WebLogic服务也跟着停止,这是因为使用telnet启动的进程会随着telnet进程的关闭而关闭。所以我们可以使用一些UNIX下的命令来做到不关闭。

    使用如下命令:

    nohup startWeblogic.sh&

    如果想要监控标准输出可以使用:

    tail -f nohup.out

    当在后台运行了程序的时候,可以用jobs命令来查看后台作业的状态。在有多个后台程序时,要使用来参数的fg命令将不同序号的后台作业切换到前台上运行。

    当用户启动一个进程的时候,这个进程是运行在前台,使用与相应控制终端相联系的标准输入、输出进行输 入和输出。即使将进程的输入输出重定向,并将进程放在后台执行,进程仍然和当前终端设备有关系。正因为如此,在当前的登录会话结束时,控制终端设备将和登 录进程相脱离,那么系统就向所有与这个终端相联系的进程发送SIGHUP的信号,通知进程线路已经挂起了,如果程序没有接管这个信号的处理,那么缺省的反 应是进程结束。因此普通的程序并不能真正脱离登录会话而运行进程,为了使得在系统登录后还可以正常执行,只有使用命令nohup来启动相应程序。

    使用命令nohup当然可以启动这样的程序,但nohup启动的程序在进程执行完毕就退出,而常见的 一些服务进程通常永久的运行在后台,不向屏幕输出结果。在Unix中这些永久的后台进程称为守护进程(daemon)。守护进程通常从系统启动时自动开始 执行,系统关闭时才停止。

    在守护进程中,最重要的一个是超级守护进程inetd,这个进程接管了大部分网络服务,但并不是对每 个服务都自己进行处理,而是依据连接请求,启动不同的服务程序与客户机打交道。inetd支持网络服务种类在它的设置文件/etc/inet.conf中 定义。inet.conf文件中的每一行就对应一个端口地址,当inetd接受到连接这个端口的连接请求时,就启动相应的进程进行处理。使用inetd的 好处是系统不必启动很多守护进程,从而节约了系统资源,然而使用inetd启动守护进程相应反应会迟缓一些,不适合用于被密集访问的服务进程

    展开全文
  • jobs 命令示例

    2021-05-11 07:01:57
    关于 /usr/bin/jobs 和 shell 内建的说明 输入以下 type 命令找出是否 jobs 命令是 shell 的内建命令或是外部命令还是都是: $ type-a jobs 输出示例: jobsisa shell builtin jobsis/usr/bin/jobs 在几乎所有情况下...

    我是个新的 Linux/Unix 用户。我该如何在 Linux 或类 Unix 系统中使用 BASH/KSH/TCSH 或者基于 POSIX 的 shell 来查看当前正在进行的作业(job)?在 Unix/Linux 上怎样显示当前作业的状态?(LCTT 译注:job,也常称为“任务”)

    作业控制是一种能力,可以停止/暂停进程(命令)的执行并按你的要求继续/恢复它们的执行。这是通过你的操作系统和诸如 bash/ksh 或 POSIX shell 等 shell 来执行的。

    d6516850bea63ccc2c3452f8f0658ddf.png

    shell 会将当前所执行的作业保存在一个表中,可以用 jobs 命令来显示。

    用途

    在当前 shell 会话中显示作业的状态。

    语法

    其基本语法如下:

    jobs

    jobs jobID

    或者

    jobs[options]jobID

    启动一些作业来进行示范

    在开始使用 jobs 命令前,你需要在系统上先启动多个作业。执行以下命令来启动作业:

    ### 启动 xeyes, calculator, 和 gedit 文本编辑器 ###

    xeyes&

    gnome-calculator&

    gedit fetch-stock-prices.py&

    最后,在前台运行 ping 命令:

    pingwww.cyberciti.biz

    按 Ctrl-Z 键来挂起(suspend) ping 命令的作业。

    jobs 命令示例

    要在当前 shell 显示作业的状态,请输入:

    $ jobs

    输出示例:

    [1]7895Runninggpass&

    [2]7906Runninggnome-calculator&

    [3]-7910Runninggedit fetch-stock-prices.py&

    [4]+7946Stoppedpingcyberciti.biz

    要显示名字以“p”开头的进程 ID 或作业名称,输入:

    $ jobs-p%p

    或者

    $ jobs%p

    输出示例:

    [4]-Stoppedpingcyberciti.biz

    字符 % 是一个指定任务的方法。在这个例子中,你可以使用作业名称开头字符串来来暂停它,如 %ping。

    如何显示进程 ID 不包含其他正常的信息?

    通过 jobs 命令的 -l(小写的 L)选项列出每个作业的详细信息,运行:

    $ jobs-l

    示例输出:

    f16d10dea5c1fe6c813589730589fb35.png

    Fig.01: 在 shell 中显示 jobs 的状态

    如何只列出最近一次状态改变的进程?

    首先,启动一个新的工作如下所示:

    $sleep100&

    现在,只显示自从上次提示过停止或退出之后的作业,输入:

    $ jobs-n

    示例输出:

    [5]-Runningsleep100&

    仅显示进程 ID(PID)

    通过 jobs 命令的 -p 选项仅显示 PID:

    $ jobs-p

    示例输出:

    7895

    7906

    7910

    7946

    7949

    怎样只显示正在运行的作业呢?

    通过 jobs 命令的 -r 选项只显示正在运行的作业,输入:

    $ jobs-r

    示例输出:

    [1]Runninggpass&

    [2]Runninggnome-calculator&

    [3]-Runninggedit fetch-stock-prices.py&

    怎样只显示已经停止工作的作业?

    通过 jobs 命令的 -s 选项只显示停止工作的作业,输入:

    $ jobs-s

    示例输出:

    [4]+Stoppedpingcyberciti.biz

    要继续执行 ping cyberciti.biz 作业,输入以下 bg 命令:

    $ bg%4

    jobs 命令选项

    摘自 bash(1) 命令 man 手册页:

    选项描述

    -l

    列出进程 ID 及其它信息。

    -p

    仅列出进程 ID。

    -n

    仅列出自从上次输出了状态变化提示(比如显示有进程退出)后的发生了状态变化的进程。

    -r

    仅显示运行中的作业。

    -s

    仅显示停止的作业。

    -x

    运行命令及其参数,并用新的命令的进程 ID 替代所匹配的原有作业的进程组 ID。

    关于 /usr/bin/jobs 和 shell 内建的说明

    输入以下 type 命令找出是否 jobs 命令是 shell 的内建命令或是外部命令还是都是:

    $ type-a jobs

    输出示例:

    jobsisa shell builtin

    jobsis/usr/bin/jobs

    在几乎所有情况下,你都需要使用 BASH/KSH/POSIX shell 内建的jobs 命令。/usr/bin/jobs 命令不能被用在当前 shell 中。/usr/bin/jobs 命令工作在不同的环境中,并不共享其父 bash/ksh 的 shell 作业。

    作者:Vivek Gite 译者:strugglingyouth 校对:wxy

    本文由 LCTT 原创编译,Linux中国 荣誉推出

    0b1331709591d260c1c78e86d0c51c18.png

    展开全文
  • 今天群里面有兄弟在问关于dba_datapump_jobs中的not running的作业的清除的方法及not running状态的代表什么意思。not running状态的作业有两个意思1,作业被暂停。2,dw/dm进程crash,但是master table还存在其实...

    今天群里面有兄弟在问关于dba_datapump_jobs中的not running的作业的清除的方法及not running状态的代表什么意思。

    not running状态的作业有两个意思

    1,作业被暂停。

    2,dw/dm进程crash,但是master table还存在

    其实多数情况下是属于2,关于怎么清除相当作业,可以看下面的MOS文件,已经写得相当的好,并且还是中文的

    欢迎大家加入ORACLE超级群:17115662 免费解决各种ORACLE问题,以后BLOG将迁移到

    如何清除 DBA_DATAPUMP_JOBS 视图中的异常数据泵作业? (文档 ID 1626201.1)

    7e65a287c3627203ded27a53820e4d1d.gif

    文档内容

    适用于:

    Oracle Database - Enterprise Edition - 版本 10.1.0.2 到 11.2.0.3 [发行版 10.1 到 11.2]

    本文档所含信息适用于所有平台

    目标

    如何清除 DBA_DATAPUMP_JOBS 视图中的异常数据泵作业?

    解决方案

    用于这个例子中的作业:

    - 导出作业 SCOTT.EXPDP_20051121 是一个正在运行的 schema 级别的导出作业

    - 导出作业 SCOTT.SYS_EXPORT_TABLE_01 是一个表级别的异常导出作业

    - 导出作业 SCOTT.SYS_EXPORT_TABLE_02 是一个表级别的停止导出作业

    - 导出作业 SYSTEM.SYS_EXPORT_FULL_01 是一个被暂停的全库导出作业

    第1步. 用 SQL*PLUS 判断在数据库中有哪些数据泵作业

    %sqlplus /nolog

    CONNECT / as sysdba

    SET lines 200

    COL owner_name FORMAT a10;

    COL job_name FORMAT a20

    COL state FORMAT a12

    COL operation LIKE state

    COL job_mode LIKE state

    --查找数据泵作业:

    SELECT owner_name, job_name, operation, job_mode,

    state, attached_sessions

    FROM dba_datapump_jobs

    WHERE job_name NOT LIKE 'BIN$%'

    ORDER BY 1,2;

    OWNER_NAME JOB_NAME            OPERATION JOB_MODE  STATE       ATTACHED

    ---------- ------------------- --------- --------- ----------- --------

    SCOTT      EXPDP_20051121      EXPORT    SCHEMA    EXECUTING          1

    SCOTT      SYS_EXPORT_TABLE_01 EXPORT    TABLE     NOT RUNNING        0

    SCOTT      SYS_EXPORT_TABLE_02 EXPORT    TABLE     NOT RUNNING        0

    SYSTEM     SYS_EXPORT_FULL_01  EXPORT    FULL      NOT RUNNING        0

    第2步. 确保在 dba_datapump_jobs 中列出的作业不是活动的数据泵作业: 状态应该是'NOT RUNNING'。

    第3步. 同作业属主确认视图 dba_datapump_jobs 中状态为'NOT RUNNING' 的作业不是被暂停,而失败的作业。(例如,SYSTEM 用户的全库导出作业不是一个失败的作业,而是一个被故意暂停的作业)

    第4步. 通过 SQL*Plus 找到相关的 master 表:

    --查找数据泵的master表:

    SELECT o.status, o.object_id, o.object_type,

    o.owner||'.'||object_name "OWNER.OBJECT"

    FROM dba_objects o, dba_datapump_jobs j

    WHERE o.owner=j.owner_name AND o.object_name=j.job_name

    AND j.job_name NOT LIKE 'BIN$%' ORDER BY 4,2;

    STATUS   OBJECT_ID OBJECT_TYPE  OWNER.OBJECT

    ------- ---------- ------------ -------------------------

    VALID        85283 TABLE        SCOTT.EXPDP_20051121

    VALID        85215 TABLE        SCOTT.SYS_EXPORT_TABLE_02

    VALID        85162 TABLE        SYSTEM.SYS_EXPORT_FULL_01

    第5步. 对于过去被终止的和根本不会再启动的作业,删除它的 master 表,例如,

    DROP TABLE scott.sys_export_table_02;

    --对于启用了recycle bin的系统,需要额外运行:

    purge dba_recyclebin;

    第6步. 重新运行第1步和第4步对 dba_datapump_jobs 和 dba_objects 的查询。如果 dba_datapump_jobs 里仍然有作业列出,并且这些作业根本没有 master 表,我们就可以以作业属主的身份清除它们。例如,

    CONNECT scott/tiger

    SET serveroutput on

    SET lines 100

    DECLARE

    h1 NUMBER;

    BEGIN

    h1 := DBMS_DATAPUMP.ATTACH('SYS_EXPORT_TABLE_01','SCOTT');

    DBMS_DATAPUMP.STOP_JOB (h1);

    END;

    /

    注意:调用 STOP_JOB 过程以后,可能会花一点时间去清除作业,我们可以查询 user_datapump_jobs 检查作业是否已经被清除掉:

    SELECT * FROM user_datapump_jobs;

    第7步. 确认作业已经被清除

    CONNECT / as sysdba

    SET lines 200

    COL owner_name FORMAT a10;

    COL job_name FORMAT a20

    COL state FORMAT a12

    COL operation LIKE state

    COL job_mode LIKE state

    --查找数据泵作业:

    SELECT owner_name, job_name, operation, job_mode,

    state, attached_sessions

    FROM dba_datapump_jobs

    WHERE job_name NOT LIKE 'BIN$%'

    ORDER BY 1,2;

    OWNER_NAME JOB_NAME            OPERATION JOB_MODE  STATE       ATTACHED

    ---------- ------------------- --------- --------- ----------- --------

    SCOTT      EXPDP_20051121      EXPORT    SCHEMA    EXECUTING          1

    SYSTEM     SYS_EXPORT_FULL_01  EXPORT    FULL      NOT RUNNING        0

    --查找数据泵的master表:

    SELECT o.status, o.object_id, o.object_type,

    o.owner||'.'||object_name "OWNER.OBJECT"

    FROM dba_objects o, dba_datapump_jobs j

    WHERE o.owner=j.owner_name AND o.object_name=j.job_name

    AND j.job_name NOT LIKE 'BIN$%' ORDER BY 4,2;

    STATUS   OBJECT_ID OBJECT_TYPE  OWNER.OBJECT

    ------- ---------- ------------ -------------------------

    VALID        85283 TABLE        SCOTT.EXPDP_20051121

    VALID        85162 TABLE        SYSTEM.SYS_EXPORT_FULL_01

    摘要:

    1. 异常数据泵作业不会影响新的数据泵作业. dba_datapump_jobs 是基于 gv$datapump_job, obj$, com$, and user$ 的一个视图。 这个视图显示仍在运行的数据泵作业,或者作业的 master 表仍然保留在数据库中,或者不正常结束的作业(异常作业)。如果一个新的数据泵作业启动, 会创建一条新的记录,与旧的数据泵作业无关。

    2. 当用系统自动生成的作业名启动一个新的数据泵作业时,我们会检查 dba_datapump_job 中现有的名称以保持惟一性。当然,启动这个作业的用户下需要有足够的空间来创建一个新的 master 表。

    3. 数据泵作业与用 DBMS_JOBS 包定义的作业不同, DBMS_JOBS 创建的作业使用它自己的进程。 数据泵作业使用一个 master 进程和一些 worker 进程。如果一个数据泵作业被暂停,数据泵作业会一直存在在数据库中(status: NOT RUNNING),这时,master 和 worker 进程会被停止,或者不再存在。客户端之后可以再次挂载到这个作业,并且继续作业的执行(START_JOB)。

    4. 如果活动的数据泵作业相关联的 master 表被删除,可能会导致不一致.

    4.a.如果是一个导出作业, 不太可能引起不一致,因为删除 master 表只会导致数据泵的 mater 和 worker 进程中止。这种情况类似于客户端发起的一个意外中止。

    4.b. 如果这个作业是一个导入作业,那么情况就有所不同。删除掉 master 表会导致数据泵的 worker 和 mater 进程中断。这有可能会引起不完整的导入。 例如,没有导入表的所有数据,或表,索引,视图等的导入不完整, 这种情况类似于意外中断导入的客户端。删除 master 表本身不会引起任何数据字典的不一致。如果您在作业完成后还保留 master 表(使用非公开的参数:KEEP_MASTER=Y),以后再删除 master表的操作不会造成任何不一致。

    其他资源

    社区:

    展开全文
  • Linux 中 jobs 命令详解

    2021-05-11 09:52:10
    jobs命令用来在当前shell会话中显示作业的状态其基本语法如下:jobs复制代码jobs jobID复制代码jobs [options] jobID复制代码启动一些作业来进行示范在开始使用 jobs 命令前,需要在系统上先启动多个作业,以启动 ...
  • ORACLE jobs 执行问题,JOBS执行一段时间后失效。创建了一个JOBS对序列每天进行删除重建也许几天之内执行没有问题,几天后突然就失效了。BEGINSYS.DBMS_JOB.REMOVE(141);COMMIT;END;/DECLAREXNUMBER;BEGINSYS.DBMS_...
  • Jenkins清理多余的Jobs

    2021-11-03 15:10:21
    第一步:方式一:安装clean插件-失败 第二:方式一:工程配置加构建后操作-失败 第三:方式二:构建工程时就让它自动删除多余的构建 方式二成功 第四:方式二:配置自动删除之前方式二成功 ...
  • Shell 命令之 jobs

    2021-01-14 15:45:21
    Linux下使用Shell命令控制任务(Jobs)执行下列命令可以用来操纵进程任务:ps 列出系统中正在运行的进程kill 发送信号给一个或多个进程(经常用来杀死一个进程)jobs 列出属于当前用户的进程bg 将进程搬到后台运行...
  • 我们首先看看jobs -l输出的信息: [root@layne bashdir]# sleep 30 & [2] 2157 [1] Done sleep 30 [root@layne bashdir]# jobs -l [2]+ 2157 Running sleep 30 & 上面jobs -l输出4列信息,第一列表示任务编号(job...
  • jobs命令用于显示Linux中的任务列表及任务状态,包括后台运行的任务。该命令可以显示任务号及其对应的进程号。其中,任务号是以普通用户的角度进行的,而进程号则是从系统管理员的角度来看的。一个任务可以对应于一...
  • ORACLE DBA_JOBS 视图

    2021-05-08 05:06:47
    DBA_JOBSAll jobs in the databaseColumns___________________________JOBIdentifier of job. Neither import/export nor repeated executions change it.LOG_USERUSER who was logged in when the job was submitte...
  • OWNER_NAME JOB_NAME OPERATION JOB_MODE STATE DEGREE ATTACHED_SESSIONS DATAPUMP_SESSIONS ------------------------------ ------------------------------ -------------... 但在dba_datapump_jobs里还能查到
  • 很多工程师都会选择多个jobs进行编译,以为这样会更快一些,而且这个jobs的数量跟本地CPU的线程数是一致的,这就更加让工程师们认为这个选项就是多线程编译了。   但对Vivado更加熟悉的工程师,肯定会知道,...
  • 2、jobs 查看后台运行的进程;3、fg %n 让后台运行的进程n到前台来;4、bg %n 让进程n到后台去;PS:"n"为jobs查看到的进程编号.命令介绍fg、bg、jobs、&、ctrl + z都是跟系统任务有关的。1、&最经常被用到,...
  • 请问:如果我在执行EXPDP 出错了,这个时候我又把原来的生成的文件删除了.那么这个出错的EXPDP 将一直记录在DBA_DATADUMP_JOBS中.例如SQL> SELECT * FROM DBA_DATAPUMP_JOBS2/OWNER_NAME JOB_NAME OPERATION ...
  • 关于oracle 中的jobs

    2021-05-02 06:15:23
    先给个小例子吧Java代码 create table t(a date);create or replace procedure testproc() asbegininsert into t values(sysdate);end;declare JOB1 number;BEGINDBMS_JOB.submit(job=>JOB1,what=>...
  • 数据库中有一堆的AQ$_PLSQL_NTFN_xxx在跑,是做啥的,可以禁掉吗?SQL> select OWNER,JOB_NAME,JOB_STYLE,SESSION_ID,ELAPSED_TIME from Dba_Scheduler_Running_Jobs;OWNER JOB_NAME ...
  • Linux中jobs的管理常用命令1 将命令或者脚本放到后台去运行#命令 &egrpm -ivh zlib**.rpm &./run.sh &2 将命令暂停到后台Ctrl+z3 查看后台命令#jobs参数:-l: 除了列出作业号之外同时列出PID-r: 列出...
  • jobs

    2021-01-10 11:34:34
    jobs命令 Linux 中 fg、bg、jobs 等指令 job 在Linux系统中执行某些操作时候,有时需要将当前任务暂停调至后台,或有时须将后台暂停的任务重启开启并调至前台,这一序列的操作将会使用到(jobs、bg、和 fg ) 显示...
  • Migrating: 2019_09_21_073645_create_jobs_table Migrated: 2019_09_21_073645_create_jobs_table job表创建结构mysql> show create table jobs \G *************************** 1. row ***************...
  • Oracle Jobs常规配置

    2021-04-20 15:32:46
    今天刚好要新建一个定时任务,就做下记录。 1、基本配置 2、定时设置 定时设置主要是设置Schedule的参数,以下是常用的几种设置。 2.1、每天 每天凌晨0点15分 2.2、每周 每周二3点5分定时处理 ......
  • /*oracle jobs 导出为执行脚本就是把user_jobs或dba_jobs,导成DBMS_JOB.SUBMIT可以插入job的格式其中user_jobs是当前用户的job,dba_jobs则是全部下面只是随便整理了下,可以按照个人需要修改设置 file_dir file_...
  • oracle数据库对象-jobs

    2021-01-17 18:49:04
    jobs是oracle数据库对象之一,定时任务。通过调用存储过程dbms_job.submit将任务加入到任务队列中。查看dbms_job包,它有两个存储过程:PROCEDURE isubmit ( job IN BINARY_INTEGER,what IN VARCHAR2,next_date IN ...
  • 天萃荷净Oracle研究中心学习笔记:分享一篇关于Oracle数据库JOBS作业控制的文章.关于dba_datapump_jobs中的not running的作业的清除的方法。not running状态的作业有两个意思1.作业被暂停。2.dw/dm进程crash.但是...
  • Oracle dba_datapump_jobs中not running作业的清除方法 not running状态的作业有两个意思 1.作业被暂停。 2.dw/dm进程crash.但是master table还存在 其实多数情况下是属于2.关于怎么清除相当作业.可以看下面的...
  • 详细学习ORACLE JOBS

    2021-01-17 18:49:39
    一点一点学习jobs的各个方面比较长,比较烦,但是应该看完后会对jobs比较好的应用一、学习准备开始dbms_job学习前,先认识一个参数job_queue_processesa、job_queue_processes参数决定了job作业能够使用的总进程数。...
  • 我们在Oracle下使用expdp导出时有时会出错,这样在dba_datapump_jobs会产生一些记录,可以使用以下命令看到:select * from dba_我们在Oracle下使用expdp导出时有时会出错,这样在dba_datapump_jobs会产生一些记录,...
  • 重启/杀死 jobs

    2021-02-02 15:55:28
    hanjiale@ubuntu-16-04-VirtualBox:~$ jobs [1]+ Stopped sudo apt-get install python3.8 hanjiale@ubuntu-16-04-VirtualBox:~$ fg 1 sudo apt-get install python3.8 0% [Connecting to ppa.launchpad.net] 杀死...
  • Oracle Scheduler Jobs

    2021-02-02 19:35:51
    创建Jobs语法:通过DBMS_SCHEDULER包来创建Jobs,是使用其CREATE_JOB过程。例如:SQL>BEGIN2DBMS_SCHEDULER.CREATE_JOB(3job_name=>'INSERT_TEST_TBL',4job_type=>'STORED_PROCEDURE',5j...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 175,447
精华内容 70,178
关键字:

jobs