文章
企业管理
作者:Arup Nanda
了解如何使用各种可用的量度和报告测量数据库云服务器环境的效率和效力。
> 返回系列目录
(本指南用于培训;它无意替代 Oracle 提供的官方手册或其他文档。本指南中的信息未经 Oracle 验证,不受 Oracle 支持,您在使用时只能风险自负。)
要对 Oracle 数据库云服务器的可靠性和效率进行控制,需要测量一些运行情况量度。监视这些量度很可能是您最经常的活动,但即使这样,在系统出问题时您可能还是希望得到提示。在这最后一部分,您将了解如何检查这些量度(可以通过 CellCLI 接口,也可以通过 Oracle Enterprise Manager Grid Control),以及如何基于某些条件接收警报。
首先来看如何通过 CellCLI 获取量度。要检查当前量度,只需使用以下命令:
CellCLI> list metriccurrent
此命令将显示所有量度,这样很快就会变得无法阅读。您可能只希望关注某些特定量度。例如,要显示名为 GD_IO_RQ_W_SM 的特定量度,可将其用作修饰符。(如果您不知道此量度的含义,很快您就会了解。)
CellCLI> list metriccurrent gd_io_rq_w_sm
GD_IO_RQ_W_SM PRODATA_CD_00_cell01 2,665 IO requests
GD_IO_RQ_W_SM PRODATA_CD_01_cell01 5,710 IO requests
GD_IO_RQ_W_SM PRODATA_CD_02_cell01 2,454 IO requests
… output truncated …
该量度显示对不同单元磁盘的 I/O 请求数。尽管这对于快速浏览某个参数很有益,但对于对所有其他量度的通盘检查,就不是非常有用了。要获取较长的量度列表,请使用 detail 选项。
CellCLI> list metriccurrent gd_io_rq_w_sm detail
name: GD_IO_RQ_W_SM
alertState: normal
collectionTime: 2011-05-26T11:25:33-04:00
metricObjectName: PRODATA_CD_02_cell01
metricType: Cumulative
metricValue: 2,456 IO requests
objectType: GRIDDISK
name: GD_IO_RQ_W_SM
alertState: normal
collectionTime: 2011-05-26T11:25:33-04:00
metricObjectName: PRODATA_CD_03_cell01
metricType: Cumulative
metricValue: 2,982 IO requests
objectType: GRIDDISK
name: GD_IO_RQ_W_SM
alertState: normal
collectionTime: 2011-05-26T11:25:33-04:00
metricObjectName: PRODATA_CD_04_cell01
metricType: Cumulative
metricValue: 1,631 IO requests
objectType: GRIDDISK
… output truncated …
输出显示量度的名称、定义了该量度的对象(如 PRODATA_CD_02_cell01)、该对象的类型(如网格磁盘)、量度的收集时间以及当前值等等。
定义了量度的对象类型广泛。例如,以下是 I/O 数据包接收速率的量度,它是在 Cell 对象类型中定义的。
CellCLI> list metriccurrent n_nic_rcv_sec detail
name: N_NIC_RCV_SEC
alertState: normal
collectionTime: 2011-05-26T11:23:28-04:00
metricObjectName: cell01
metricType: Rate
metricValue: 3.7 packets/sec
objectType: CELL
当前量度显示哪些其他信息?要获知答案,请使用以下命令。
CellCLI> describe metriccurrent
name
alertState
collectionTime
metricObjectName
metricType
metricValue
objectType
注意名为 alertState 的属性,它对于您来说可能是最重要的。如果量度位于定义的安全范围内,则 alertState 被设置为 normal。您可以使用此命令显示已触发警报(即 alertState 为非零值)的感兴趣的属性:
CellCLI> list metriccurrent attributes name,metricObjectName,metricType,metricValue,objectType -
> where alertState != 'normal'
也可以选择有关其他类型对象的当前量度。例如,下面是一个检查有关互连的量度的示例。
CellCLI> list metriccurrent attributes name,metricObjectName,
metricType,metricValue,alertState -
> where objectType = 'HOST_INTERCONNECT'
N_MB_DROP proddb01.xxxx.xxxx Cumulative 0.0 MB normal
N_MB_DROP proddb02.xxxx.xxxx Cumulative 0.0 MB normal
N_MB_DROP proddb03.xxxx.xxxx Cumulative 0.0 MB normal
N_MB_DROP proddb04.xxxx.xxxx Cumulative 0.0 MB normal
… outout truncated …
和往常一样,请参照 describe 命令以了解属性的顺序,因为输出没有标题。还可以跳过命名属性,直接使用“ALL”,这将显示所有属性。我们来看一个单元的量度。由于是在 cell01 上运行该命令,因此仅显示该单元的量度:
CellCLI> list metriccurrent attributes all where objectType = 'CELL'
CL_BBU_CHARGE normal 2011-05-26T11:37:10-04:00 cell01 Instantaneous 93.0 % CELL
CL_BBU_TEMP normal 2011-05-26T11:37:10-04:00 cell01 Instantaneous 41.0 C CELL
CL_CPUT normal 2011-05-26T11:37:10-04:00 cell01 Instantaneous 2.4 % CELL
CL_FANS normal 2011-05-26T11:37:10-04:00 cell01 Instantaneous 12 CELL
CL_MEMUT normal 2011-05-26T11:37:10-04:00 cell01 Instantaneous 41 % CELL
CL_RUNQ normal 2011-05-26T11:37:10-04:00 cell01 Instantaneous 0.7 CELL
CL_TEMP normal 2011-05-26T11:37:10-04:00 cell01 Instantaneous 25.0 C CELL
IORM_MODE normal 2011-05-26T11:36:34-04:00 cell01 Instantaneous 0 CELL
N_NIC_NW normal 2011-05-26T11:37:28-04:00 cell01 Instantaneous 3 CELL
N_NIC_RCV_SEC normal 2011-05-26T11:37:28-04:00 cell01 Rate 3.2 packets/sec CELL
N_NIC_TRANS_SEC normal 2011-05-26T11:37:28-04:00 cell01 Rate 3.6 packets/sec CELL
下面详述这些量度的含义:
CL_BBU_CHARGE | 磁盘控制器上的电池电量 |
CL_BBU_TEMP | 磁盘控制器电池的温度 |
CL_CPUT | CPU 利用率 |
CL_FANS | 工作风扇的数量 |
CL_FSUT | 文件系统利用率百分比 |
CL-MEMUT | 内存使用百分比 |
CL_RUNQ | 运行队列 |
CL_TEMP | 单元温度 |
IORM_MODE | 使用 I/O 资源管理模式 |
N_NIC_NW | *未*工作互连数 |
N_NIC_RCV_SEC | I/O 数据包接收速率 |
N_NIC_TRANS_SEC | I/O 数据包传输速率 |
说到当前量度,它们的名称都是什么呢?您之前已经见过其中几个了:N_MB_DROP 等。要获取完整列表,请使用以下命令:
CellCLI> list metricdefinition
CD_IO_BY_R_LG
CD_IO_BY_R_LG_SEC
CD_IO_BY_R_SM
CD_IO_BY_R_SM_SEC
CD_IO_BY_W_LG
CD_IO_BY_W_LG_SEC
CD_IO_BY_W_SM
CD_IO_BY_W_SM_SEC
CD_IO_ERRS
CD_IO_ERRS_MIN
CD_IO_LOAD
CD_IO_RQ_R_LG
CD_IO_RQ_R_LG_SEC
CD_IO_RQ_R_SM
CD_IO_RQ_R_SM_SEC
CD_IO_RQ_W_LG
CD_IO_RQ_W_LG_SEC
CD_IO_RQ_W_SM
CD_IO_RQ_W_SM_SEC
CD_IO_ST_RQ
CD_IO_TM_R_LG
CD_IO_TM_R_LG_RQ
CD_IO_TM_R_SM
CD_IO_TM_R_SM_RQ
CD_IO_TM_W_LG
CD_IO_TM_W_LG_RQ
CD_IO_TM_W_SM
CD_IO_TM_W_SM_RQ
CG_FC_IO_BY_SEC
CG_FC_IO_RQ
CG_FC_IO_RQ_SEC
CG_FD_IO_BY_SEC
CG_FD_IO_LOAD
CG_FD_IO_RQ_LG
CG_FD_IO_RQ_LG_SEC
CG_FD_IO_RQ_SM
CG_FD_IO_RQ_SM_SEC
CG_IO_BY_SEC
CG_IO_LOAD
CG_IO_RQ_LG
CG_IO_RQ_LG_SEC
CG_IO_RQ_SM
CG_IO_RQ_SM_SEC
CG_IO_UTIL_LG
CG_IO_UTIL_SM
CG_IO_WT_LG
CG_IO_WT_LG_RQ
CG_IO_WT_SM
CG_IO_WT_SM_RQ
CL_BBU_CHARGE
CL_BBU_TEMP
CL_CPUT
CL_FANS
CL_FSUT
CL_MEMUT
CL_RUNQ
CL_TEMP
CT_FC_IO_BY_SEC
CT_FC_IO_RQ
CT_FC_IO_RQ_SEC
CT_FD_IO_BY_SEC
CT_FD_IO_LOAD
CT_FD_IO_RQ_LG
CT_FD_IO_RQ_LG_SEC
CT_FD_IO_RQ_SM
CT_FD_IO_RQ_SM_SEC
CT_IO_BY_SEC
CT_IO_LOAD
CT_IO_RQ_LG
CT_IO_RQ_LG_SEC
CT_IO_RQ_SM
CT_IO_RQ_SM_SEC
CT_IO_UTIL_LG
CT_IO_UTIL_SM
CT_IO_WT_LG
CT_IO_WT_LG_RQ
CT_IO_WT_SM
CT_IO_WT_SM_RQ
DB_FC_IO_BY_SEC
DB_FC_IO_RQ
DB_FC_IO_RQ_SEC
DB_FD_IO_BY_SEC
DB_FD_IO_LOAD
DB_FD_IO_RQ_LG
DB_FD_IO_RQ_LG_SEC
DB_FD_IO_RQ_SM
DB_FD_IO_RQ_SM_SEC
DB_IO_BY_SEC
DB_IO_LOAD
DB_IO_RQ_LG
DB_IO_RQ_LG_SEC
DB_IO_RQ_SM
DB_IO_RQ_SM_SEC
DB_IO_UTIL_LG
DB_IO_UTIL_SM
DB_IO_WT_LG
DB_IO_WT_LG_RQ
DB_IO_WT_SM
DB_IO_WT_SM_RQ
FC_BYKEEP_OVERWR
FC_BYKEEP_OVERWR_SEC
FC_BYKEEP_USED
FC_BY_USED
FC_IO_BYKEEP_R
FC_IO_BYKEEP_R_SEC
FC_IO_BYKEEP_W
FC_IO_BYKEEP_W_SEC
FC_IO_BY_R
FC_IO_BY_R_MISS
FC_IO_BY_R_MISS_SEC
FC_IO_BY_R_SEC
FC_IO_BY_R_SKIP
FC_IO_BY_R_SKIP_SEC
FC_IO_BY_W
FC_IO_BY_W_SEC
FC_IO_ERRS
FC_IO_RQKEEP_R
FC_IO_RQKEEP_R_MISS
FC_IO_RQKEEP_R_MISS_SEC
FC_IO_RQKEEP_R_SEC
FC_IO_RQKEEP_R_SKIP
FC_IO_RQKEEP_R_SKIP_SEC
FC_IO_RQKEEP_W
FC_IO_RQKEEP_W_SEC
FC_IO_RQ_R
FC_IO_RQ_R_MISS
FC_IO_RQ_R_MISS_SEC
FC_IO_RQ_R_SEC
FC_IO_RQ_R_SKIP
FC_IO_RQ_R_SKIP_SEC
FC_IO_RQ_W
FC_IO_RQ_W_SEC
GD_IO_BY_R_LG
GD_IO_BY_R_LG_SEC
GD_IO_BY_R_SM
GD_IO_BY_R_SM_SEC
GD_IO_BY_W_LG
GD_IO_BY_W_LG_SEC
GD_IO_BY_W_SM
GD_IO_BY_W_SM_SEC
GD_IO_ERRS
GD_IO_ERRS_MIN
GD_IO_RQ_R_LG
GD_IO_RQ_R_LG_SEC
GD_IO_RQ_R_SM
GD_IO_RQ_R_SM_SEC
GD_IO_RQ_W_LG
GD_IO_RQ_W_LG_SEC
GD_IO_RQ_W_SM
GD_IO_RQ_W_SM_SEC
IORM_MODE
N_MB_DROP
N_MB_DROP_SEC
N_MB_RDMA_DROP
N_MB_RDMA_DROP_SEC
N_MB_RECEIVED
N_MB_RECEIVED_SEC
N_MB_RESENT
N_MB_RESENT_SEC
N_MB_SENT
N_MB_SENT_SEC
N_NIC_NW
N_NIC_RCV_SEC
N_NIC_TRANS_SEC
N_RDMA_RETRY_TM
您可以在 metricType 中使用其中任何一种量度。
我想您的下一个问题是关于这些量度的说明。要了解每个量度的更多信息,请使用该量度的名称和 detail 修饰符执行以下命令:
CellCLI> list metricdefinition cl_cput detail
name: CL_CPUT
description: "Cell CPU Utilization is the percentage of time over the
previous minute that the system CPUs were not idle (from /proc/stat)."
metricType: Instantaneous
objectType: CELL
unit: %
对象类型
并非所有量度在所有对象上都可用。例如,温度是单元的量度,但不是磁盘的量度。注意以上输出中的 objectType 属性;它显示对象的类型。您可以了解特定对象类型的量度。
首先,查看所有可以选择的属性:
CellCLI> describe metricdefinition
name
description
metricType
objectType
persistencePolicy
unit
这将允许您使用 attributes all 关键字并让您了解输出的标题。
CellCLI> list metricdefinition attributes all where objecttype='CELL'
CL_BBU_CHARGE "Disk Controller Battery Charge" Instantaneous CELL %
CL_BBU_TEMP "Disk Controller Battery Temperature" Instantaneous CELL
CL_CPUT "Cell CPU Utilization is the percentage of time over the previous minute
that the system CPUs were not idle (from /proc/stat)." Instantaneous CELL %
CL_FANS "Number of working fans on the cell" Instantaneous CELL Number
CL_MEMUT "Percentage of total physical memory on the cell that is currently used" Instantaneous CELL %
CL_RUNQ "Average number (over the preceding minute) of processes in the Linux
run queue marked running or uninterruptible (from /proc/loadavg)." Instantaneous CELL Number
CL_TEMP "Temperature (Celsius) of the server, provided by the BMC" Instantaneous CELL C
IORM_MODE "I/O Resource Manager objective for the cell" Instantaneous CELL Number
N_NIC_NW "Number of non-working interconnects" Instantaneous CELL Number
N_NIC_RCV_SEC "Total number of IO packets received by interconnects per second" Rate CELL packets/sec
N_NIC_TRANS_SEC "Total number of IO packets transmitted by interconnects per second" Rate CELL packets/sec
使用此命令可以获取有关任何量度的说明。有些量度值为 0。我们来看看所有大于 0 的网格磁盘量度:
CellCLI> list metriccurrent attributes all where objectType = 'GRIDDISK' -
> and metricObjectName = 'PRODATA_CD_09_cell01' -
> and metricValue > 0
GD_IO_BY_R_LG normal 2011-05-26T11:38:34-04:00 PRODATA_CD_09_cell01 Cumulative 3.9MB GRIDDISK
GD_IO_BY_R_SM normal 2011-05-26T11:38:34-04:00 PRODATA_CD_09_cell01 Cumulative 29.3MB GRIDDISK
GD_IO_BY_W_LG normal 2011-05-26T11:38:34-04:00 PRODATA_CD_09_cell01 Cumulative 797MB GRIDDISK
GD_IO_BY_W_SM normal 2011-05-26T11:38:34-04:00 PRODATA_CD_09_cell01 Cumulative 73.3MB GRIDDISK
GD_IO_RQ_R_LG normal 2011-05-26T11:38:34-04:00 PRODATA_CD_09_cell01 Cumulative 4 IO requests GRIDDISK
GD_IO_RQ_R_SM normal 2011-05-26T11:38:34-04:00 PRODATA_CD_09_cell01 Cumulative 1,504 IO requests GRIDDISK
GD_IO_RQ_W_LG normal 2011-05-26T11:38:34-04:00 PRODATA_CD_09_cell01 Cumulative 3,230 IO requests GRIDDISK
GD_IO_RQ_W_SM normal 2011-05-26T11:38:34-04:00 PRODATA_CD_09_cell01 Cumulative 3,209 IO requests GRIDDISK
当前量度就像单元的脉搏 — 它们能指出单元在此时的运行状况和效力。
有时您可能对量度的历史记录感兴趣。例如,您可能希望了解量度值的变化趋势。使用以下命令:
CellCLI> list metrichistory
它会为您提供所有内容,实际上这样的输出可能并不实用。您可能只想查看特定对象的量度,因为量度可能与上下文高度相关。在以下示例中,您可以查看单元的所有量度值的历史记录。
CellCLI> list metrichistory where objectType = 'CELL'
IORM_MODE cell01 0 2011-05-26T12:59:39-04:00
CL_BBU_TEMP cell01 41.0 C 2011-05-26T13:00:10-04:00
CL_CPUT cell01 0.6 % 2011-05-26T13:00:10-04:00
CL_FANS cell01 12 2011-05-26T13:00:10-04:00
CL_MEMUT cell01 41 % 2011-05-26T13:00:10-04:00
不知道各列所代表的含义?只需执行命令 describe metrichistory 即可查看属性。
尽管输出显示了量度的历史记录,但分析起来有点困难。您可能希望查看单项统计信息,而不是一大串数据。下面的示例显示了单元温度的历史记录。
CellCLI> list metrichistory where objectType = 'CELL' -
> and name = 'CL_TEMP'
CL_TEMP cell01 25.0 C 2011-05-26T13:00:10-04:00
CL_TEMP cell01 25.0 C 2011-05-26T13:01:10-04:00
CL_TEMP cell01 25.0 C 2011-05-26T13:02:10-04:00
CL_TEMP cell01 25.0 C 2011-05-26T13:03:10-04:00
CL_TEMP cell01 25.0 C 2011-05-26T13:04:10-04:00
CL_TEMP cell01 25.0 C 2011-05-26T13:05:10-04:00
… output truncated …
有两个常常被遗忘的 CellCLI 特性,就是您可以使用 –x 选项调用,这样可以不显示标题;以及 –n 选项,这样可以不显示命令行。
# cellcli -x -n -e "list metrichistory where objectType = 'CELL' and name = 'CL_TEMP'"
CL_TEMP prodcel01 24.0 C 2011-05-27T02:00:47-04:00
CL_TEMP prodcel01 24.0 C 2011-05-27T02:01:47-04:00
CL_TEMP prodcel01 24.0 C 2011-05-27T02:02:47-04:00
… output truncated …
此输出可以直接进入电子表格程序以便绘制图表或进行其他类型的分析。
了解了量度之后,我们来看看如何使用量度在发生问题时给您发送警报。数据库云服务器附带了许多现成的预定义警报。要查看这些警报,请使用以下命令。要获取有关这些警报的更多信息,请使用 detail 修饰符。
CellCLI> list alertdefinition detail
name: ADRAlert
alertShortName: ADR
alertSource: "Automatic Diagnostic Repository"
alertType: Stateless
description: "Incident Alert"
metricName:
name: HardwareAlert
alertShortName: Hardware
alertSource: Hardware
alertType: Stateless
description: "Hardware Alert"
metricName:
name: StatefulAlert_CD_IO_ERRS_MIN
alertShortName: CD_IO_ERRS_MIN
alertSource: Metric
alertType: Stateful
description: "Threshold Alert"
metricName: CD_IO_ERRS_MIN
name: StatefulAlert_CG_FC_IO_BY_SEC
alertShortName: CG_FC_IO_BY_SEC
alertSource: Metric
alertType: Stateful
description: "Threshold Alert"
metricName: CG_FC_IO_BY_SEC
… output truncated …
这些警报基于前面说明过的量度。例如,警报 StatefulAlert_CG_FC_IO_BY_SEC 基于量度 CG_FC_IO_BY_SEC。只有很少几种警报是不基于量度的。下面是找到它们的方法:
CellCLI> list alertdefinition attributes all where alertSource!='Metric'
ADRAlert ADR "Automatic Diagnostic Repository" Stateless "Incident Alert"
HardwareAlert Hardware Hardware Stateless "Hardware Alert"
Stateful_HardwareAlert Hardware Hardware Stateful "Hardware Stateful Alert"
Stateful_SoftwareAlert Software Software Stateful "Software Stateful Alert"
接下来,我们要定义一个基于阈值的警报。下面演示了如何位名为 PRODB 的数据库上的量度 CD_IO_ERRS_MIN 定义一个阈值。您希望在值大于 10 的时候触发警报。
CellCLI> create threshold cd_io_errs_min.prodb comparison=">", critical=10
Threshold DB_IO_RQ_SM_SEC.PRODB successfully created
当警报触发时,单元会采取通知计划上的措施 — 将发送电子邮件和/或 SNMP 陷阱。下面是通过电子邮件收到警报的一个示例。它显示单元未能连接到 NTP 或 DNS 服务器。

