Trong hướng dẫn này, bạn sẽ tìm hiểu xem: Cách trình giám sát của hệ thống cơ sở dữ liệu làm việc như thế nào Cách thu thập các thông tin chụp nhanh snapshot như thế nào Cách tạ
Trang 1huẩn bị kỳ thi số 731 lấy chứng chỉ DBA (Quản trị cơ sở dữ liệu) DB2 9, Phần 4: Giám sát hoạt động của DB2
Roger Sanders, Quản lý cao cấp, EMC
Tóm tắt: Hướng dẫn này giới thiệu cho bạn bộ các công cụ giám sát đã có sẵn
cho DB2® 9 và chỉ cho các bạn cách sử dụng mỗi công cụ để giám sát xem hệ thống cơ sở dữ liệu của bạn hoạt động tốt (hoặc kém) như thế nào Đây là bài thứ
tư trong loạt bảy bài hướng dẫn mà bạn có thể sử dụng để chuẩn bị kỳ thi lấy Chứng chỉ Quản trị cơ sở dữ liệu DB2 9 cho các hệ điều hành Linux®, UNIX® và Windows™ (Kỳ thi 731)
Trước khi bạn bắt đầu
Về loạt bài hướng dẫn này
Nếu bạn đang chuẩn bị dự kỳ thi 731 lấy chứng chỉ quản trị cơ sở dữ liệu (DBA) DB2, bạn đã đến đúng chỗ - đây là một kiểu phòng tự học Loạt bảy bài hướng dẫn chuẩn bị lấy chứng chỉ DB2 này gồm các khái niệm chính mà bạn cần biết để làm bài kiểm tra Hãy làm bài tập ở nhà của bạn ở đây và giảm bớt căng thẳng trong ngày thi
Về bài hướng dẫn này
Việc tinh chỉnh và định cấu hình cho cơ sở dữ liệu DB2 có thể là một quá trình phức tạp, đôi khi là rất khó cho các quản trị viên cơ sở dữ liệu mới vào nghề Tuy nhiên, có một số lượng lớn các công cụ, các hàm và các ứng dụng đi kèm với DB2
mà một khi ta làm chủ được chúng, thì nhiệm vụ này trở nên đơn giản
Hướng dẫn này được thiết kế để giới thiệu cho bạn một bộ các công cụ giám sát sẵn có tại DB2 9 và chỉ cho các bạn cách sử dụng mỗi công cụ để giám sát xem hệ
Trang 2thống cơ sở dữ liệu của bạn hoạt động tốt (hoặc kém) như thế nào Trong hướng dẫn này, bạn sẽ tìm hiểu xem:
Cách trình giám sát của hệ thống cơ sở dữ liệu làm việc như thế nào
Cách thu thập các thông tin chụp nhanh (snapshot) như thế nào
Cách tạo ra các trình giám sát sự kiện và dữ liệu giám sát sự kiện được thu thập như thế nào
Cách sử dụng trình giám sát tình trạng sức khỏe máy tính và Trung tâm sức khỏe máy tính (Health Center) như thế nào
Các dữ liệu giải nghĩa toàn diện và dữ liệu chụp nhanh giải nghĩa khác nhau như thế nào
Các dữ liệu giải nghĩa toàn diện và dữ liệu chụp nhanh giải nghĩa được thu thập như thế nào
Cách sử dụng công cụ Giải nghĩa trực quan (Visual Explain) để xem giải nghĩa về dữ liệu chụp nhanh
Đây là hướng dẫn thứ tư trong loạt bảy bài hướng dẫn để giúp bạn chuẩn bị kỳ thi lấy chứng chỉ Quản trị cơ sở dữ liệu DB2 9 cho Linux, UNIX và Windows (Kỳ thi 731) Các tư liệu trong hướng dẫn này chủ yếu dành cho các mục tiêu trong phần 4 của kỳ thi, có tên "Phân tích hoạt động của DB2." Bạn có thể xem các mục tiêu này tại địa chỉ: http://www-03.ibm.com/certify/tests/obj731.shtml
Mục đích của bài hướng dẫn
Sau khi hoàn thành hướng dẫn này, bạn sẽ có thể:
Trang 3 Thu giữ các hình chụp nhanh bằng cách sử dụng hàm GET SNAPSHOT hoặc các hàm SQL
Tạo và kích hoạt trình giám sát sự kiện
Định cấu hình trình giám sát tình trạng sức khỏe bằng cách sử dụng Trung tâm sức khỏe máy tính (Health Center)
Thu giữ và phân tích các thông tin giải nghĩa / Giải nghĩa trực quan
Nhận biết các hàm của công cụ xác định vấn đề của DB2 (ví dụ: db2pd và db2mtrk)
Các yêu cầu cần có
Để được tham dự được kỳ thi DBA DB2 9 thì bạn đã phải vượt qua kỳ thi 730, Cơ bản về DB2 9 Chúng tôi khuyên bạn nên xem loại bài hướng dẫn: Cơ bản về DB2 trước khi bắt đầu loạt bài hướng dẫn này
Để giúp bạn hiểu một số tư liệu được trình bày trong hướng dẫn này, bạn phải biết các thuật ngữ sau:
Ngôn ngữ truy vấn có cấu trúc (SQL): Một ngôn ngữ được tiêu chuẩn
hoá dùng để định nghĩa các đối tượng và thao tác dữ liệu trong một cơ sở
dữ liệu quan hệ
Trình tối ưu hóa DB2: Một thành phần của trình tiền biên dịch SQL, Trình
tối ưu hoá chọn kế hoạch truy cập cho câu lệnh SQL dùng ngôn ngữ thao tác dữ liệu bằng cách mô hình hóa các chi phí thực hiện của một số kế hoạch truy cập có thể và chọn ra kế hoạch có chi phí ước tính tối thiểu
Yêu cầu về hệ thống
Trang 4Bạn không cần một bản sao của DB2 để hoàn thành hướng dẫn này Tuy nhiên, bạn sẽ học được nhiều hơn từ hướng dẫn này, nếu bạn tải về phiên bản dùng thử miễn phí DB2 9 của IBM để làm theo bài hướng dẫn này
Thu giữ dữ liệu chụp nhanh
Trình giám sát hệ thống cơ sở dữ liệu
Giám sát cơ sở dữ liệu là một hoạt động sống còn, hoạt động này, khi được thực hiện thường xuyên, sẽ cung cấp các thông tin phản hồi liên tục về tình trạng sức khỏe của một hệ thống cơ sở dữ liệu Bởi vì giám sát cơ sở dữ liệu là một phần không thể tách rời của công tác quản trị cơ sở dữ liệu, DB2 9 được trang bị một tiện ích giám sát được gọi là trình giám sát hệ thống cơ sở dữ liệu Mặc dù cái tên
"trình giám sát hệ thống cơ sở dữ liệu" hàm ý rằng chỉ có một công cụ giám sát được cung cấp, nhưng trong thực tế trình giám sát hệ thống cơ sở dữ liệu gồm có hai công cụ riêng biệt, có thể được sử dụng để thu giữ và trả về các thông tin giám
sát hệ thống: một trình giám sát chụp nhanh và một hoặc nhiều trình giám sát sự
kiện Trình giám sát chụp nhanh cho phép bạn chụp một bức tranh về trạng thái
của cơ sở dữ liệu tại một thời điểm cụ thể trong khi các trình giám sát sự kiện thu giữ và ghi lại dữ liệu khi các sự kiện cơ sở dữ liệu cụ thể xảy ra Các thông tin thu thập bởi cả hai công cụ này được lưu trữ trong các thực thể được gọi là các phần
tử giám sát (hoặc gọi là phần tử dữ liệu) Mỗi phần tử giám sát được sử dụng được xác định bởi một tên duy nhất và được thiết kế để nắm giữ một loại hình thông tin
cụ thể Các kiểu phần tử sau đây được sử dụng để lưu trữ dữ liệu giám sát:
Bộ đếm (Counters) Bộ đếm lưu giữ tổng số lần mà các hành động hay sự
kiện đã xảy ra Giá trị của bộ đếm tăng lên trong suốt cuộc đời của trình giám sát, thường thì phần tử bộ đếm giám sát cho phép bắt đầu lại Một ví
Trang 5dụ về phần tử bộ đếm là tổng số câu lệnh SQL đã được thi hành đối với cơ
sở dữ liệu
Bộ đo (Gauges) Bộ đo lưu giữ số lần mà hành động hay sự kiện đã xảy ra
tại một thời điểm cụ thể Khác với các giá trị của bộ đếm, các giá trị của bộ
đo có thể tăng hoặc giảm và giá trị của nó tại một thời điểm bất kỳ nào đó thường phụ thuộc vào mức độ hoạt động của cơ sở dữ liệu Một ví dụ về phần tử bộ đo là số lượng các ứng dụng hiện đang được kết nối với cơ sở
dữ liệu
Ngấn nước (Watermarks) Ngấn nước cho biết giá trị cao nhất (tối đa)
hoặc thấp nhất (tối thiểu) của một mục kể từ khi trình giám sát bắt đầu Một
ví dụ về phần tử ngấn nước là số lượng lớn nhất các hàng bị tác động bởi một hoạt động cập nhật
Thông tin (Information) Theo như tên gọi, các phần tử thông tin cung cấp
các chi tiết mang tính chất tham khảo về tất cả các hoạt động giám sát được thực hiện Ví dụ về các phần tử thông tin bao gồm tên của pool đệm, tên cơ
sở dữ liệu và các bí danh, chi tiết đường dẫn, v.v
Mốc thời gian (Timestamps) Mốc thời gian cho biết ngày giờ mà một
hoạt động hay sự kiện đã diễn ra Các giá trị của mốc thời gian được tính bằng số giây và phần triệu của giây đã trôi qua kể từ ngày 1 tháng Một năm
1970 Một ví dụ về phần tử mốc thời gian là ngày giờ thiết lập kết nối đầu tiên tới cơ sở dữ liệu
Thời gian (Time) Các phần tử thời gian lưu vết thời lượng đã dùng để
thực hiện một hoạt động hoặc một sự kiện Các giá trị thời gian được tính bằng số giây và phần triệu giây đã trôi qua kể từ khi hoạt động hay sự kiện này được bắt đầu và một số phần tử thời gian cho phép đặt bắt đầu lại Một
Trang 6ví dụ về phần tử thời gian là lượng thời gian đã được dùng để thực hiện một hoạt động sắp xếp
Trình giám sát của hệ thống cơ sở dữ liệu có thể sử dụng bất kỳ tổ hợp nào của các phần tử này để thu thập dữ liệu giám sát, và một khi dữ liệu đó đã được thu thập, thì có thể sử dụng một số phương thức để trình bày các dữ liệu lưu trữ trong mỗi phần tử đã sử dụng; đối với cả hai, trình giám sát chụp nhanh lẫn giám sát sự kiện, bạn có thể tùy chọn cách lưu trữ tất cả dữ liệu thu thập được, vào trong một tệp tin hay vào các bảng cơ sở dữ liệu, xem chúng trên màn hình, hoặc xử lý chúng bằng cách sử dụng một ứng dụng tùy chỉnh (Trình giám sát hệ thống cơ sở dữ liệu trả
về dữ liệu giám sát cho một ứng dụng khách, sử dụng dòng dữ liệu tự mô tả Với ứng dụng giám sát chụp nhanh bạn gọi ra các API chụp nhanh thích hợp để chụp nhanh dữ liệu và sau đó xử lý dòng dữ liệu được trả về; với một ứng dụng giám sát
sự kiện, bạn chuẩn bị để nhận dữ liệu được tạo ra thông qua một tệp tin hoặc một đường ống (pipe) có đặt tên, kích hoạt trình giám sát sự kiện thích hợp và xử lý luồng dữ liệu dưới dạng đã nhận được.)
Trình giám sát chụp nhanh
Trình giám sát chụp nhanh được thiết kế để thu thập thông tin về trạng thái của một cá thể trình quản trị cơ sở dữ liệu DB2 và các cơ sở dữ liệu mà nó kiểm soát
tại một thời điểm cụ thể (nói cách khác là tại thời điểm thực hiện chụp nhanh)
Việc chụp nhanh là hữu ích để xác định tình trạng của một hệ thống cơ sở dữ liệu,
và khi chụp nhanh theo những khoảng thời gian đều đặn, thì chúng có thể cung cấp cho ta các thông tin có giá trị, có thể sử dụng để quan sát các xu hướng và xác định các khu vực có vấn đề tiềm tàng Việc chụp nhanh có thể được thực hiện bằng cách thi hành câu lệnh GET SNAPSHOT từ Trình xử lý dòng lệnh
Trang 7(Command Line Processor - CLP) của DB2 bằng cách sử dụng các hàm bảng chụp nhanh thích hợp trong một truy vấn, hoặc bằng cách sử dụng các giao diện lập trình (API) giám sát chụp nhanh trong một ứng dụng C hoặc C++ Ngoài ra, có thể
đo cắt thiết kế chức năng chụp nhanh để trả về các kiểu giá trị dữ liệu giám sát cụ thể (ví dụ: có thể định cấu hình một bản chụp nhanh chỉ để trả lại các thông tin về pool đệm)
Các chuyển mạch của trình giám sát chụp nhanh
Thông thường thì việc thu thập các dữ liệu giám sát hệ thống đòi hỏi thêm tải công việc xử lý Ví dụ, để tính toán thời gian thi hành câu lệnh SQL, trình quản lý cơ sở
dữ liệu của DB2 phải gọi đến hệ điều hành để có được mốc thời gian trước và sau khi câu lệnh SQL được thực thi Các cuộc gọi hệ thống kiểu này có thể chi phí đắt Một tác động phụ khác của việc sử dụng trình giám sát hệ thống là lượng tiêu dùng bộ nhớ tăng lên – trình quản trị cơ sở dữ liệu DB2 sử dụng bộ nhớ để lưu trữ các dữ liệu đã thu thập được cho mọi phần tử giám sát đang được theo dõi bởi trình giám sát hệ thống
Để giúp giảm thiểu tải công việc tăng thêm liên quan đến việc thu thập thông tin giám sát hệ thống này, một nhóm các chuyển mạch được gọi là các chuyển mạch giám sát chụp nhanh có thể được sử dụng để kiểm soát những thông tin nào được thu thập khi chụp nhanh được thực hiện; kiểu và số lượng thông tin sẽ thu thập được xác định thông qua cách thiết lập các chuyển mạch chụp nhanh Mỗi chuyển mạch giám sát chụp nhanh có hai cách thiết đặt: ON (bật) và OFF (tắt) Khi
chuyển mạch giám sát chụp nhanh được đặt ở trạng thái OFF, thì các thông tin giám sát không được thu thập cho các phần tử thuộc quyền kiểm soát của chuyển mạch ấy Các thông tin sẽ được thu thập nếu chuyển mạch được đặt ở trạng thái
Trang 8ON (Xin nhớ rằng một số lượng đáng kể các thông tin giám sát không nằm dưới
sự kiểm soát của các chuyển mạch và luôn luôn được thu thập, bất kể các chuyển mạch giám sát chụp nhanh đã được thiết lập như thế nào) Bạn có thể xem các chuyển mạch có sẵn, cùng với các mô tả về các loại thông tin thu thập được khi từng bộ chuyển mạch được thiết lập ở trạng thái bật (ON) tại bảng 1
Bảng 1 Các chuyển mạch giám sát chụp nhanh
Nhóm trình
giám sát
Chuyển mạch giám sát
Tham số cấu hình của trình quản trị cơ sở
là số lần của các hoạt động đọc và ghi đã thực hiện và lượng thời gian cho từng hoạt động đọc/ghi)
Khóa (Locks) LOCK dft_mon_lock
Số khóa đã nắm giữ và
số lần gặp phải chu kỳ khóa chết
Sắp xếp (Sorts) SORT dft_mon_sort Số lượng các hoạt động
sắp xếp đã thực hiện, số
Trang 9lượng heaps đã được sử dụng, số lần tràn bộ nhớ gặp phải và hiệu năng sắp xếp
Câu lệnh SQL STATEMENT dft_mon_stmt
Thời gian bắt đầu xử lý câu lệnh SQL, Thời gian kết thúc xử lý câu lệnh SQL, và mã nhận dạng câu lệnh SQL
Bảng (Tables) TABLE dft_mon_table
Số lượng các hoạt động với bảng được thực hiện chẳng hạn như số hàng
đã được đọc, số hàng đã được viết, vv
Mốc thời gian
(Timestamps) TIMESTAMP dft_mon_timestamp
Thông tin về thời gian
và mốc thời gian
Giao dịch
(Transactions) UOW dft_mon_uow
Thời gian bắt đầu giao dịch, thời gian kết thúc giao dịch lần và trạng thái hoàn tất giao dịch
Trang 10Theo mặc định, tất cả các chuyển mạch tại bảng 1 được đặt ở trạng thái tắt (OFF), ngoại trừ chuyển mạch TIMESTAMP (mốc thời gian), được thiết lập ở trạng thái bật (ON) và được khởi tạo khi cá thể khởi chạy lần đầu tiên
Xem các thiết đặt của các chuyển mạch giám sát chụp nhanh hiện tại
Như đã đề cập ở phần trước thì kiểu và số lượng thông tin được thu thập khi thực hiện một bản chụp nhanh sẽ được kiểm soát, trong một chừng mực nào đó, tùy theo cách các chuyển mạch chụp nhanh đã được thiết lập như thế nào Trước khi bạn chụp nhanh cơ sở dữ liệu, thì điều quan trọng là bạn phải biết được chuyển mạch chụp nhanh nào đã được bật và chuyển mạch chụp nhanh nào vẫn tắt Làm thế nào để bạn có thể biết được các thiết lập hiện tại của mỗi chuyển mạch chụp nhanh là gì ? Cách đơn giản nhất là thi hành câu lệnh GET MONITOR
SWITCHES từ trong CLP Cú pháp cơ bản cho lệnh này là:
GET MONITOR SWITCHES <AT DBPARTITIONNUM [PartitionNum]>
ở đây tham số PartitonNum xác định phân đoạn của cơ sở dữ liệu (trong môi
trường cơ sở dữ liệu nhiều phân đoạn) nơi trạng thái của các chuyển mạch giám sát chụp nhanh có sẵn sẽ được lấy ra và được hiển thị
Lưu ý: Các tham số hiển thị trong dấu ngoặc nhọn (< >) là tùy chọn, các tham số
hoặc tùy chọn được hiển thị trong dấu ngoặc vuông ([ ]) là bắt buộc; và dấu phẩy kèm theo dấu ba chấm ( ) biểu thị rằng các tham số trước đó có thể được lặp lại nhiều lần
Trang 11Nếu bạn muốn nhận được và hiển thị trạng thái của các chuyển mạch giám sát chụp nhanh cho một cơ sở dữ liệu một phân đoạn, bạn có thể làm điểu này bằng cách thi hành lệnh GET MONITOR SWITCHES như sau:
GET MONITOR SWITCHES
Khi lệnh này được thi hành từ CLP, thì bạn sẽ thấy một kết quả đầu ra như ở hình bên dưới
Kết quả đầu ra của lệnh GET MONITOR SWITCHES
Monitor Recording Switches
Switch list for db partition number 0
Buffer Pool Activity Information (BUFFERPOOL) = OFF
Lock Information (LOCK) = OFF
Sorting Information (SORT) = OFF
SQL Statement Information (STATEMENT) = OFF
Table Activity Information (TABLE) = OFF
Take Timestamp Information (TIMESTAMP) = ON 06-12-2006
Trang 12đó là ngày 12 tháng 6 năm 2006, lúc 10:30 sáng)
Thay đổi trạng thái của một chuyển mạch giám sát chụp nhanh
Một khi bạn biết được những chuyển mạch giám sát chụp nhanh nào đã được bật lên và những chuyển mạch giám sát chụp nhanh nào đang ở trạng thái tắt, thì bạn
có thể sẽ cần thay đổi một hoặc nhiều thiết đặt các chuyển mạch trước khi bạn bắt đầu quá trình giám sát Các thiết đặt chuyển mạch giám sát chụp nhanh có thể được thay đổi ở mức cá thể trình quản trị cơ sở dữ liệu bằng cách sửa đổi các tham
số cấu hình thích hợp của trình quản trị cơ sở dữ liệu DB2 (xem bảng 1) với lệnh UPDATE DATABASE MANAGER CONFIGURATION
Trang 13Mặt khác, các thiết đặt chuyển mạch giám sát chụp nhanh có thể được thay đổi ở mức ứng dụng bằng cách thi hành lệnh UPDATE MONITOR SWITCHES Cú pháp cơ bản cho lệnh này là:
UPDATE MONITOR SWITCHES USING [[SwitchID] ON | OFF , ]
ở đây tham số SwitchID xác định một hay nhiều chuyển mạch giám sát chụp
nhanh mà trạng thái phải được thay đổi Tham số này có thể chứa bất kỳ hoặc tất
cả các giá trị sau: BUFFERPOOL, LOCK, SORT, STATEMENT, TABLE,
TIMESTAMP và UOW
Nếu bạn muốn thay đổi trạng thái của chuyển mạch giám sát chụp nhanh LOCK sang ON ở mức ứng dụng, bạn có thể làm điều này bằng cách thi hành lệnh
UPDATE MONITOR SWITCHES như sau:
UPDATE MONITOR SWITCHES USING LOCKS ON
Tương tự, nếu bạn muốn thay đổi trạng thái của chuyển mạch giám sát chụp nhanh BUFFERPOOL sang OFF, bạn có thể làm điều này bằng cách thi hành lệnh
UPDATE MONITOR SWITCHES như sau:
UPDATE MONITOR SWITCHES USING BUFFERPOOL OFF
Việc thiết đặt các chuyển mạch giám sát chụp nhanh ở mức cá thể trình quản trị cơ
sở dữ liệu (sử dụng lệnh UPDATE DATABASE MANAGER
CONFIGURATION) sẽ ảnh hưởng đến tất cả các cơ sở dữ liệu dưới sự kiểm soát của cá thể ấy (nói cách khác, mọi ứng dụng thiết lập một kết nối đến cơ sở dữ liệu dưới sự kiểm soát của cá thể này sẽ kế thừa các thiết đặt chuyển mạch đã thực hiện trong cấu hình của cá thể đó) Hơn nữa, các thiết đặt của chuyển mạch được thực hiện ở mức cá thể vẫn tiếp tục còn lại thường trực khi cá thể khởi động lại
Trang 14Việc thiết đặt các chuyển mạch giám sát ở mức ứng dụng (bằng cách sử dụng lệnh UPDATE MONITOR SWITCHES) chỉ ảnh hưởng đến cơ sở dữ liệu mà ứng dụng đơn lẻ này tương tác với nó Ngoài ra, các thiết đặt cho chuyển mạch chỉ có tác dụng trong thời gian sống của ứng dụng đó
Thu giữ dữ liệu giám sát chụp nhanh
Ngay sau khi cơ sở dữ liệu được kích hoạt hoặc kết nối đến cơ sở dữ liệu được thiết lập, trình giám sát chụp nhanh bắt đầu thu thập dữ liệu giám sát Tuy nhiên, phải thực hiện một cú chụp nhanh trước khi có thể xem được bất kỳ dữ liệu nào đã thu thập (Về bản chất, hình chụp nhanh là hình ảnh những gì thể hiện các phần tử giám sát đang sử dụng, tại một thời điểm cụ thể) Có thể thực hiện chụp nhanh bằng cách nhúng API db2GetSnapshot() vào một chương trình ứng dụng, hoặc bằng cách thi hành lệnh GET SNAPSHOT Cú pháp cơ bản cho lệnh này là:
GET SNAPSHOT FOR
[DATABASE MANAGER | DB MANAGER | DBM] |
ALL DATABASES |
ALL APPLICATIONS |
ALL BUFFERPOOLS |
ALL REMOTE_DATABASES |
Trang 15ở đây tham số DatabaseAlias xác định bí danh đã gán cho cơ sở dữ liệu mà các
thông tin giám sát chụp nhanh sẽ được thu thập cho cơ sở dữ liệu đó
Nếu bạn muốn có một hình chụp nhanh chỉ chứa dữ liệu thu thập về các khóa đang được nắm giữ bởi các ứng dụng tương tác với cơ sở dữ liệu có tên là PAYROLL, bạn có thể làm điều này bằng cách thi hành lệnh sau:
GET SNAPSHOT FOR LOCKS ON PAYROLL
Trang 16Kết quả đầu ra của lệnh này sẽ trông giống như hình bên dưới (Lưu ý rằng đây là một ví dụ đơn giản Tình huống giám sát thực tế thường tạo ra một số lượng lớn
dữ liệu )
Ví dụ kết quả đầu ra của lệnh GET SNAPSHOT
Database Lock Snapshot
Database name = PAYROLL
Database path = C:\DB2\NODE0000\SQL00002\
Input database alias = PAYROLL
Locks held = 2
Applications currently connected = 1
Agents currently waiting on locks = 0
Snapshot timestamp = 06-12-2004 08:39:40.750316
Application handle = 8
Application ID = *LOCAL.DB2.00E286133931
Trang 17Sequence number = 0001
Application name = db2bp.exe CONNECT Authorization ID = DB2ADMIN Application status = UOW Waiting Status change time = Not Collected Application code page = 1252
Locks held = 2
Total wait time (ms) = Not Collected List Of Locks Lock Name = 0x94928D848F9F949E7B89505241 Lock Attributes = 0x00000000
Release Flags = 0x40000000
Lock Count = 1
Hold Count = 0
Lock Object Name = 0
Object Type = Internal P Lock
Trang 18Mode = S
Lock Name = 0x96A09A989DA09A7D8E8A6C7441
Lock Attributes = 0x00000000
Release Flags = 0x40000000
Lock Count = 1
Hold Count = 0
Lock Object Name = 0
Object Type = Internal P Lock
Mode = S
Như bạn thấy, câu lệnh GET SNAPSHOT có thể được dùng để thu giữ nhiều kiểu
dữ liệu giám sát khác nhau, bao gồm:
Dữ liệu của cá thể trình quàn lý cơ sở dữ liệu của DB2
Dữ liệu của cơ sở dữ liệu cho tất cả các cơ sở dữ liệu đang hoạt động dưới
sự kiểm soát của cá thể ấy
Dữ liệu ứng dụng
Dữ liệu về hoạt động của pool đệm
Trang 19 Dữ liệu về vùng bảng
Dữ liệu bảng
Dữ liệu về khóa (thông tin về tất cả các khóa đang bị giữ)
Dữ liệu về SQL động (thông tin tại đúng thời điểm về câu lệnh SQL được giữ tại bộ nhớ cache của câu lệnh SQL)
Bạn cũng có thể nhận thấy rằng có một sự tương quan trực tiếp giữa các chuyển mạch giám sát chụp nhanh sẵn có và các kiểu dữ liệu giám sát khác nhau có thể được thu thập khi một hình chụp nhanh được thực hiện Nếu một chuyển mạch giám sát chụp nhanh cụ thể bị tắt đi và ảnh chụp nhanh các phần tử giám sát kết hợp với chuyển mạch đó được thực hiện, thì các dữ liệu giám sát thu được sẽ không có bất kỳ giá trị nào cả (Trong ví dụ trước, một số giá trị được hiển thị với thông báo: Không thu thập được (Not Collected) vì chuyển mạch giám sát chụp nhanh tương ứng ở trạng thái tắt (OFF) Hơn nữa, nếu không có khóa nào được nắm giữ tại thời điểm thực hiện chụp nhanh, thì giá trị cho khóa đó là 0 và danh sách hiển thị các thông tin về khóa sẽ không được sinh ra.)
Thu giữ dữ liệu giám sát chụp nhanh bằng cách sử dụng SQL
Với các phiên bản trước của cơ sở dữ liệu phổ quát (UDB) DB2, cách duy nhất để thu giữ dữ liệu giám sát chụp nhanh là thi hành lệnh GET SNAPSHOT hoặc gọi API tương ứng của nó từ trong một chương trình ứng dụng Với DB2 phiên bản 8.1, thì khả năng thu giữ dữ liệu của trình giám sát chụp nhanh bằng cách xây dựng một truy vấn đã được đưa vào thêm Phương pháp này dựa trên hai mươi hàm bảng đặc biệt để giám sát chụp nhanh, các hàm này đã trở nên lỗi thời, bị loại
Trang 20trong phiên bản 9.1 Bây giờ, dữ liệu giám sát chụp nhanh có thể thu được bằng
cách sử dụng một tập hợp mới các thường trình (routines) SQL để truy cập dữ liệu
được lưu giữ trong các khung nhìn quản trị đặc biệt Các thường trình và các
khung nhìn này được mô tả trong bảng 2
Bảng 2 Các khung nhìn quản trị và các thường trình SQL quản trị về chụp
nhanh
Khung nhìn quản trị này chứa thông tin về các ứng dụng đã kết nối cơ sở dữ liệu
Khung nhìn quản trị này chứa thông tin về
tỷ lệ số các hàng được chọn so với số các hàng mà ứng dụng đã đọc ra
Khung nhìn quản trị này chứa thông tin về các ứng dụng đã kết nối cơ sở dữ liệu
Trang 21BP_READ_IO N/A
Khung nhìn quản trị này chứa thông tin về thực hiện đọc pool đệm
Khung nhìn quản trị này chứa thông tin về thực hiện viết vào pool đệm
CONTAINER_UTILIZATION N/A
Khung nhìn quản trị này chứa thông tin về thùng chứa vùng bảng
và tỷ lệ sử dụng
Khung nhìn quản trị này chứa thông tin về các khóa đang được nắm giữ
Khung nhìn quản trị này chứa thông tin về các khóa đang đợi được cấp
Trang 22LOG_UTILIZATION N/A
Khung nhìn quản trị này chứa thông tin về nhật ký sử dụng của cơ
sở dữ liệu đã kết nối
Khung nhìn quản trị này chứa thông tin về các câu lệnh SQL chạy lâu nhất trong cơ sở dữ liệu hiện tại đã kết nối
Khung nhìn quản trị này chứa danh sách các câu lệnh SQL cùng với thời gian cần thiết
để chuẩn bị mỗi câu lệnh
Thủ tục này ghi dữ liệu chụp nhanh hệ thống vào một tệp tin trong
thư mục con tmp của
cá thể trình quản trị cơ
sở dữ liệu
Khung nhìn quản trị và
Trang 23hàm bảng trả về thông tin về các tác tử từ một hình chụp nhanh ứng dụng, đặc biệt là về nhóm dữ liệu lôgic của tác tử
SNAPAGENT_MEMORY_POOL SNAP_GET_AGENT_MEMORY_POOL
Khung nhìn quản trị và hàm bảng trả về thông tin về việc sử dụng bộ nhớ tại mức tác tử
Khung nhìn quản trị và hàm bảng trả về các thông tin về ứng dụng
từ hình chụp nhanh ứng dụng, đặc biệt là
về nhóm dữ liệu lôgic appl
Khung nhìn quản trị và hàm bảng trả về các thông tin về ứng dụng
từ hình chụp nhanh ứng dụng, đặc biệt là
về nhóm dữ liệu lôgic appl_info
Trang 24SNAPBP SNAP_GET_BP
Khung nhìn quản trị và hàm bảng trả về các thông tin về các pool đệm, đặc biệt là về nhóm dữ liệu lôgic bufferpool
Khung nhìn quản trị và hàm bảng trả về các thông tin về các pool đệm, từ một hình chụp nhanh bufferpool, đặc biệt là về nhóm dữ liệu lôgic
bufferpool_nodeinfo
Khung nhìn quản trị và hàm bảng trả về các thông tin về hình chụp nhanh vùng bảng từ nhóm dữ liệu lôgic tablespace_container
Khung nhìn quản trị và hàm bảng trả về các thông tin hình chụp nhanh từ cơ sở dữ liệu
Trang 25(dbase) và gộp nhóm lôgic lưu trữ cơ sở dữ liệu(db_storage_group)
Khung nhìn quản trị và hàm bảng trả về các thông tin về sử dụng
cơ sở dữ liệu DB2 (dbm) của trình giám sát chụp hình
SNAPDBM_MEMORY_POOL SNAP_GET_DBM_MEMORY_POOL
Khung nhìn quản trị và hàm bảng trả về các thông tin về sử dụng
bộ nhớ tại mức trình quản lý cơ sở dữ liệu
SNAPDETAILLOG SNAP_GET_DETAILLOG_V91 Khung nhìn quản trị và
hàm bảng trả về các
Trang 26thông tin về hình chụp nhanh từ nhóm dữ liệu lôgic detail_log
Khung nhìn quản trị và hàm bảng trả về các thông tin về hình chụp nhanh từ nhóm dữ liệu lôgic dynsql
Khung nhìn quản trị và hàm bảng trả về các thông tin về trình quản
lý truyền thông nhanh chóng (FCM) từ hình chụp nhanh trình quản
lý cơ sở dữ liệu, đặc biệt là về nhóm dữ liệu lôgic fcm
Khung nhìn quản trị và hàm bảng trả về các thông tin về trình quản
lý truyền thông nhanh (FCM) từ hình chụp trình quản lý cơ sở dữ liệu, đặc biệt là về
Trang 27nhóm dữ liệu lôgic fcm_node
Khung nhìn quản trị và hàm bảng trả về các thông tin về tính sẵn sàng phục hồi sau sự
cố từ hình chụp nhanh
cơ sở dữ liệu, đặc biệt
là về nhóm dữ liệu lôgic hadr
Khung nhìn quản trị và hàm bảng trả về các thông tin chụp nhanh
về khóa, đặc biệt là về nhóm dữ liệu lôgic lock
Khung nhìn quản trị và hàm bảng trả về các thông tin chụp nhanh
về chờ khóa, đặc biệt
là về nhóm dữ liệu lôgic lockwait
Trang 28SNAPSTMT SNAP_GET_STMT
Khung nhìn quản trị và hàm bảng trả về các thông tin về câu lệnh
từ hình chụp nhanh ứng dụng
Khung nhìn quản trị và hàm bảng trả về danh sách các đường dẫn lưu trữ tự động cho cơ
sở dữ liệu, bao gồm thông tin về hệ thống tệp tin cho mỗi đường dẫn lưu trữ, đặt biệt là
từ nhóm dữ liệu lôgic db_storage_group
The administrative view and table function returns information about application
subsections, namely the subsection logical monitor grouping
Trang 29SNAPSWITCHES SNAP_GET_SWITCHES
Khung nhìn quản trị và hàm bảng trả về thông tin về trạng thái các chuyển mạch chụp nhanh cơ sở dữ liệu
Khung nhìn quản trị và hàm bảng trả về thông tin chụp nhanh từ nhóm dữ liệu lôgic của bảng (table)
Khung nhìn quản trị và hàm bảng trả về thông tin về tổ chức lại bảng
Khung nhìn quản trị và hàm bảng trả về thông tin chụp nhanh từ nhóm dữ liệu lôgic không gian bảng (tablespace)
Khung nhìn quản trị và hàm bảng trả về thông tin chụp nhanh từ
Trang 30nhóm dữ liệu lôgic tablespace_nodeinfo
SNAPTBSP_QUIESCER SNAP_GET_TBSP_QUIESCER
Khung nhìn quản trị và hàm bảng trả về thông tin về các lệnh giữ im lặng (quiescers) từ hình chụp nhanh vùng bảng
Khung nhìn quản trị và hàm bảng trả về thông tin từ hình chụp nhanh của dải (range) vùng bảng
Khung nhìn quản trị và hàm bảng trả về thông tin chụp nhanh về các tiện ích từ nhóm dữ liệu lôgic utility_info
SNAPUTIL_PROGRESS SNAP_GET_UTIL_PROGRESS
Khung nhìn quản trị và hàm bảng trả về thông tin về tiến trình tiện ích, đặc biệt là về nhóm dữ liệu lôgic tiến
Trang 31trình
Khung nhìn quản trị chứa các thông tin về cấu hình và sử dụng vùng bảng
Khung nhìn quản trị chứa các câu lệnh SQL động có thứ hạng cao nhất khi sắp xếp theo
số lần thi hành, thời gian thực thi trung bình, số lần sắp xếp hoặc sắp xếp theo từng câu lệnh
Nếu bạn muốn có thông tin về khóa của các cơ sở dữ liệu hiện đang kết nối chẳng
hạn, bạn có thể làm điều này bằng cách thực hiện truy vấn sau:
SELECT AGENT_ID, LOCK_OBJECT_TYPE, LOCK_MODE,
LOCK_STATUS
FROM SYSIBMADM.SNAPLOCK
Trang 32Hàm bảng SNAP_GET_LOCK trả về cũng các thông tin giống như khung nhìn quản trị SNAPLOCK nhưng nó cho phép bạn lấy ra các thông tin của một cơ sở
dữ liệu cụ thể hoặc cơ sở dữ liệu cụ thể trên một phân đoạn cơ sở dữ liệu cụ thể (thay vì cơ sở dữ liệu hiện đang được kết nối) Lệnh truy vấn sử dụng hàm bảng SNAP_GET_LOCK như sau:
SELECT AGENT_ID, LOCK_OBJECT_TYPE, LOCK_MODE,
LOCK_STATUS
FROM TABLE(SNAP_GET_LOCK('',-1)) AS T
Khi được sử dụng với hàm bảng SNAP_GET_LOCKWAIT, hàm bảng
SNAP_GET_LOCK cung cấp các thông tin tương tự như lệnh GET SNAPSHOT
FOR LOCKS ON [DatabaseAlias]
Bắt đầu lại bộ đếm giám sát chụp nhanh
Trước đây bạn thấy rằng một trong những kiểu phần tử mà các phần tử giám sát sử dụng để lưu trữ dữ liệu là một bộ đếm và các bộ đếm đó lưu giữ tổng lũy kế số lần một hoạt động hay một sự kiện xảy ra Giá trị của bộ đếm tăng lên trong suốt thời gian tồn tại của trình giám sát Vậy thì việc đếm bắt đầu chính xác vào khi nào? Việc đếm thường bắt đầu ngay khi chuyển mạch giám sát chụp nhanh được bật lên hoặc khi ta kết nối vào cơ sở dữ liệu (nếu sử dụng giám sát ở mức cá thể (trình quản trị cơ sở dữ liệu), thì việc đếm bắt đầu khi ứng dụng lần đầu tiên thiết lập
Trang 33một kết nối đến cơ sở dữ liệu dưới sự kiểm soát của cá thể ấy) Tuy nhiên, có những lúc ta muốn bắt đầu lại tất cả các bộ đếm trở về 0 mà không phải tắt chuyển mạch giám sát chụp nhanh rồi bật lại ngay, và không phải ngắt và thiết lập lại kết nối tới cơ sở dữ liệu Cách dễ dàng nhất để nhanh chóng đưa bộ đếm giám sát chụp nhanh về 0 là thực hiện lệnh RESET MONITOR Cú pháp cơ bản cho lệnh này là:
RESET MONITOR ALL
hoặc
RESET MONITOR FOR [DATABASE | DB] [DatabaseAlias]
ở đây tham số DatabaseAlias xác định bí danh của cơ sở dữ liệu mà các bộ đếm
giám sát chụp nhanh cho cơ sở dữ liệu đó phải bắt đầu lại
Nếu bạn muốn bắt đầu lại các bộ đếm giám sát chup nhanh cho tất cả các cơ sở dữ liệu dưới sự kiểm soát của cá thể (trình quản trị cơ sở dữ liệu), thì bạn có thể làm điều này bằng cách gắn với cá thể đó và thi hành lệnh RESET MONITOR sau:
RESET MONITOR ALL
Trang 34Mặt khác, nếu bạn chỉ muốn bắt đầu lại các bộ đếm giám sát chụp nhanh kết hợp với một cơ sở dữ liệu có tên là SAMPLE, thì bạn có thể làm điều này bằng cách thực hiện lệnh RESET MONITOR như sau:
RESET MONITOR FOR DATABASE SAMPLE
Điều quan trọng mà bạn cần lưu ý là bạn không thể chọn lọc và bắt đầu lại chỉ một
số các bộ đếm của một nhóm giám sát cụ thể kiểm soát bởi một chuyển mạch giám sát chụp nhanh bằng cách sử dụng lệnh RESET MONITOR Để thực hiện hoạt động kiểu này, bạn phải tắt chuyển mạch giám sát chụp nhanh thích hợp rồi bật lại ngay hoặc ngắt và thiết lập lại các kết nối tới cơ sở dữ liệu
Thu giữ dữ liệu của trình giám sát sự kiện
Các trình giám sát sự kiện
Bạn vừa thấy rằng các trình giám sát chụp nhanh cung cấp một cách thức để thu giữ và ghi lại các thông tin về trạng thái của một cá thể (trình quản trị cơ sở dữ liệu) hay một cơ sở dữ liệu tại một thời điểm cụ thể Ngược lại, các trình giám sát
sự kiện thu thập dữ liệu khi xảy ra các sự kiện cụ thể hoặc các chuyển trạng thái Trình giám sát sự kiện cung cấp một cách thức để thu thập dữ liệu giám sát khi các
sự kiện hoặc các hoạt động xảy ra mà ta không thể giám sát được bằng cách sử dụng các trình giám sát chụp nhanh
Ví dụ, giả sử bạn muốn thu thập dữ liệu giám sát bất cứ khi nào một chu trình khóa chết xảy ra Nếu bạn quen với khái niệm khóa chết (deadlocks), thì bạn biết
Trang 35rằng một tiến trình đặc biệt được gọi là trình dò tìm khóa chết (daemon) lặng lẽ chạy ở mặt sau và "tỉnh dậy" theo các khoảng thời gian định trước để quét hệ thống khóa tìm các chu trình khóa chết Nếu tìm thấy một chu trình khóa chết, thì trình dò tìm khóa chết sẽ chọn ngẫu nhiên một trong những giao dịch dính líu đến chu trình, cuộn ngược lại, và chấm dứt giao dịch ấy Kết quả là giao dịch được chọn nhận được một mã lỗi SQL và tất cả các khóa đã giành được nhân danh giao dịch này sẽ được giải phóng để cho các giao dịch còn lại có thể tiến hành Thông tin về một loạt các sự kiện như vậy không thể thu thập được bởi trình giám sát chụp nhanh bởi vì, rất nhiều khả năng là chu trình khóa chết sẽ bị phá vỡ từ lâu rồi trước khi một hình chụp nhanh có thể được thực hiện Mặt khác, một trình giám sát sự kiện có thể thu được những thông tin quan trọng về sự kiện như vậy bởi vì
nó sẽ được kích hoạt vào chính thời điểm mà chu trình khóa chết được phát hiện
Có một sự khác biệt đáng kể nữa giữa hai trình giám sát này - trình giám sát chụp nhanh tồn tại như một là tiến trình ở mặt sau, nó bắt đầu thu thập dữ liệu giám sát một khi kết nối đến cơ sở dữ liệu được thiết lập Ngược lại, các trình giám sát sự kiện phải được tạo ra trước khi có thể sử dụng chúng Một số trình giám sát sự kiện khác nhau có thể tồn tại, và mỗi trình giám sát sự kiện được kích hoạt chỉ khi một kiểu sự kiện hoặc giao dịch cụ thể xảy ra Bảng 3 cho thấy các kiểu sự kiện có thể làm cho một trình giám sát sự kiện được kích hoạt, cùng với các loại dữ liệu giám sát được thu thập đối với mỗi kiểu sự kiện
Bảng 3 Các kiểu sự kiện và các dữ liệu được thu thập cho mỗi sự kiện
Kiểu sự kiện Dữ liệu thu thập được
Khi nào thì
dữ liệu được thu
Tên nhóm (Bảng đích) kết hợp
Trang 36thập
DATABASE Giá trị của tất cả các bộ đếm
ở mức cơ sở dữ liệu
Khi cơ sở dữ liệu ngừng hoạt động, hay khi ứng dụng cuối cùng đã kết nối tới cơ sở
dữ liệu chấm dứt kết nối
DB, CONTROL
BUFFERPOOLS
Giá trị của tất cả các bộ đếm của pool đệm, của các trình tiền nạp (prefetchers) và của các trình làm sạch trang cũng như các I/O trực tiếp cho mỗi pool đệm được sử dụng
Khi cơ sở dữ liệu ngừng hoạt động, hay khi ứng dụng cuối cùng đã kết nối tới cơ sở
dữ liệu chấm dứt kết nối
BUFFERPOOL, CONTROL
TABLESPACES
Giá trị của tất cả các bộ đếm của pool đệm, của các trình tiền nạp (prefetchers) và của các trình làm sạch trang cũng như các I/O trực tiếp
Khi cơ sở dữ liệu ngừng hoạt động, hay khi ứng dụng cuối
TABLESPACE, CONTROL
Trang 37cho mỗi vùng bảng được sử dụng
cùng được kết nối tới cơ
sở dữ liệu chấm dứt kết nối
TABLES Số hàng đã đọc và số hàng
đã viết vào cho mỗi bảng
Khi cơ sở dữ liệu ngừng hoạt động, hay khi ứng dụng cuối cùng được kết nối tới cơ
sở dữ liệu chấm dứt kết nối
TABLE, CONTROL
DEADLOCKS
Thông tin toàn diện về những ứng dụng liên quan, bao gồm mã nhận diện tất cả các câu lệnh SQL liên quan đến (cùng với văn bản của câu lệnh) và một danh sách các khóa mà mỗi câu lệnh đó nắm giữ
Khi chu trình khóa chết được phát hiện
CONNHEADER, DEADLOCK, DLCONN, DLLOCK, CONTROL
CONNECTIONS
Giá trị của tất cả các bộ đếm Khi một ứng CONNHEADER,
Trang 38ở mức ứng dụng dụng đã kết
nối tới cơ sở
dữ liệu chấm dứt kết nối
CONN, CONTROL
STATEMENTS
Thời gian bắt đầu/ kết thúc của câu lệnh, lượng CPU đã dùng, văn bản của các câu lệnh SQL động, SQLCA (Mã trả về của câu lệnh SQL) và những số đo khác
dữ liệu được phân đoạn, khi một phần của câu lệnh SQL thi hành xong
CONNHEADER, STMT,
SUBSECTION, CONTROL
TRANSACTIONS
Thời gian bắt đầu/ kết thúc giao dịch, thời gian giao dịch trước đó, lượng CPU đã tiêu dùng, cùng với các số
đo về khóa và nhật ký (bản ghi các giao dịch không được tạo ra nếu cơ sở dữ liệu
áp dụng xử lý giao kết hai pha và giao diện XA
Khi một giao dịch kết thúc (bằng câu lệnh giao kết hay cuộn ngược lại)
CONNHEADER, XACT, CONTROL
Trang 39X/Open)
Do trình giám sát sự kiện là các đối tượng cơ sở dữ liệu đặc biệt cần phải được tạo
ra trước khi có thể sử dụng chúng, nên chúng chỉ có thể thu thập dữ liệu giám sát cho các sự kiện hoặc các giao dịch diễn ra trong cơ sở dữ liệu mà chúng đã được định nghĩa Các trình giám sát sự kiện không thể được sử dụng để thu thập dữ liệu giám sát ở mức cá thể (trình quản trị cơ sở dữ liệu)
Tạo các trình giám sát sự kiện
Bạn có thể tạo các trình giám sát sự kiện trực tiếp từ Trung tâm điều khiển
(Control Center - chọn mục Create Event Monitor từ trình đơn Event Monitors) hoặc bằng cách thi hành câu lệnh SQL CREATE EVENT MONITOR Cú pháp cơ bản cho câu lệnh này là:
CREATE EVENT MONITOR [Name]
FOR [DATABASE | BUFFERPOOLS | TABLESPACES | TABLES |
DEADLOCKS <WITH DETAIL> |
CONNECTIONS <WHERE [EventCondition]> |
STATEMENTS <WHERE [EventCondition]]> |
TRANSACTIONS <WHERE [EventCondition]> , ]
WRITE TO [TABLE [GroupName] (TABLE [TableName]) | PIPE
Trang 40[PipeName] | FILE [DirectoryName]]
[MANUALSTART | AUTOSTART]
ở đây:
Name là tên để gán cho trình giám sát sự kiện sẽ được tạo ra
EventCondition là điều kiện được sử dụng để xác định trình giám sát sự
kiện sẽ thu thập dữ liệu cho CONNECTION, STATEMENT hay
TRANSACTION nào
GroupName là nhóm dữ liệu lôgic mà bảng đích đã được định nghĩa cho
nó (Xem bảng 3 để biết các giá trị thích hợp để sử dụng cho tham số này.)
TableName là tên được gán cho bảng cơ sở dữ liệu mà tất cả các dữ liệu
giám sát sự kiện được ghi vào
PipeName là tên được gán cho đường ống có đặt tên mà tất cả các dữ liệu
giám sát sự kiện được ghi vào
DirectoryName là tên được gán cho thư mục mà một hoặc nhiều tệp tin
chứa dữ liệu giám sát sự kiện sẽ ghi vào
Giả sử rằng bạn muốn tạo ra một trình giám sát sự kiện thu thập các giá trị của tất
cả các bộ đếm ở mức ứng dụng và ghi chúng vào một bảng cơ sở dữ liệu được đặt tên là CONN_DATA mỗi khi một ứng dụng ngừng kết nối của nó đến một cơ sở
dữ liệu Để làm điều này, bạn thực hiện câu lệnh CREATE EVENT MONITOR như sau: