Oracle
 sql >> база данни >  >> RDS >> Oracle

Може ли спусък да бъде заключен; как човек ще определи, че е така?

За да определите дали даден тригер (както и всяка друга съхранена процедура) е заключен или не, V$ACCESS динамичен изглед на производителността може да бъде заявен.

Session #1

insert into test_trigger
 select level
   from dual
connect by level <= 1000000; 

Session #2

SQL> select *
  2    from v$access
  3   where object = upper('test_trigger_t')
  4  ;


Sid  Owner  Object         Type    Con_Id 
--------------------------------------
441  HR     TEST_TRIGGER_T TRIGGER  3 

Такива ключалки са щифтове на кеша на библиотеката (ключалките на кеша на библиотеката са ресурс (TM тип заключване) ключалки), необходими, за да се гарантира, че даден обект е защитен от промяна, докато сесията го изпълнява.

--session sid # 441
insert into test_trigger
  select level
    from dual
 connect by level <= 1000000;


-- session sid #24
create or replace trigger test_trigger_t 
after insert on test_trigger for each row
begin
  insert into test_trigger_h (id) values (:new.id);
end;  

-- Session # 3
select vs.sid
     , vs.username
     , vw.event
  from v$session       vs
  join v$session_wait  vw
    on (vw.sid = vs.sid)
  join v$access        va
    on (va.owner = vs.username)
 where vs.username = 'HR'

Резултат:

Sid Username Event 
--------------------------
24 HR library cache pin 
....
441 HR log file switch (checkpoint incomplete) 

Тук можем да видим, че сесия #441 чака превключване на лог файл, а сесия #24 чака щифт за кеша на библиотеката.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Пореден номер в табл

  2. Как да намеря информация за типове данни в схема на oracle?

  3. Oracle sql операция за обединяване на заявки?

  4. Създаване на индекс

  5. Oracle SQL техника за избягване на попълване на транс лог