Tôi biết cách kiểm tra DB có ở trạng thái khóa hay không, nhưng câu hỏi của tôi là làm thế nào để tìm ra truy vấn nào gây ra khóa trên bảng / db.
Có bất kỳ tệp nhật ký nào được tạo nếu có điều gì đó bất ngờ xảy ra với cơ sở dữ liệu không?
Tôi biết cách kiểm tra DB có ở trạng thái khóa hay không, nhưng câu hỏi của tôi là làm thế nào để tìm ra truy vấn nào gây ra khóa trên bảng / db.
Có bất kỳ tệp nhật ký nào được tạo nếu có điều gì đó bất ngờ xảy ra với cơ sở dữ liệu không?
Câu trả lời:
Liệt kê các hoạt động cơ sở dữ liệu hiện tại:
db2top -d [dbname]
Lệnh này sẽ hiển thị cho bạn các khóa cơ sở dữ liệu:
db2pd -d [dbname] -lock wait
db2pd như được giải thích trong cùng bài viết này là một lựa chọn rất tốt.
Thêm vào đó, bạn có thể sử dụng thủ tục:
db2 "call monreport.lockwait()"
Quy trình này sẽ cho bạn thấy một cách rất có tổ chức các khóa hiện có trong cơ sở dữ liệu của bạn.
Sau khi kiểm tra id ứng dụng giữ các khóa, hãy thử xác định Câu lệnh SQL gây ra khóa. Nếu không có mặt, hãy thử chụp ảnh nhanh cho tất cả các ứng dụng, tìm kiếm id ứng dụng và kiểm tra truy vấn đang được thực thi (và bất kỳ thông tin bổ sung nào bạn có thể cần).
db2 get snapshot for applications on (DATABASE_NAME) > applications_snapshot.txt
nếu bạn muốn kiểm tra ảnh chụp ổ khóa, điều đó cũng có thể:
db2 get snapshot for locks on (DATABASE_NAME) > locks_snapshot.txt
Cuối cùng nhưng không kém phần quan trọng, db2top là một công cụ tuyệt vời để theo dõi các khóa, khóa, v.v. và thực hiện "trực tiếp":
db2top -d (database_name)
tùy chọn "U"
nếu cần, tùy chọn "U, L"
Hy vọng nó giúp. Rodrigo Trombeta