如何 SELECT 所有在 oracle 上使用 DBLINK 的 JOBS?

How to SELECT all JOBS that using a DBLINK on oracle?

很高兴向大家问好。 我需要有关 oracle 的帮助 select 所有在 oracle 上使用 DBLINK 的作业,以便在维护期间停止它们。 我会感谢你的帮助。

试试这个:

SELECT JOB_NAME 
FROM ALL_SCHEDULER_JOBS, ALL_DB_LINKS
WHERE JOB_ACTION LIKE '%'|| DB_LINK ||'%'
OR DB_LINK LIKE '%'|| JOB_ACTION ||'%'; --this line is more like just in case...

也许你必须像这样玩 upper

SELECT JOB_NAME 
FROM ALL_SCHEDULER_JOBS, ALL_DB_LINKS
WHERE upper(JOB_ACTION) LIKE '%'|| DB_LINK ||'%'
OR DB_LINK LIKE '%'|| upper(JOB_ACTION) ||'%';
  1. 我已经创建了一个数据库link

    CREATE DATABASE LINK local 
    CONNECT TO hr IDENTIFIED BY password
    USING 'local';
    
  2. 我创建了一个作业,其中我在 job_action 部分使用了数据库名称 link(数据库名称 link 是 LOCAL).

    BEGIN
       -- Job defined entirely by the CREATE JOB procedure.
       DBMS_SCHEDULER.create_job (
       job_name        => 'Update_Status',
       job_type        => 'PLSQL_BLOCK',
       job_action      => 'BEGIN ;LOCAL; END;',
       start_date      => SYSTIMESTAMP,
       repeat_interval => 'freq=minutely; bysecond=0;',
       end_date        => NULL,
       enabled         => TRUE,
       auto_drop          =>   FALSE,
       comments        => 'Job defined entirely by the CREATE JOB procedure.');
    END;
    
  3. 我有运行上面的查询:

    SELECT JOB_NAME 
    FROM ALL_SCHEDULER_JOBS, ALL_DB_LINKS
    WHERE JOB_ACTION LIKE '%'|| DB_LINK ||'%'
    OR DB_LINK LIKE '%'|| JOB_ACTION ||'%'; 
    
  4. 查询结果为:

    |    JOB_NAME     |
    +-----------------+
    |  UPDATE_STATUS  |
    

如果您想搜索所有对象以找到您的数据库 link 然后试试这个:

select *  
from all_source
     , ALL_DB_LINKS
where text like '%'|| DB_LINK ||'%';