Как выбрать все задания, которые используют DBLINK на oracle? - PullRequest
0 голосов
/ 13 февраля 2020

С удовольствием скажу привет всем вам. Мне нужна помощь на oracle, чтобы выбрать все задания, которые используют DBLINK на oracle, чтобы остановить их во время обслуживания. Я буду признателен за вашу помощь.

1 Ответ

0 голосов
/ 13 февраля 2020

ПОПРОБУЙТЕ:

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. Я создал ссылку на базу данных

    CREATE DATABASE LINK local 
    CONNECT TO hr IDENTIFIED BY password
    USING 'local';
    
  2. Я создал задание, в котором я использовал имя ссылки на базу данных в разделе job_action (имя ссылки на базу данных: 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  |
    

Если вы хотите найти все объекты, чтобы найти ссылку на БД, попробуйте следующее:

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