Oracle 11运行时间对线路尺寸变化的可变灵敏度

Oracle 11运行时间对线路尺寸变化的可变灵敏度,oracle,oracle11g,sqlplus,Oracle,Oracle11g,Sqlplus,我已经阅读了有关LINESIZE的文档,但我正在努力找出为什么一组oracle 11服务器在LINESIZE方面与另一组oracle 11服务器的行为有所不同 运行以下查询会给我“奇怪的”运行时间变化 从ROWNUM

我已经阅读了有关LINESIZE的文档,但我正在努力找出为什么一组oracle 11服务器在LINESIZE方面与另一组oracle 11服务器的行为有所不同

运行以下查询会给我“奇怪的”运行时间变化

从ROWNUM<140000的DBA_对象中选择对象_名称

1.1。敏感服务器上的sqlplus

100   00:00:04.28 00:00:04.18 00:00:04.04
1000  00:00:06.48 00:00:06.37 00:00:06.32
10000 00:00:39.98 00:00:40.17 00:00:39.78
100   00:00:04.90 00:00:04.93 00:00:04.77
1000  00:00:04.91 00:00:05.18 00:00:04.90
10000 00:00:05.79 00:00:05.54 00:00:05.74
100   00:00:06.65 00:00:07.53 00:00:06.88
1000  00:00:07.84 00:00:08.27 00:00:08.24
10000 00:00:40.71 00:00:41.54 00:00:40.60
100   00:00:07.91 00:00:07.15 00:00:07.69
1000  00:00:05.64 00:00:05.59 00:00:05.52
10000 00:00:06.27 00:00:06.37 00:00:06.34
1.2。非敏感服务器上的sqlplus

100   00:00:04.28 00:00:04.18 00:00:04.04
1000  00:00:06.48 00:00:06.37 00:00:06.32
10000 00:00:39.98 00:00:40.17 00:00:39.78
100   00:00:04.90 00:00:04.93 00:00:04.77
1000  00:00:04.91 00:00:05.18 00:00:04.90
10000 00:00:05.79 00:00:05.54 00:00:05.74
100   00:00:06.65 00:00:07.53 00:00:06.88
1000  00:00:07.84 00:00:08.27 00:00:08.24
10000 00:00:40.71 00:00:41.54 00:00:40.60
100   00:00:07.91 00:00:07.15 00:00:07.69
1000  00:00:05.64 00:00:05.59 00:00:05.52
10000 00:00:06.27 00:00:06.37 00:00:06.34
从ROWNUM<140000的DBA_对象中选择所有者、对象_名称

2.1。敏感服务器上的sqlplus

100   00:00:04.28 00:00:04.18 00:00:04.04
1000  00:00:06.48 00:00:06.37 00:00:06.32
10000 00:00:39.98 00:00:40.17 00:00:39.78
100   00:00:04.90 00:00:04.93 00:00:04.77
1000  00:00:04.91 00:00:05.18 00:00:04.90
10000 00:00:05.79 00:00:05.54 00:00:05.74
100   00:00:06.65 00:00:07.53 00:00:06.88
1000  00:00:07.84 00:00:08.27 00:00:08.24
10000 00:00:40.71 00:00:41.54 00:00:40.60
100   00:00:07.91 00:00:07.15 00:00:07.69
1000  00:00:05.64 00:00:05.59 00:00:05.52
10000 00:00:06.27 00:00:06.37 00:00:06.34
2.2。非敏感服务器上的sqlplus

100   00:00:04.28 00:00:04.18 00:00:04.04
1000  00:00:06.48 00:00:06.37 00:00:06.32
10000 00:00:39.98 00:00:40.17 00:00:39.78
100   00:00:04.90 00:00:04.93 00:00:04.77
1000  00:00:04.91 00:00:05.18 00:00:04.90
10000 00:00:05.79 00:00:05.54 00:00:05.74
100   00:00:06.65 00:00:07.53 00:00:06.88
1000  00:00:07.84 00:00:08.27 00:00:08.24
10000 00:00:40.71 00:00:41.54 00:00:40.60
100   00:00:07.91 00:00:07.15 00:00:07.69
1000  00:00:05.64 00:00:05.59 00:00:05.52
10000 00:00:06.27 00:00:06.37 00:00:06.34
我在运行这些查询时更改的唯一变量是LINESIZE设置。我反复运行相同的查询,LINESIZE设置为100100010000

我的主要问题是:为什么一组服务器似乎比另一组服务器对线路尺寸的变化更敏感。敏感服务器的范围从4s到40s,非敏感服务器的范围仅从4s到7s

什么可以解释这种“敏感性”的差异

查看2.2数字,我们可以看到“LINESIZE太小”导致的变化,较大的LINESIZE会导致较短的运行时间(从100到1000)。 但为什么在2.1数字中看不到同样的效果呢

注:

  • 相同的sqlplus客户端与报告的相同设置一起使用 以示感谢

  • autotrace返回的Oracle统计数据几乎相同(无顺序 (震级变化)

  • Oracle数据库11g企业版11.2.0.3.0版-64位 生产


    • 终于找到了这个令人讨厌的问题的根源

      我们使用的sqlplus客户端的版本是:SQL*Plus:release10.2.0.3.0-Production

      将“敏感”与“非敏感”sqlplus主机分开的设置是
      NLS_LANG
      环境变量。 在非敏感变量上,未设置变量,因此默认为
      AMERICAN\u AMERICA.US7ASCII
      在敏感变量上,变量设置为
      AMERICAN\u AMERICA.UTF8

      一旦您知道要查找什么,将显示以下链接:

      您使用的是完全相同的SQL*Plus客户端(完全相同的二进制文件)吗?或者在每台服务器上使用不同的可执行文件?我猜是后者,所以问题在于客户端绘制屏幕的速度(可能还有本地客户端窗口的大小)以及获取数据的速度。会话的跟踪可能会很有趣,但我不确定您是否愿意花费太多时间来调整文本应用程序绘制屏幕的速度。是的,我在所有框集上使用完全相同的(相同的chksum)客户端可执行文件
      cksum
      sqlplus``
      262059320 11753/xxxxxx/xxxxx/xxxxx/xxxxx/sqlplus
      sqlplus-v
      SQL*Plus:Release 10.2.0.3.0-生产版对不起。你是说有一台客户机连接到每台服务器吗?或者您是说您在每个不同的服务器上独立运行SQLPlus(尽管是同一版本的SQLPlus)?我在多个“相同”的环境(不同的测试环境)中运行它。有一个运行sqlplus的盒子,连接到另一个盒子上的db服务器。我在“类似”的客户机-服务器配置中运行它。想象一个给定的生产设置。然后,针对不同的测试环境(性能测试、用户验收测试等)复制整个设置。我注意到,autotrace报告的“通过SQL*Net发送/接收到客户端的字节数”在我更改线宽时没有变化。我猜这意味着sqlplus和db服务器之间的数据量不会随着LINESIZE的变化而变化。这是否意味着LINESIZE只影响sqlplus从查询中接收数据后的行为。