您可以修改阈值:
CellCLI> alter threshold DB_IO_RQ_SM_SEC.PRODB comparison=">", critical=100
Threshold DB_IO_RQ_SM_SEC.PRODB successfully altered
并且在不需要时,可以删除阈值。
CellCLI> drop threshold DB_IO_RQ_SM_SEC.PRODB
Threshold DB_IO_RQ_SM_SEC.PRODDB successfully dropped
删除阈值时,警报(如果先前已生成)将被清除,并将生成新的警报通知该阈值已被清除。以下是含有该信息的示例电子邮件。

正如您在前面学习过的,可以通过以下几种方式管理数据库云服务器:使用命令行工具 CellCLI(或通过 DCLI 同时针对多个单元)、使用 SRVCTL 和 CRSCTL 以及通过普通传统 SQL 命令。但最轻松的办法,是使用 Oracle Enterprise Manager Grid Control。其图形化界面使得命令界面非常直观、易读。如果您已经具备 Grid Control 基础架构,很容易做决定,只需向该架构添加数据库云服务器。如果您尚未安装 Grid Control,现在也许该认真考虑安装了。
安装要通过 Grid Control 管理数据库云服务器,您需要:
我们来详细介绍每种方法。该插件是一个 jarfile,下载并保存在 OMS 服务器上。Grid Control 代理按照与普通数据库服务器相同的方式安装在数据库计算节点上。您可以从 Grid Control 控制台推入代理,也可以将代理软件下载到数据库计算节点并在其上安装。在安装过程中,系统将询问 OMS 服务器的地址和端口号,然后完成安装。
存储插件则与此不同。它不是存储单元上的代理;而是作为 OMS 服务器的一部分安装的。因此您需要将该插件(它是一个扩展名为 .jar 的文件)下载到您启动浏览器的计算机(通常是桌面)上,而不是下载到存储单元。之后,启动 Grid Control 浏览器并按照以下所示步骤操作。

