首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >[AWR报告]SQL*Net message to dblink等待事件

[AWR报告]SQL*Net message to dblink等待事件

作者头像
bsbforever
发布于 2020-08-19 14:32:42
发布于 2020-08-19 14:32:42
1.3K0
举报

从今天开始讲解awr报告Top 5 Timed Events部分

今天讲SQL*Net message to dblink 等待事件


SQL*Net message to dblink

图实在没找到~

这个等待事件发生在会话在等待一个远程数据库一个确认信息,确认其发送的数据远程数据库是否收到,该数据通过dblink发送

一般是由于目标服务器无法及时接受信息

Oracle将该等待事件列为Network类


如何实时的等待

通过如下语句查询实时的等待事件

select * from v$session_wait where event=’SQL*Net message to dblink’

P1代表driver id P2代表通过dblink传输的字节数

这里我查了我这边所有的数据库都没抓到~


如何非实时的等待

select * from v$session_event where event like '%SQL*Net message to dblink%' order by time_waited desc

注意这里的信息是从实例起来的汇总,同时由于SID是可以复用的,所以查看出来的SID并不代表上次的语句是这个等待


如何发生的

当我们的SQL语句通过dblink访问远程数据库时,需要先将远程数据传输到本地再进行处理,这时远端数据库会发送数据至本地,此时远端数据库如不能及时接受消息,会话处于SQL*Net message to dblink等待。 该等待主要发生在如下几种情形

  1. 数据库中有大量的物化视图需要定时同步远程数据库至本地
  2. 数据库中有大量SQL语句需要通过dblink从远程获取数据

如何调优

  1. 针对物化视图我们首先需要减少不必要的物化视图数量,同时采用增量更新的方式,对于DML操作频繁的主表我们需要提高刷新频率
  2. 针对SQL语句中有大量dblink的语句我们需要尽量减少dblink的访问
  3. 如果不能减少可以通过在源库建立view的方式使其在源库执行
  4. 也可以使用DRIVING_SITE hint的方式,手动指定oracle让其在源库执行。

下期预告

SQL*Net message from client

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档