Cơ sở hạ tầng lưới của Oracle bao gồm Trình theo dõi sức khỏe cụm (CHM) thường xuyên nắm bắt thông tin hiệu suất liên quan đến hệ điều hành. Trong các phiên bản đầu tiên, CHM sử dụng Berkeley DB để lưu trữ dữ liệu của nó. Trong Cơ sở hạ tầng lưới 12.1.0.2, bây giờ bắt buộc phải sử dụng cơ sở dữ liệu Oracle để lưu trữ dữ liệu. Cơ sở dữ liệu Oracle này được gọi là Kho lưu trữ Quản lý Cơ sở hạ tầng Lưới (GIMR). Nhiều người đã biết rằng GIMR chạy với tên cơ sở dữ liệu “-MGMTDB” và chỉ chạy trên một nút của cụm GI. Nếu nút đó khả dụng, GI sẽ tự động khởi động GIMR trên một nút còn lại.
Đoạn trên là về tất cả thông tin cơ bản mà tôi sẽ cung cấp trên GIMR. Nếu người đọc muốn biết thêm, họ chắc chắn có thể thực hiện tìm kiếm trên web để biết thông tin về cách quản lý (cơ sở dữ liệu này cần quản lý chút ít nào) cũng như cách khởi động và dừng cơ sở dữ liệu cũng như trình xử lý chuyên dụng của nó.
Bài đăng trên blog này nhằm hướng dẫn người đọc cách truy cập cơ sở dữ liệu GIMR và trích xuất thông tin có ý nghĩa từ nó. Tìm kiếm trên web nhiều hơn có thể chỉ ra cách sử dụng các tiện ích dòng lệnh để xuất dữ liệu từ GIMR. Và có một tiện ích đồ họa, CHMOSG, có thể được sử dụng để xem dữ liệu CHM trong kho lưu trữ. Nhưng nói cho vui thôi, tôi nghĩ mình sẽ chỉ cách truy cập trực tiếp vào dữ liệu.
Trước tiên, bạn cần biết cơ sở dữ liệu đang chạy trên nút nào. Trên bất kỳ nút nào, tôi có thể đưa ra các vấn đề sau:
[oracle @ host01 bin] $ cd /u01/app/crs12.1.0.2[oracle@host01 bin] $ ./crs_stat -t | grep -i mgmtora.MGMTLSNR ora .... nr.type TRỰC TUYẾN host01 ora.mgmtdb ora .... db.type TRỰC TUYẾN host01
Ở trên cho thấy cơ sở dữ liệu và trình nghe đang chạy trên host01. Bây giờ tôi đã biết nút của phiên bản, tôi có thể đăng nhập vào nút đó và đặt các biến môi trường của mình để kết nối với phiên bản. Cơ sở dữ liệu này chạy từ trang chủ Cơ sở hạ tầng lưới, không phải trang chủ RDBMS. Vì vậy, tôi cần đặt ORACLE_HOME của mình một cách chính xác. Ngoài ra, tên phiên bản bắt đầu bằng dấu gạch ngang, vì vậy tôi cần đặt SID trong dấu ngoặc kép.
[oracle @ host01 ~] $ export ORACLE_HOME =/ u01 / app / crs12.1.0.2 [oracle @ host01 ~] $ export PATH =$ ORACLE_HOME / bin:$ PATH [oracle @ host01 ~] $ export ORACLE_SID ="-MGMTDB"
Giờ đây, tôi có thể kết nối với phiên bản và xác minh rằng tôi đã kết nối với phiên bản phù hợp.
[oracle @ host01 ~] $ sqlplus / nolog
SQL * Plus:Phát hành 12.1.0.2.0 Sản xuất vào Thứ Hai ngày 21 tháng 12 15:17:21 năm 2015
Bản quyền (c) 1982, 2014, Oracle. Mọi quyền được bảo lưu.
SQL> connect / as sysdbaConnected.SQL> chọn instance_name từ v $ instance;
INSTANCE_NAME ----------------- MGMTDB
Cơ sở dữ liệu này là cơ sở dữ liệu đa đối tượng của Oracle, một PDB. Tôi cần xác định tên PDB. Tên PDB sẽ giống như tên cụm. Tôi có thể tự nhắc mình về tên cụm bằng cách truy vấn V $ ACTIVE_SERVICES.
SQL> chọn tên, con_id 2 từ v $ active_services;
TÊN CON_ID --------------------------------------------- -------- ---------- my_cluster 3-MGMTDBXDB 1_mgmtdb 1SYS $ BACKGROUND 1SYS $ USERS 1
SQL> thay đổi vùng chứa bộ phiên = my_cluster ;
Đã thay đổi phiên.
Chỉ có một dịch vụ có id vùng chứa không bằng 1 (1 là CDB) vì vậy nó phải là PDB mà tôi đang tìm kiếm. Tôi sửa đổi phiên của mình để sử dụng PDB làm vùng chứa của nó.
Nhiệm vụ tiếp theo của tôi là lấy danh sách các bảng do CHM sở hữu.
SQL> chọn table_name từ dba_tables trong đó owner ='CHM' 2 sắp xếp theo tên_bảng;
TABLE_NAME ---------------------------------------------- -------------------------------Chỉ có 10 bảng trong lược đồ. Bảng đầu tiên trong danh sách hiển thị một số thông tin cấu hình về các máy chủ được giám sát CHM.
SQL> chọn tên máy chủ, NUMPHYCPUS, NUMCPUS, NUMDISKS 2 từ CHM.CHMOS_ACTIVE_CONFIG_INT_TBL;HOSTNAME NUMPHYCPUS SỐ TÊN SỐ CỬA HÀNG ---------- ---------- ------------- host01 1 2 3host02 1 2 3Tôi có thể thấy rằng CHM đang thu thập thông tin về hai nút trong cụm. Tôi có thể thấy số lượng CPU vật lý cho mỗi nút và tổng số lõi (2). Các nút này cũng có 3 đĩa.
Chúng tôi cũng có thể tìm hiểu thông tin về Hệ điều hành.
SQL> chọn tên máy chủ, tên hệ điều hành, loại chip 2 từ CHM.CHMOS_STATIC_CONFIG_INT_TBL;HOSTNAME OSNAME CHIPTYPE ------------------------------- host01 Linux Intel ( R) host02 Linux Intel (R)Có một lượng lớn thông tin trong các bảng này và bạn chỉ cần thử và sai để tìm ra những gì có trong đó. Ví dụ:tôi có thể sử dụng truy vấn này để biết số lượng các quy trình đang chạy trên host01 được sắp xếp theo thời gian.
chọn thời gian bắt đầu, đếm (*) từ CHM.CHMOS_PROCESS_INT_TBLwhere hostname ='host01'group theo hồ sơ yêu cầu theo thời gian sinh;Tôi cố ý không bao gồm đầu ra vì nó sẽ quá dài cho một bài đăng trên blog. Dưới đây là một số truy vấn mẫu khác mà bạn có thể thử trên cơ sở dữ liệu GIMR của mình.
Hoạt động I / O của đĩa cho một máy chủ cụ thể theo thời gian.
chọn thời gian lập hồ sơ, DISK_BYTESREADPERSEC / 1024/1024 dưới dạng MB_READ_SEC, DISK_BYTESWRITTENPERSEC / 1024/1024 dưới dạng MB_WRITE_SEC, DISK_NUMIOSPERSEC dưới dạng IO_PER_SECfrom CHM.CHMOS_SYSTEM_SAMorder bởi máy chủ lưu trữTrao đổi trên một máy chủ cụ thể theo thời gian.
select seekintime, swpin, swpoutf from CHM.CHMOS_SYSTEM_SAMPLE_INT_TBLwhere hostname ='host01'order by seekintime;Câu lệnh SQL tiếp theo sẽ tính toán biểu đồ hoạt động I / O của đĩa. Tôi chắc chắn rằng ai đó khác có thể nghĩ ra một phiên bản thanh lịch hơn vì các câu lệnh SQL của tôi có xu hướng thô bạo hơn.
chọn first.num_count là "<=10ms", second.num_count là "<=20ms", third.num_count là "<=50ms", 4th.num_count là "<=100ms", 5th.num_count là "<=500ms ", final.num_count as"> 500ms "từ (select count (*) as num_count từ CHM.CHMOS_DEVICE_INT_TBL trong đó devid ='sda1' và độ trễ từ 0 đến 10) trước tiên, (chọn count (*) as num_count từ CHM .CHMOS_DEVICE_INT_TBL trong đó devid ='sda1' và độ trễ từ 11 đến 20) giây, (chọn số (*) làm số lượng từ CHM.CHMOS_DEVICE_INT_TBL trong đó devid ='sda1' và độ trễ từ 21 đến 50) thứ ba, (chọn số (*) dưới dạng num_count từ CHM.CHMOS_DEVICE_INT_TBL trong đó devid ='sda1' và độ trễ từ 51 đến 100) thứ tư, (chọn số lượng (*) dưới dạng num_count từ CHM.CHMOS_DEVICE_INT_TBL trong đó devid ='sda1' và độ trễ từ 101 đến 500) thứ năm, (chọn count (*) dưới dạng num_count từ CHM.CHMOS_DEVICE_INT_TBL trong đó devid ='sda1' và độ trễ> 500) cuối cùng;<=10ms <=20ms <=50ms <=100ms <=500ms> 500ms ---------------- ---------- ---------- ---------- 150693 10 1 0 0 0
Có một lượng lớn thông tin trong lược đồ CHM. Tôi kỳ vọng chủ yếu rằng thông tin này chỉ mang tính giáo dục và hầu hết mọi người sẽ không truy vấn trực tiếp các bảng CHM. Nhưng đây là thông tin tốt cần biết và có thể giúp ích cho những người khác.