好了;现在可以通过 Grid Control 监视存储服务器了。
完成配置后,数据库云服务器就会出现在 Grid Control 中。数据库计算节点显示为普通数据库服务器,集群显示为普通集群数据库;在这些屏幕上没有任何特定于数据库云服务器的内容。
您可能已经熟悉 Grid Control 上的普通 Oracle RAC 数据库管理特性,这同时也适用于数据库云服务器计算节点。在本文中,我们假设您已熟悉通过 Grid Control 进行数据库管理。
真正的好处在于作为 CellCLI 的替代方式来查看存储单元。要检查存储单元,请转至 Homepage > Targets > All Targets。在 Search 下拉框中,选择 Oracle Exadata Storage Server 并按下 Go。将出现搜索结果屏幕,如下图所示。注意名称已被擦除。

这是个全机架数据库云服务器,因此有 14 个单元,即前缀名为 _Cell01 至 _Cell14 的存储服务器。单击每个超链接单元名称将转至相应单元(也称“存储服务器”)的信息屏幕。单击 cell#2。这将显示单元详细信息,如以下屏幕所示。

此屏幕显示了以下三个基本但非常重要的量度:
此屏幕只提供这三个量度在最近大约 24 小时内的情况。注意,内存利用率保持不变,这种情况很典型。由于这是一个存储单元,唯一在此运行的软件是 Exadata Storage Server,而不是容易引起内存使用波动的数据库会话。温度一直相当稳定,只是在早上 6 点左右出现了一个小高峰。不过,CPU 的波动范围很大,这是因为单元分流(在第 1 部分中对此进行了详细介绍)所导致的对 ES 软件的需求。如果单击 CPU Utilization,您将看到一个专门显示 CPU 利用率的屏幕,如下所示。

