Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

GWFG trong Oracle RAC

Tôi gặp sự cố bế tắc được báo cáo trong cơ sở dữ liệu Oracle RAC 3 nút của mình (phiên bản 11.2.0.4) như có thể thấy trong Nhật ký cảnh báo. Do đây là cơ sở dữ liệu Oracle RAC, tài nguyên được quản lý toàn cầu và Lock Manager Daemon (LMD) tham gia. Thông báo trong nhật ký cảnh báo đã chỉ cho tôi một tệp theo dõi LMD có chứa Đồ thị Chờ đợi Toàn cầu (GWFG) này.

*** 2015-02-27 04:16:33.183
Submitting asynchronized dump request [1c]. summary=[ges process stack dump (kjdglblkrdm1)].
Global blockers dump end:-----------------------------------
Global Wait-For-Graph(WFG) at ddTS[0.394d] :
BLOCKED 0x551b2c698 2 wq 2 cvtops x1 TM 0x11ffa3.0x0(ext 0x0,0x0)[6B000-0004-0000022D] inst 4
BLOCKER 0x5513ed318 2 wq 2 cvtops x1 TM 0x11ffa3.0x0(ext 0x0,0x0)[B6000-0006-00000099] inst 6
BLOCKED 0x5513ed318 4 wq 2 cvtops x1 TM 0x11ffa3.0x0(ext 0x0,0x0)[B6000-0006-00000099] inst 6
BLOCKER 0x5513ef5b8 4 wq 2 cvtops x1 TM 0x11ffa3.0x0(ext 0x0,0x0)[66000-0005-00000FDB] inst 5
BLOCKED 0x5513ef5b8 4 wq 2 cvtops x1 TM 0x11ffa3.0x0(ext 0x0,0x0)[66000-0005-00000FDB] inst 5
BLOCKER 0x551b2c698 4 wq 2 cvtops x1 TM 0x11ffa3.0x0(ext 0x0,0x0)[6B000-0004-0000022D] inst 4
* Cancel deadlock victim lockp 0x551b2c698

Lưu ý:SQL thực tế và một số chi tiết khác có thể đã được thay đổi để bảo vệ người vô tội.

Vì vậy, tôi có 3 phiên tham gia vào bế tắc. Mỗi cái trên id phiên bản 4, 5 và 6.

Tôi đang xem tệp theo dõi được tạo trên id phiên bản 4. Phía trên GWFG là thông tin sau:

user session for deadlock lock 0x551b2c698
 sid: 1727 ser: 539 audsid: 996549224 user: 13944/MP_SYS
 flags: (0x41) USR/- flags_idl: (0x1) BSY/-/-/-/-/-
 flags2: (0x40009) -/-/INC
 pid: 107 O/S info: user: oracle, term: UNKNOWN, ospid: 11229
 image: [email protected]
 client details:
 O/S info: user: web-svc, term: web-server1, ospid: 4276:864
 machine: DOMAIN\web-server1 program: iis.exe
 client info: user: WEBSERVICE
 current SQL:
 INSERT INTO MP_SYS.T2( column_list) SELECT column_list FROM MP_SYS.T1 WHERE MP_SYS.T1.P_ID=:B1
DUMP LOCAL BLOCKER: initiate state dump for DEADLOCK
 possible owner[107.11229] on resource TM-0011FFA3-00000000

Vì vậy, tôi có thể xem thông tin về máy, chương trình và câu lệnh SQL đang được thực thi. Định danh phiên người dùng màu đỏ ở trên tương ứng với giá trị id trong GWFG. Hãy xem lại hai dòng đầu tiên của GFWG.

BLOCKED 0x551b2c698 2 wq 2 cvtops x1 TM 0x11ffa3.0x0(ext 0x0,0x0)[6B000-0004-0000022D] inst 4
BLOCKER 0x5513ed318 2 wq 2 cvtops x1 TM 0x11ffa3.0x0(ext 0x0,0x0)[B6000-0006-00000099] inst 6

Vì vậy, câu lệnh SQL và chi tiết phiên khớp với dòng đầu tiên này. Phiên này bị chặn trên phiên bản 4. Trình chặn trên inst6 và được xác định là 0x5513ed318 . Đây là ai? Không có chi tiết nào khác trong GWFG này để giúp chúng tôi với BLOCKER.

Để tìm hiểu thêm về trình chặn, tôi đã truy cập phiên bản 6 và thực hiện điều này:

cd /u01/app/oracle/diag/rdbms/admin/orcl/orcl6/trace
grep 0x5513ed318 *

Vì vậy, tôi vừa thực hiện một grep về giá trị nhận dạng phiên và được cung cấp một tệp theo dõi LMD. Tìm kiếm tệp theo dõi LMD đó trên phiên bản khác cung cấp cho tôi thông tin chi tiết về phiên chặn.

user session for deadlock lock 0x5513ed318
 sid: 1206 ser: 2673 audsid: 996459926 user: 13944/MP_SYS
 flags: (0x41) USR/- flags_idl: (0x1) BSY/-/-/-/-/-
 flags2: (0x40009) -/-/INC
 pid: 182 O/S info: user: oracle, term: UNKNOWN, ospid: 7049
 image: [email protected]
 client details:
 O/S info: user: web-svc, term: web-server2, ospid: 4276:864
 machine: DOMAIN\web-server2 program: iis.exe
 client info: user: WEBSERVICE
 current SQL:
 DELETE FROM MP_SYS.T1 WHERE P_ID = :B1
DUMP LOCAL BLOCKER: initiate state dump for DEADLOCK
 possible owner[182.7049] on resource TM-0011FFA3-00000000

Tôi có thể thấy rằng phiên bị chặn đang phát hành một câu lệnh INSERT trên một bảng và trình chặn đang đưa ra một DELETE trên cùng một bảng.

Có một phiên khác được tham gia nhưng tại thời điểm này, việc lấy thông tin chi tiết về phiên là cơ bản bằng cách sử dụng các bước tương tự ở trên.

Hy vọng rằng mục nhập blog này đã chỉ ra cách sử dụng GWFG để chẩn đoán các câu lệnh SQL và đối tượng liên quan đến deadlock toàn cục. Tôi biết các câu lệnh SQL chính xác liên quan đến bế tắc và theo phần mở rộng, các đối tượng liên quan. Giải pháp cho vấn đề không khác gì giải quyết bế tắc trong cơ sở dữ liệu một phiên bản.

Để biết thêm thông tin về Oracle RAC Global Enqueue Services (GES), hãy đọc Chương 2 của cuốn sách Điều chỉnh Hiệu suất Oracle RAC của tôi.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhà phát triển SQL Oracle:Không thành công - Kiểm tra không thành công:Bộ điều hợp mạng không thể thiết lập kết nối?

  2. Bảng BIN $ ... trong bảng ALL_TAB_COLUMNS của Oracle là gì?

  3. Làm thế nào để gửi email bằng Pl / sql

  4. Làm thế nào để sắp xếp theo số đầu tiên với truy vấn SQL của Oracle?

  5. Phương thức thực thi Spring Hibernate Template trả về loại đối tượng nào cho một truy vấn đếm trên Oracle?