chapter10:监控和调整数据库

第 10 章:监控和调整数据库

目的

本章向您介绍通过企业管理器执行的一些监控和调整操作。

主题

本章讨论了以下内容:

主动监控数据库
诊断和解决性能问题
使用 SQL Tuning Advisor
使用 SQL Access Advisor
使用 Memory Advisor

查看屏幕截图

** 将鼠标移到这个图标上,显示所有的屏幕截图。 您还可以将鼠标移到各个图标上,以只查看与该图标相关的屏幕截图。 **

主动监控数据库

返回主题列表

警报帮助您主动地监控数据库。 大多数警报是在超过特定的量度阈值时发出的通告。 您可以为每一个警报设置临界和警告阈值。 这些阈值即为边界值,如果超过了这些边界值,则指示系统处于非预期的状态。

在这一部分中,您将执行以下任务:

创建具有指定阈值的表空间和表
触发表空间的空间使用率警报
设置量度阈值
设置通告

创建具有指定阈值的表空间和表

返回主题列表

首先创建包含有一个 20 MB 的数据文件的一个新的表空间。 将本地管理这个表空间,并使用自动段空间管理 (ASSM)。 然后您在这个新的表空间中创建一个新的表。 这个表将把 Enable Row Movement 选项设为 yes,以允许表中的空间回收。 执行以下操作:

** 1. ** |

单击数据库主页上的 Administration 链接。

将鼠标移到这个图标上来查看图像

---|---
** 2. ** |

单击 Tablespaces 链接。

将鼠标移到这个图标上来查看图像

** 3. ** |

单击 Create 按钮。

将鼠标移到这个图标上来查看图像

** 4. ** |

输入 ** TBSALERT ** 作为表空间名称,然后单击 Add ,为表空间定义一个数据文件。

将鼠标移到这个图标上来查看图像

** 5. ** |

输入 ** tbsalert.dbf ** 作为数据文件名,并输入 ** 20 MB ** 作为文件大小。 单击 Continue