该屏幕将以更细粒度的尺度显示有关 CPU 繁忙程度的更详细图形。通过从靠近右上角的下拉菜单 View Data 中进行选择,您可以选择量度的刷新频率。在此我选择了“Real Time:5 Minute Refresh”。这将实时获取数据,但只是每隔 5 分钟才刷新一次。这就是您会注意到该图形不平滑的原因。您还可以选择更长的间隔,如“last 7 days”,甚至“last 31 days”,但这样的信息不再是实时的。
您还可以从报告中选择同样的信息(本部分稍后将介绍)。单击 Temperature 和 Memory 图形将提供类似的数据。
由于单元包含硬盘驱动器,这是机械设备,会产生许多热量,如果温度过高,它就会出故障。因此单元包含风扇,强制排出热空气,以降低温度。每个单元中有 12 个风扇。它们都正常工作吗?为了实现冗余,每个单元中有两个电源。两个都正常工作吗?要知道这些问题的答案以及获取有关单元的其他信息,请单击超链接 View Configuration,将出现类似下面的屏幕。

此处所显示的信息类似于您在 CellCLI 中的 list cell 命令中所看到的内容。我们研究一下此屏幕中的某些感兴趣的信息,以及您想了解它们的原因:
这只是单元的摘要。单元的用途是为数据库云服务器提供存储平台。到目前为止,我们尚未看到有关单元中实际存储的任何信息。要了解单元中的存储的有关信息,请继续往下阅读。共有 5 部分:
注意,屏幕顶部有一组(5 个)超链接,分别指向相应的部分:

查看这些部分时,建议不要按其布局方式查看,而是按其创建的顺序进行查看。例如,单元包含物理磁盘,根据物理磁盘创建 LUN,根据 LUN 创建单元磁盘,根据单元磁盘又创建了网格磁盘。最后,在这些磁盘上使用 IORM(I/O 资源管理器)。我们以同样的逻辑顺序来看看这些部分。
要了解单元中可用的物理磁盘,应查看此部分。下面是部分屏幕截图。

如果此图看起来似曾相识,是因为这是 CellCLI 命令 LIST PHYSICALDISK DETAIL 或 LIST PHYSICALDISK ATTRIBUTES 的格式化输出。这里要注意的重要列是:
接下来,我们看看单元中的 LUN,请单击 Cell LUN Configuration 超链接。

同样,这也是 LIST LUN ATTRIBUTES 命令的图形表示。注意,这里还列出了闪存驱动器,就在靠近输出底部的位置。在 Cell Disk 中闪存驱动器以前缀 FD 命名,而不像在常规 SAS 硬盘中那样使用“CD”。LUN 是根据硬盘分区创建的,作为设备呈现给主机(存储单元)。在此显示了设备 ID,以及在 LUN 上创建的单元磁盘。您应注意的两列是“Status”和“Error Count”。
如果您只看到 10 个 LUN,请单击下拉框并选择“all 28”。
单元磁盘是从物理磁盘创建的。在 CellCLI 中,可以使用 LIST CELLDISK 命令获取单元磁盘的列表。在 Grid Control 中,单击超链接 Celldisk Configuration 将以图形方式显示单元磁盘的列表,如下图所示。与上一部分一样,单击下拉列表并选择“All 28”可在同一页上显示所有 28 个单元磁盘。同样,您应注意“Error Count”和“Status”列。

