今天我终于自己遇到了这个问题, PO form 打不开了, 看了下 trace 发现 SQL*Net message from client 等待时间太长. 但是这不可能是网络问题, 这个环境是在我电脑的虚拟机里面跑的, 网速很快, 而且其他 Form 都能正常很快打开. 真是崩溃; 我试了一下 Receipts form, 然后在 $PO_TOP/forms/US 下面把 RCVRCERC.fmx 文件删掉, 再打开 Receipts form 的时候报错, 说找不到文件; 然后我把 POXPOEPO.fmx 删掉, 打开 PO form 的时候报同样的问题, 说 form 找不到. 于是我 arcs out 了对应版本的 POXPOEPO.fmb 文件, 重新编译到 $PO_TOP/forms/US 目录下面, 再打开 PO form 就OK 了; 所以这个问题看似是网络问题, 实际上不是. 如果是某个 form 打不开, 重新编译就可以了, 因为从界面上是去对应目录下找对应的 fmx 文件的, 路径都正确. 如果打不开, 明显就是 fmx 本身的问题了.

数据库的性能问题, 有时是因为SQL 性能不好, 但有时候所有的SQL 都很快, 却浪费了很多时间在网络等待上面. 比如, 请求一个页面花了5 分钟. 这个问题可以在SQL trace 里面看出来. 收集10046 事件的trace 文件, 转换成tkprof 格式, 在文件的最后一段有总结:

  1. Elapsed times include waiting on following events:
  2. Event waited on                             Times   Max. Wait  Total Waited
  3. ----------------------------------------   Waited  ----------  ------------
  4. SQL*Net message to client                     727        0.00          0.00
  5. SQL*Net message from client                   727      120.00        515.87

可以看出来在 SQL*Net message from client 等待了很久时间.

这个问题看起来似乎是网络问题, 但可以通过配置数据库解决. 解决方法:

1. 增加 SDU size, 这个要改配置文件, 在 TNSNAMES.ora 文件中一个参数

  1. TEST =
  2. (DESCRIPTION =
  3. (SDU=8192)
  4. (TDU=8192) <- 8.0 TDU position
  5. (ADDRESS =(PROTOCOL = TCP)(HOST = bill.johndoe.com)(PORT = 1521))
  6. (CONNECT_DATA = (SID = V920)))

在 LISTENER.ora 也增加一个参数

  1. SID_LIST_LISTENER =
  2. (SID_LIST =
  3. (SID_DESC =
  4. (SDU = 8192)         <- Setting SDU to 8192 for this SID
  5. (TDU = 8192)         <- 8.0 TDU position
  6. (SID_NAME = V920)
  7. (ORACLE_HOME = /oracle/product/9.2.0)))

2. 增加 Arraysize, 直接在 sql*plus 里面 set arraysize 1000

配置完这些参数, 应该可以改善上面等待时间太长的问题.

性能问题: SQL*Net message from client 等待时间太长的更多相关文章

  1. SQL*Net message from client

    SQL*Net message from client The server process (foreground process) waits for a message from the cli ...

  2. ORACLE等待事件:SQL*Net message from client & SQL*Net message to client

    在ORACLE当中有两个很常见的等待事件"SQL*Net message from client"与"SQL*Net message to client",两者 ...

  3. SQL*Net message to client

    SQL*Net message to client The server (foreground process) is sending a message to the client. 这个wait ...

  4. 网络上的等待事件 —— SQL*Net message from client/dblink

    SQL*Net message from client SQL> select event#,name,parameter1,parameter2,parameter3 from v$event ...

  5. 解决:安装SQL Server 2008 Native Client遇到错误(在Navicat premium新建sqlserver连接时 需要):An error occurred during ...HRESULT: 0x80070422(注意尾部的错误号)

    解决:安装SQL Server 2008 Native Client遇到错误(在Navicat premium新建sqlserver连接时 需要):An error occurred during . ...

  6. [20180124]奇怪的SQL*Net message from dblink.txt

    [20180124]奇怪的SQL*Net message from dblink.txt --//生产系统出现大量的SQL*Net message from dblink事件,自己分析看看. 1.环境 ...

  7. ORACLE常用性能监控SQL【一】

    目录(?)[+] 系列 ORACLE常用性能监控SQL[一] ORACLE常用性能监控SQL[二] Oracle-动态性能视图解读 系列 死锁后的解决办法 生成Kill Session语句 查看导致死 ...

  8. Oracle种常用性能监控SQL语句

    --Oracle常用性能监控SQL语句 --1 SELECT * FROM SYS.V_$SQLAREA WHERE DISK_READS > 100; --2 监控事例的等待 SELECT E ...

  9. sql server 安装出现需要sqlncli.msi文件,错误为 microsoft sql server 2012 native client

    在安装sql server 2017 时出现 弹框标题为  microsoft sql server 2012 native client  内容为需要sqlncli.msi文件 去本地目录找本身的那 ...

随机推荐

  1. BZOJ 3771 生成函数,FFT

    Description 我们讲一个悲伤的故事. 从前有一个贫穷的樵夫在河边砍柴. 这时候河里出现了一个水神,夺过了他的斧头,说: “这把斧头,是不是你的?” 樵夫一看:“是啊是啊!” 水神把斧头扔在一 ...

  2. Scrapy爬虫:抓取大量斗图网站最新表情图片

      一:目标 第一次使用Scrapy框架遇到很多坑,坚持去搜索,修改代码就可以解决问题.这次爬取的是一个斗图网站的最新表情图片www.doutula.com/photo/list,练习使用Scrapy ...

  3. jdbc预编译插入数据操作

    package com.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepare ...

  4. python_迭代器和生成器

    迭代器和生成器 1.迭代器 特点: 访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容 不能随机访问集合中的某个值 ,只能从头到尾依次访问 访问到一半时不能往回退 便于循环比 ...

  5. golang fmt格式占位符

    golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf. # 定义示例类型和变量 type Human struct { Name string } var peo ...

  6. Insertion Sort List——链表的插入排序

    Sort a linked list using insertion sort. 这道题跟 Sort List 类似,要求在链表上实现一种排序算法,这道题是指定实现插入排序.插入排序是一种O(n^2) ...

  7. WP集成七牛云存储(原创)

    借助:七牛镜像存储 WordPress 插件 https://wordpress.org/plugins/wpjam-qiniu/ 安装本插件1.4.5及以上版本,请先安装并激活WPJAM BASIC ...

  8. sql中where和having的区别

    “Where” 是一个约束声明,使用Where来约束来自数据库的数据,Where是在结果返回之前起作用的,且Where中不能使用聚合函数. “Having”是一个过滤声明,是在查询返回结果集以后对查询 ...

  9. CodeForces 779C Dishonest Sellers

    贪心. 如果这周便宜,那么肯定这周买.另外要求这周至少买到$k$个,那么肯定是需要额外购买差价小的. #include<map> #include<set> #include& ...

  10. CodeForces 740D Alyona and a tree

    倍增,延迟标记. 考虑一个$u$给他的哪几个祖先$v$贡献了$1$.越往上$dis(v,u)$越大,找到最远的一个还满足条件的$v$,$v$到$u$的父亲这条链上的答案都$+1$.延迟标记一下,然后从 ...