当前位置: 首页 > news >正文

chapter10:监控和调整数据库

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

目的

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

主题

本章讨论了以下内容:

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

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

主动监控数据库

返回主题列表

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

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

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

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

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

1.

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

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

2.

单击 Tablespaces 链接。

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

3.

单击 Create 按钮。

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

4.

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

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

5.

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

 
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 会话,然后执行以下命令:

 
2.

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

 

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

3.

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

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

4.

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

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

5.

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

 

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

6.

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

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

7.

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

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

8.

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

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

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 域中输入 notify01@oracle.com,然后单击 Apply。

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

4.

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

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

5.

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

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

6.

输入 notify01@oracle.com 作为电子邮件地址,单击 Apply。 然后单击 Database

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

返回主题列表

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

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

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

生成性能问题查找结果

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

1.

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

  

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

2.

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

 

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

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.

注意警报已消失。

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

返回主题列表

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

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

查看数据库等待

返回列表

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

1.

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

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

2.

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

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

3.

在标题为 Workload 的部分中,单击 Automatic Workload Repository 链接。

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

4.

确定已经为该数据库采集了多少快照。 查看 Snapshots 下的数量和最后一次 ADDM 快照采集的时间。 应该有至少三个快照。 单击路径式导航栏中的 Database 导航项。

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

5.

单击 Performance 链接。

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

6.

在 Performance 窗口中查看 Sessions: Waiting and Working 图。 显示一个表示数据库当前工作负载的图表。 (向图表填充数据可能要花一分钟)用 ADDM 快照采集的数据来填充这个图表。 图表的边上是图例。 每一个图例项目具有不同的颜色。 您可以从图中快速确定占用最多时间的项目是黄色的,即用户 I/O。单击 User I/O 链接。

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

7.

在 Active Sessions Waiting: User I/O 图表下有两个饼图。 查看左边的饼图 Top Waiting SQL。 这显示占绝大多数的等待 (53%) 是由一条 SQL 语句造成的。 查看右边的饼图 Top Waiting Sessions。 这个饼图显示当前最活跃的几个会话等待的时间几乎占相同的百分比。

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

检查 Database Wait 类的 TOP SQL

返回列表

如之前的任务所示,有一条 SQL 语句导致了大部分的数据库等待。 在这个任务中,您将深入了解根本原因。 执行以下操作:

1.

从 Active Sessions Waiting: User I/O 页面中,单击页面中部的 Top SQL

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

2.

在出现的详细页面上,查看 Wait Events for Top SQL 表,该表按 活动(%) 排序。 您可以看到 Top SQL 语句将其大部分时间花费在了 'db file scattered read' 活动上。 单击具有最高活动百分比的 SQL 语句的 SQL ID。

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

3.

显示这条 SQL 语句的执行计划。 单击 Current Statistics 标签。

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

4.

显示这条 SQL 语句的统计数据。 单击 Execution History 标签。

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

5.

显示这条 SQL 语句的统计分析图表。 CPU 和 Elapsed Time 图表显示在一段时间上执行这条 SQL 语句的 CPU 使用率。 选择 Seconds Per Execution,单击 Go,显示这条 SQL 语句的每次执行使用的时间和资源。

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

6.

从显示的图表中,可以确定 CPU 资源使用率在增加,执行这条 SQL 语句花费的时间也在增加。 单击 Tuning History 标签。

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

7.

显示之前为这条 SQL 语句提供的调整建议。 当前没有建议。 您现在准备好了使用 SQL Tuning Advisor 来调整 SQL 语句。

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

利用 SQL 调整顾问工具调整 SQL 语句

返回列表

正如在上一个关于响应式调整的部分中确定的那样,目标 SQL 语句需要调整。 SQL 调整顾问工具将为您调整执行计划。 执行以下操作:

1.

单击 Run SQL Tuning Advisor

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

2.

在 Schedule Advisor 窗口中,确保选择了 Scope 下的 Comprehensive,作业将立即安排。单击 OK

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

3.

SQL Tuning Advisor 将创建一个任务,以分析 SQL 语句,任务一旦完成,将显示一组调整建议。

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

4.

单击 View Recommendations

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

5.

单击 New Explain Plan 按钮,查看建议的修改。

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

6.

正如您所看到的,新的解释计划删除了全部的表扫描。 单击浏览器后退按钮,返回上一页。

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