网格磁盘是从单元磁盘创建的,用于构建 ASM 磁盘组。显然,这些是 ASM 实例所知道的存储的实际构建块。通常单元磁盘和网格磁盘之间存在一对一的关系,但如果在您的情况中不是这样,您将在 ASM 磁盘组中看到较少的可用空间。单击 Griddisk Configuration 超链接将显示如下所示的屏幕:

在此屏幕中,需要查看的重要列为:
存储单元或存储服务器基本构建块的介绍就到这里。使用这些图形屏幕或 CellCLI 命令,您可以获取有关这些构建块的大部分信息。
现在我们继续介绍一些更复杂的数据需求:收集有关这些组件的性能和管理量度。例如,单元磁盘是否以最优方式运行,或者网格磁盘是否存在任何可能导致数据丢失的问题?
量度查看这些组件的量度的最佳方式是在 Grid Control 的专用 Metrics 页中浏览它们。注意靠近该页面底部的一组超链接,单击 All Metrics。将出现如下所示的屏幕。
记住,量度是在 OMS 服务器中收集和存储的,然后按需提供。由于量度存储在 OMS 服务器中,因此它们对数据库云服务器的性能影响很小或根本无影响。上面的屏幕显示这些量度的收集频率(15 分钟、1 分钟等)。某些量度是实时的(如闪存缓存统计信息);其他量度则没有任何计划(如错误消息和警报)。收集频率显示在“Collection Schedule”列中。
收集量度时,量度将被上载至 OMS 服务器的数据库。上面的屏幕还显示量度在收集之后多久被上载(“Upload Interval”列),以及上次上载发生的日期和时间(“Last Upload”)。
量度还可以用于触发警报。例如,如果单元分流效率降至特定阈值以下,可以触发警报。稍后我们将看看如何设置这些警报,但警报阈值在本屏幕中也有显示,就在“Threshold”列下。

