ระดับการแยกปัจจุบันใน oracle


10

วิธีรับระดับแยกธุรกรรมปัจจุบัน (ค่าเริ่มต้น) ใน oracle?


หากคุณกำลังมองหาระดับการแยกปัจจุบันของเซสชันให้ดูคำถาม SO นี้: คุณจะเห็นได้อย่างไรว่าระดับการแยกธุรกรรมใดที่เซสชันออราเคิลใช้โดยพลการ
Vincent Malgrat

คุณกำลังมองหาระดับการแยกเริ่มต้นสำหรับการทำธุรกรรมในเซสชั่นหรือระดับการแยกของการทำธุรกรรมปัจจุบันอยู่ในความคืบหน้า?
Leigh Riffel

คำตอบ:


6

การใช้แบบสอบถามจากคำตอบ SO อ้างอิง Vincent Malgrat อ้างอิงนี่คือวิธีที่คุณสามารถรับระดับแยกธุรกรรมสำหรับการทำธุรกรรมที่กำลังดำเนินการ:

SELECT s.sid, s.serial#,
   CASE BITAND(t.flag, POWER(2, 28))
      WHEN 0 THEN 'READ COMMITTED'
      ELSE 'SERIALIZABLE'
   END AS isolation_level
FROM v$transaction t 
JOIN v$session s ON t.addr = s.taddr AND s.sid = sys_context('USERENV', 'SID');

หากคุณยังไม่ได้ทำธุรกรรมคุณสามารถเริ่มด้วยการทำสิ่งต่อไปนี้:

declare 
   trans_id Varchar2(100);
begin
   trans_id := dbms_transaction.local_transaction_id( TRUE );
end;
/

ดูเหมือนว่าจะมีวิธีที่ง่ายกว่านี้ ฉันไม่ทราบวิธีรับระดับการแยกเริ่มต้นสำหรับเซสชันหากนั่นคือสิ่งที่คุณกำลังมองหา


5

- ฉันกำลังใช้บางอย่างเช่นด้านล่าง

ด้วย q1 เป็น (เลือกชื่อที่แตกต่าง, isdefault, ค่า, ถอดรหัส (ค่า, 'serializable', SID, null) SID จาก V $ SES_OPTIMIZER_ENV โดยที่ต่ำกว่า (ชื่อ) เช่นคำสั่ง '% แยก%' ตามชื่อ) เลือก q1. *, vs .status, vs.username, vs.OSUSER, vs.MACHINE, vs.TERMINAL, vs.PROGRAM จาก q1, v $ session vs โดยที่ q1.sid = vs.sid (+);

-- ความนับถือ. - อาริโซน่า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.