7.

单击 Implement 按钮,执行调整建议。

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

8.

出现一条确认页面,指示 SQL Profile 成功创建。 单击路径式导航栏中的 Database 导航项。

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

查看 SQL 语句的 SQL 执行细节

返回列表

您已执行了调整建议,现在查看 SQL 语句和其执行细节。 执行以下步骤。

1.

执行 Performance

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

2.

向下滚动至 Sessions: Waiting and Working 图表。 等待一分钟,观察用户 I/O 如何减少。

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

返回主题列表

SQL Access Advisor 提供了许多过程,可以调用这些过程来帮助确定创建和丢弃哪些实体化化视图和索引。 它利用基于您的模式的,假定的工作负载,或从实际的工作负载(可能由用户提供、来自 Oracle Trace 或来自 SQL 高速缓存的内容)中作出决策。

还可以根据不同的标准对工作负载进行过滤,如只使用包含这些表的查询,或在这个范围中有优先权的查询。

bullet.gif准备环境
bullet.gif利用 SQL 高速缓存获取建议
bullet.gif查看和执行建议

准备环境

返回列表

执行以下步骤,为使用 SQL Access Advisor 准备好环境。 当 Advisor 在运行时,实体化视图和索引可能存在,但为了举例的目的,把它们删除了,以便您可以看到 Advisor 的建议。 您还需要设置高速缓存,以便 SQL Access Advisor 能够生成建议。 执行以下操作:

1.

打开一个终端窗口,然后执行以下命令,清理环境:

 

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

2.

现在您需要创建高速缓存。执行下列命令:


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

返回列表

您将使用您刚刚设置的 SQL 高速缓存来获取来自 SQL Access Advisor 的建议。 执行以下操作:

1.

打开浏览器,输入以下 URL:

 

输入 sys/<password></password> 作为 SYSDBA,单击 Login

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

2.

向下滚动至主页底部,然后单击 Related Links 下的 Advisor Central

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

3.

单击 SQL Access Advisor 链接。

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

4.

确保选中了 Current and Recent SQL Activity,然后单击 Show Advanced Options

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

5.

向下滚动。 在 Filter Options 下,选择 Filter workload based on these options。 选择 Only the top resource consuming SQL statements Only SQL statements executed by the following users。 然后在 Users 域中输入 SH,然后单击 Next

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

6.

选择 Both Indexes and Materialized Views,然后单击 Next

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

7.

输入任务名 OBE<today date></today>,为 Schedule Type 选择 Standard,然后单击 Next

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

8.

在概要窗口中,单击 Submit

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

返回列表

现在您可以查看结果,如果您希望,可以执行它们。 执行以下操作:

相关文章:

  • Docker在win打包go项目
  • go微服务项目mvc加注册服务
  • 会员登陆的检测代码
  • win7下面consul安装
  • uniapp中使用oss
  • 回到学校--继续奋斗
  • uniapp多input提交
  • 游戏
  • flutter的provider4.0使用
  • 关于给CSDNBLOG添加计数器
  • 制作自定义CSDNBLOG皮肤
  • 仿知乎ui实现bottomNavigationBar
  • 高效CSDNBLOG技巧终结篇
  • 给BLOG加一个控制菜单展开和收缩的按扭
  • 在自己Blog的导航菜单加动态摄影作品展
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • Android Studio:GIT提交项目到远程仓库
  • CSS实用技巧干货
  • egg(89)--egg之redis的发布和订阅
  • ES6之路之模块详解
  • Median of Two Sorted Arrays
  • node 版本过低
  • Python_OOP
  • 阿里研究院入选中国企业智库系统影响力榜
  • 包装类对象
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 删除表内多余的重复数据
  • 思考 CSS 架构
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • (1)(1.13) SiK无线电高级配置(六)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (Note)C++中的继承方式
  • (zhuan) 一些RL的文献(及笔记)
  • (待修改)PyG安装步骤
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)计算机毕业设计大学生兼职系统
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (论文阅读30/100)Convolutional Pose Machines
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .htaccess 强制https 单独排除某个目录
  • .NET 4.0中的泛型协变和反变
  • .NET Project Open Day(2011.11.13)
  • .NET和.COM和.CN域名区别
  • @31省区市高考时间表来了,祝考试成功