该屏幕显示 Grid Control 收集的量度以及收集的频率。如果您愿意,可以通过单击 Expand All 查看所有子类别和特定量度名称。
我们这里只关注一个类别 — Category Statistics。单击该类别前面的“+”以显示各种量度;您将看到类似以下的屏幕:

单击“Details”列中的眼镜图标。

与您在前面看到的所有其他屏幕一样,可以通过从下拉菜单“View Data”中选择适当的值来选择不同的刷新频率。或者,您可以通过选择 Last 24 hours 或 Last 7 days 等来选择历史记录。
报告类似于报告量度的屏幕,但有些重要区别。有些报告可能更适合查看特定量度,但报告最重要的用途是直观比较多个组件的量度。
在 Enterprise Manager 主页中,从顶部的选项卡功能区中选择 Reports 选项卡。单击 Report 选项卡并向下滚动几页到达名为“Storage”的报告集合,如下所示:

本部分显示您先前可能已见到的所有量度,但有一点主要区别:报告组织成独立实体,可报告任何组件的数据 — 而不是受组件自身的详细信息屏幕所驱动。例如,单击超链接 Celldisk Performance。将显示一个屏幕,要求您选择感兴趣的单元磁盘,而不是首先选择单元磁盘屏幕,然后转至该单元磁盘的性能量度。您可以通过单击手电筒图标(值列表)从列表中选择一个单元磁盘,然后将显示一个屏幕,如下所示。