![将鼠标移到这个图标上来查看图像](http://otn.oracle.com/obe/2day_dba/monitoring/images/tbscr05.gif)  

** 6. ** |

单击 Thresholds ,指定空间使用率警告和临界阈值水平。

将鼠标移到这个图标上来查看图像

** 7. ** |

单击 Specify Thresholds, by percent used 。 设置数据库范围的默认空间使用率阈值。 为 Warning% 输入 60 ,为 Critical% 输入 68 。单击 OK

将鼠标移到这个图标上来查看图像

** 8. ** |

单击 Database 导览栏,返回 Administration 属性页面。

将鼠标移到这个图标上来查看图像

** 9. ** |

单击 Tables 链接。

将鼠标移到这个图标上来查看图像

** 10. ** |

单击 Create

将鼠标移到这个图标上来查看图像

** 11. ** |

单击 Continue

将鼠标移到这个图标上来查看图像

** 12. ** |

在 Name 域中输入 employees1 。 指定 SYSTEM 作为模式, TBSALERT 作为表空间。 单击 Define Using 下拉列表,选择 SQL 。 在 Create Table As 域中输入 ** select * from hr.employees ** ,然后单击 Options

将鼠标移到这个图标上来查看图像

** 13. ** |

为 Enable Row Movement 选择 Yes ,然后单击 OK ,完成表的创建。

将鼠标移到这个图标上来查看图像

** 14. ** |

表已创建完成。 单击 Database 导览栏。

将鼠标移到这个图标上来查看图像

触发表空间空间使用率警报

返回主题列表

您现在将更新表,触发空间利用率警报。 执行以下操作:

** 1. ** |

打开 SQL*Plus 会话,然后执行以下命令:

**sqlplus system/oracle**   

---|---
** 2. ** |

将以下 SQL 命令拷贝并粘贴到 SQL*Plus 会话中, ** ** 以模拟 EMPLOYEES1 表上的用户活动:

**begin for i in 1..1000 loop insert into employees1 select * from hr.employees; commit; end loop; end; / **

将鼠标移到这个图标上来查看图像

** 3. ** |

转至 Enterprise Manager 窗口。 单击 Database 导览栏,返回到 Administration 页面,然后单击 Tablespaces 链接。

将鼠标移到这个图标上来查看图像

** 4. ** |

注意, ** TBSALERT ** 表空间使用百分率增加了。

将鼠标移到这个图标上来查看图像

** 5. ** |

回切到 SQL*Plus 窗口,并将以下命令拷贝并粘贴到 SQL*Plus 会话中, ** ** ,以模拟 EMPLOYEES1 表上的更多用户活动:

**delete employees1 where department_id = 50;**


**begin for i in 1..500 loop insert into employees1 select * from hr.employees; commit; end loop; end; /**  

将鼠标移到这个图标上来查看图像

** 6. ** |

转至 Enterprise Manager 窗口。 刷新浏览器(对于 Linux Mozilla,从菜单栏中选择 View ,然后选择 Reload )。 注意, TBSALERT 表空间的空间使用百分率增加了。

将鼠标移到这个图标上来查看图像

** 7. ** |

回切到 SQL*Plus 窗口,并将以下命令拷贝并粘贴到 SQL*Plus 会话中, ** ** ,以模拟 EMPLOYEES1 表上的更多用户活动:

**begin for i in 1..500 loop insert into employees1 select * from hr.employees; commit; end loop; end; /**

将鼠标移到这个图标上来查看图像

** 8. ** |

将以下 SQL 命令拷贝并粘贴到 SQL*Plus 会话中, ** ** 以模拟 EMPLOYEES1 表上的用户活动:

**delete employees1 where department_id = 30; commit;**


**delete employees1 where department_id = 100; commit;**


**delete employees1 where department_id = 50; commit;**


**delete employees1 where department_id = 80; commit; exit**

将鼠标移到这个图标上来查看图像

** 9. ** |

转至 Enterprise Manager 窗口。 刷新浏览器(对于 Linux Mozilla,从菜单栏中选择 View ,然后选择 Reload )。 注意, TBSALERT 表空间的空间使用率现在已经超过了临界阈值水平 (68%)。

将鼠标移到这个图标上来查看图像

** 10. ** |

在您等待空间使用率警报显示在 Enterprise Manager 主页上时,请仔细查看表段统计数据。 单击 Database 导览栏,然后单击 Tables 链接。

将鼠标移到这个图标上来查看图像

** 11. ** |

要查找 SYSTEM.EMPLOYEES1 表,请在 Schema 域中输入 ** system ** ,在 Object Name 域中输入 ** emp ** 。 单击 Go

将鼠标移到这个图标上

** 12. ** |

单击 ** EMPLOYEES1 ** 链接。

将鼠标移到这个图标上来查看图像

** 13. ** |

单击 Segments

将鼠标移到这个图标上来查看图像

** 14. ** |

注意 EMPLOYEES1 **** 表中浪费空间的百分率。 您可能能够通过回收表中未使用的空间来解决表空间空间使用率警报。

在同一页面上,您可以为 Space Usage Trend 指定一个日期范围,然后单击 Refresh 按钮,以规划 EMPLOYEES1 表未来的空间使用率。 因为在 EMPLOYEES1 表上没有足够的活动历史纪录,所以您在空间使用率分析图中将看不到非常有意义的数据。 单击 Database 导览栏,然后单击 Home 页面标签。

将鼠标移到这个图标上来查看图像

** 15. ** |

单击 Refresh 按钮几次,直到您看到一个红色的 x 和数字 1 紧邻着 Problem Tablespaces 出现。 向下滚动至 Alerts 表。

将鼠标移到这个图标上来查看图像

** 16. ** |

您将看到一个 Tablespaces Full 警报。 单击 Tablespace [TBSALERT] is [70 percent] full 链接。

将鼠标移到这个图标上来查看图像

设置量度阈值

返回主题列表

Oracle 提供了一组预先定义的量度,其中一些量度一开始就拥有为它们定义的阈值。 您将预先为 TBSALERT 表空间的表空间使用率定义一个量度。 要查看所有的量度,请执行以下操作:

** 1. ** |

单击 Related Links 区域中的 Manage Metrics

将鼠标移到这个图标上来查看图像

---|---
** 2. ** |

单击 Edit Thresholds

将鼠标移到这个图标上来查看图像

** 3. ** |

向下滚动至 Tablespace Space Used (%) ,然后选择这个量度。 向上滚回到窗口顶部。

将鼠标移到这个图标上来查看图像

** 4. ** |

单击 Specify Multiple Thresholds

将鼠标移到这个图标上来查看图像

** 5. ** |

对于 TBSALERT 表空间,将警告阈值修改为 70 ,将临界阈值修改为 80。 然后单击 OK

将鼠标移到这个图标上来查看图像

** 6. ** |

修改完成。 单击 OK ,将数据保存到数据库中。

将鼠标移到这个图标上来查看图像

** 7. ** |

更新成功。 单击路径式导航栏中的 Database 导航项。

将鼠标移到这个图标上来查看图像

设置通告

返回主题列表

当出现需要您干预的事件时,您可以选择性地提供通告。 默认地,临界状态的警报(如 Database Down、Generic Alert Log Error Stats 和 Tablespace Used)都设置为提供通告。 执行以下操作:

** 1. ** |

单击 Database 主页顶部的 Setup

将鼠标移到这个图标上来查看图像

---|---
** 2. ** |

单击 Notification Methods

将鼠标移到这个图标上来查看图像

** 3. ** |

在 Outgoing Mailserver 域中输入 ** <您的邮件服务器> ** ,在 Identify Sender As 域中输入 dbaalert ,在 Sender's Email 域中输入 [email protected] ,然后单击 Apply。

将鼠标移到这个图标上来查看图像

** 4. ** |

更新成功。 单击页面顶部的 Preferences

将鼠标移到这个图标上来查看图像

** 5. ** |

单击 General 选项中 E-mail Addresses 的 Add Another Row

将鼠标移到这个图标上来查看图像

** 6. ** |

输入 [email protected] 作为电子邮件地址,单击 Apply 。 然后单击 Database

将鼠标移到这个图标上来查看图像

诊断和解决性能问题

返回主题列表

在出现数据库性能问题时,需要您进行诊断和纠正。 有时用户抱怨性能缓慢会使您注意到问题。 其余的时候,您可能注意到主页上的 Host CPU 图中的性能尖峰。

在所有情况下,自动数据库诊断监控器 (ADDM) 都将标记这些问题,它默认每 60 分钟执行一次自上而下的系统分析,并在 Oracle Enterprise Manager 主页上报告它发现的问题。 ADDM 每 60 分钟自动运行一次,和自动工作负载信息库 (AWR) 采集的快照同步发生。 它的输出包含了它确认的每个问题的说明和建议操作。

生成性能问题查找结果
利用 ADDM 解决发现的性能问题

生成性能问题查找结果

返回主题列表

为了演示 ADDM 如何工作,您要生成一个性能问题查找结果。 在本文中,您将创建一个等待行锁的会话。 要执行某些如更新和删除的操作,会话必须锁住该行。 执行以下步骤,生成性能问题查找结果:

** 1. ** |

打开终端窗口, **** 执行以下命令:

**sqlplus hr/hr** **create table emp as select * from employees; delete emp; **

**** 将鼠标移到这个图标上来查看图像

---|---
** 2. ** |

再打开一个终端窗口,并执行以下命令,创建一个行锁冲突:

**sqlplus hr/hr** **delete emp;**

将鼠标移到这个图标上来查看图像

** 3. ** |

单击 Enterprise Manager 窗口中的 Performance

将鼠标移到这个图标上来查看图像

** 4. ** |

您将看到会话等待值非常高。 等待大约 10 分钟,然后向下滚动至窗口底部。

将鼠标移到这个图标上来查看图像

** 5. ** |

您现在将创建快照来捕获性能问题。 单击 Snapshots

将鼠标移到这个图标上来查看图像

** 6. ** |

单击 Create ,创建快照。

将鼠标移到这个图标上来查看图像

** 7. ** |

单击 Yes ,创建人工快照。

将鼠标移到这个图标上来查看图像

** 8. ** |

正在创建快照。

将鼠标移到这个图标上来查看图像

** 9. ** |

一旦快照创建完成,请单击路径式导航栏中的 database 导航项,然后单击 home

将鼠标移到这个图标上来查看图像

** 10. ** |

现在通过主页的 Alert 部分的一个警报,检测到了一个性能问题。

将鼠标移到这个图标上来查看图像

利用 ADDM 解决发现的性能问题

返回主题列表

当遇到性能问题时,您可以使用 ADDM 来解决它。 执行以下操作:

** 1. ** |

单击警报 Database Time Spent Waiting

**** 将鼠标移到这个图标上来查看图像

---|---
** 2. ** |

注意建议的操作是运行 ADDM 来获取更多的关于系统的性能分析。 单击 Additional Advice

将鼠标移到这个图标上来查看图像

** 3. ** |

确保从列表中选择了您创建的快照。 注意 SQL statements were found waiting for row lock waits 将影响系统超过 86% 的数据库时间。 单击列表中的这个性能问题查找结果。

将鼠标移到这个图标上来查看图像

** 4. ** |

您看到了解决该性能问题需要采取的操作。 单击 View Rationale

将鼠标移到这个图标上来查看图像

** 5. ** |

您将看到引起问题的特定 SQL ID。 单击 Close

将鼠标移到这个图标上来查看图像

** 6. ** |

要解决性能问题,请单击路径式导航栏中的 Database 导航项。

将鼠标移到这个图标上来查看图像

** 7. ** |

单击 Performance

将鼠标移到这个图标上来查看图像

** 8. ** |

向下滚动,然后选择 Additional Monitoring Links 下的 Blocking Sessions

将鼠标移到这个图标上来查看图像

** 9. ** |

确保选择了最高级别的 HR,然后单击 Kill Session。

将鼠标移到这个图标上来查看图像

** 10. ** |

单击 Yes ,终止会话。

将鼠标移到这个图标上来查看图像

** 11. ** |

会话终止。 单击路径式导航栏中的 Database 导航项,然后单击 Home

将鼠标移到这个图标上来查看图像

** 12. ** |

注意警报已消失。

将鼠标移到这个图标上来查看图像

使用 SQL Tuning Advisor

返回主题列表

数据库管理员或操作员执行以下任务来响应性地监控并诊断数据库性能问题:

查看数据库等待
检查 Database Wait 类的 TOP SQL
利用 SQL 调整顾问工具调整 SQL 语句
查看 SQL 语句的 SQL 执行细节

查看数据库等待

返回列表

您将首先启动几个工作负载会话。 然后您将查看数据库工作负载。 创建一个名称为 ** $HOME/wkdir ** 的目录。 下载 perflab.tar 文件,并将文件解压缩至 ** $HOME/wkdir ** 目录中。 执行以下步骤:

** 1. ** |

打开一个命令行窗口,然后运行以下 OS 脚本:

**./** **setup_perflab.sh**

注意: 这个脚本运行将花费大约 4 分钟。

---|---
** 2. ** |

回切到 Enterprise Manager 窗口。 选择 Administration 链接。

<img alt="将鼠标移到这个图标上来查看图像" src="http://otn.oracle.com/obe/2day_dba/monitoring/images/tuning

Published At
Categories with 数据库类
comments powered by Disqus