今天我终于自己遇到了这个问题, 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. iOS APP程序启动原理

    UIApplication 程序启动原理 一个应用程序运行就必须要有一个进程,一个进程至少要有一个线程,我们把这个线程叫做主线程,主线程开启之后会开启一个主运行循环,如果不开启一个运行循环,程序开启了 ...

  2. ServerSocket和Socket通信

    服务器端: 1.服务器端建立通信ServerSocket对象,并设置端口号 2.服务器建立Socket接收客户端连接 3.建立IO输入流读取客户端发送的数据 4.建立IO输出流向客户端输出数据 客户端 ...

  3. [How to] UIScrollView的使用方法

    1.简介 代码 延续前一个博客使用Xib来创建view,本文我们创建一个带有PageControlView的ScrollView的table的headView,如下图: 具有自动滚动: 具有拖拽完毕后 ...

  4. echarts3.0版本断点连线的处理

      项目应用到echarts图表组件.官网的demo中出现空数据会断开.经过跟踪调试.修改echarts.js以下代码即可实现断点连线功能(需要将空数据处理成'-'.这样才能均值): for (var ...

  5. eclipse 配置jsp

    1.安装jdk和jre 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ...

  6. django渲染模板时跟vue使用的{{ }}冲突解决方法

    var vm = new Vue({ el: '#app', // 分割符: 修改vue中显示数据的语法, 防止与django冲突 delimiters: ['[[', ']]'], data: { ...

  7. python 几种循环性能测试: while, for, 列表生成式, map等

    直接上代码: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/07/24 16:23 import itertools imp ...

  8. AC日记——色板游戏 洛谷 P1558

    色板游戏 思路: sb题: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 struct Tre ...

  9. 如何实现electron多页面间通信

    如何实现electron多页面间通信 1,业务需求: 总共有两个页面,页面A显示数据,页面B处理数据,主线程Main 2,实现的技术方案: 在主线程中打开页面A和B,B页面不进行显示,主要负责处理从A ...

  10. Aras Innovator 11 sp2 firefox客户端设置

    在上一篇文章<Aras Innovator 11 sp2 安装>后,服务器算是安装好了,还需要在使用的客户端进行设置才可以正常使用Aras Innovator 该篇为firefox设置,还 ...