如果单击超链接单元磁盘 Cell Disk 之一,您将看到该单元磁盘的数据。


正如您在本系列第 2 部分中所了解的那样,网格磁盘是从单元磁盘构建的,然后用于 ASM 磁盘组。因此,网格磁盘的性能直接影响 ASM 磁盘组的性能,进而影响数据库性能。所以记录网格磁盘性能并对其进行检查以发现数据库中是否存在任何问题,是非常重要的。从前面显示的报告菜单中,转至 Storage > CELL > Grid Disk Performance。系统将请您从列表中挑选一个单元。选择 Cell 02 将显示一个类似如下的屏幕。

要检查的另一重要量度是主机互连性能:

有时,您想知道一个组件(如单元磁盘)与其他单元磁盘相比性能如何。比较是 Grid Control 中的一个非常巧妙的特性。首先进到您感兴趣的量度的页面:

单击 Related Links 正下方的超链接 Compare Objects Celldisk Name/Cell Name/Realm Name。

然后单击 OK 按钮。比较结果将显示在一个类似如下所示的屏幕上:

比较结果显示单元磁盘 CD_00_cell01 的写入吞吐量高于另两个单元磁盘。
领域 是包含在某个逻辑边界内的一组组件。领域用于将系统分隔成不同用途的系统,例如您可以为每个数据库 A、数据库 B 等各创建一个领域。默认情况下,有一个领域。由于所有单元均属于该领域,所以领域的量度针对所有单元,而不只限于当前单元。
让我们来看一个示例。如果您调出 LUN Configuration 报告,将看到以下内容:
它显示 28 条记录,因为此单元中有 28 个 LUN。此报告的范围是当前单元,不包括其他单元。当您调出 Realm LUN Configuration 时,将显示所有单元的 LUN,如下所示。
注意这两个报告的区别:后者显示 392 行而不是 28 行。所有单元的 LUN 都显示在这里。

为报告选择领域可以使您立即了解特定领域的情况。如果只有一个领域,则所有单元都将聚集到该报告中。请看一个非常重要的报告 — Realm Performance,如下所示。

它显示该领域内所有单元的量度。这是一种快速比较各种单元以查看它们的负载是否平衡的最佳方法。
按同样的思路,您可能希望比较单元组件的性能,而不仅仅是单元的性能。从 View Report 下拉菜单中选择 Realm Celldisk Performance 将显示所有单元中的单元磁盘的性能,而不仅仅是该单元的性能。

然而,报告中的大量数据(392 行)使得报告并不是那么好用。更好的选择是比较所有单元的 1 号单元磁盘。为此您可以在 Celldisk 域中使用筛选器。

这将显示所有单元的第一个单元磁盘的性能。从上面的输出中,可以清楚地看到,Cell 05 在执行某种操作而其他单元实际上处于空闲状态。由于您不是在单元级操作,因此可以假定数据分布可能并不均匀。Cell 05 可能拥有大多数存储块。
在本部分中,您学习了如何使用以下两种不同界面从存储单元检查量度:命令行工具 CellCLI 和 Enterprise Manager Grid Control。这两种方法各有自己的优势。虽然不可否认 Grid Control 具有视觉优势,但命令行工具在开发脚本和可重复过程时可能很有用。数据库云服务器附带了许多预定义警报,可以通过阈值对这些警报进行配置,以确保当量度值超出预先指定的边界条件时触发这些警报。
本系列文章到此结束。希望您通过本系列文章掌握到足够的技巧,从而轻松、快速地由 DBA 转变成 DMA!
> 返回系列目录