Невозможно скомпилировать пакет Oracle из-за блокировки - PullRequest
0 голосов
/ 13 июня 2018

Я хочу запустить ALTER PACKAGE MONITORING COMPILE;, потому что пакет MONITORING помечен красным знаком X в SQL Developer, но это занимает много времени, поэтому я остановил его.

Я запустил следующий код, чтобы найти блокировки:

COLUMN lock_id2 FORMAT A30
select to_char(SESSION_ID,'999') sid ,
   substr(LOCK_TYPE,1,30) Type,
   substr(lock_id1,1,45) Object_Name,
   substr(mode_held,1,4) HELD,
   substr(mode_requested,1,4) REQ,
   lock_id2 lock_addr
FROM dba_lock_internal
WHERE
   mode_requested <> 'None'
   and mode_requested <> mode_held
;

Я печатаю 26 Body Definition Pin SCHEMA.MONITORING None Excl 00007FFC744CBDE8.

Затем просматриваю SID 26:

SELECT s.sid,
       NVL(s.username, 'ORACLE PROC') username,
       s.osuser,
       p.spid os_pid,
       s.program,
       t.sql_text
FROM   v$session s,
       v$sqltext t,
       v$process p
WHERE  s.sql_hash_value = t.hash_value
AND    s.paddr = p.addr
AND    s.sid = &session_id
AND    t.piece = 0 -- optional to list just the first line
ORDER BY s.sid, t.hash_value, t.piece
/

Это выводит:

26 SCHEMA SYSTEM 3096 ORACLE.EXE (J000) call SCHEMA.MONITORING.UPDATE_MONITORING_STATUS ( ).

Затем я пытаюсь запустить ALTER SYSTEM KILL SESSION '26,3096';

Это говорит мне ORA-00030: User session ID does not exist..Вероятно, это связано с тем, что я уже убил сеанс.

Как удалить блокировки для SID 26, которые не хотят исчезать?

Обновление: при запуске этого:

select
   x.*, y.*
from
   v$session x, v$sqltext y
where
   x.sql_address = y.address
and
   y.sql_text like '%MONITORING%';

тогда я получаю другой серийный номер: 5479.Должен ли я использовать это, чтобы остановить это?Я немного напуган тем, что испортил вещи, убивая случайные сессии.

Полный вывод:

00007FFC73BB0A58    26  5479    17225222    00007FFC73F88180    63  SCHEMA  170 2147483644  00007FFC70F229E0        ACTIVE  DEDICATED   63  SCHEMA  SYSTEM  3096    PC-ORACLE   0   PC-ORACLE   ORACLE.EXE (J000)   USER    00007FFC53C7B3E0    2898280916  1sr6azaqc0hfn   0   13.06.18    16803054    00007FFC74434680    1115215392  c6awqs517jpj0   0   13.06.18    16805538                    DBMS_SCHEDULER  2478762354  Update_Monitoring_Status    1070683900      1668888 -1  0   0   0   59  13.06.18    2565    NO  NONE    NONE    NO  OTHER_GROUPS    DISABLED    DISABLED    DISABLED    0       VALID   1   32  VALID   1   32  9   284 library cache pin   handle address  140722259672552 00007FFC744CBDE8    pin address 140721866230184 00007FFC5CD949A8    100*mode+namespace  210629491294211 0000BF9100020003    3875070507  4   Concurrency 0   765 WAITING 764790485   135209515   0   SYS$USERS   DISABLED    FALSE   FALSE   FIRST EXEC  100 00007FFC73F88180    80      00007FFC53C7B3E0    2898280916  1sr6azaqc0hfn   170 0   call SCHEMA.MONITORING.UPDATE_MONITORING_STATUS (  )

Я получаю ORA-00030: User session ID does not exist., когда использую эти последние параметры для отключениясеанс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...