【发布时间】:2016-05-25 02:00:21
【问题描述】:
我已阅读有关 LINESIZE 的文档 tuning SQLPlus,但我很难弄清楚为什么一组 oracle 11 服务器在 LINESIZE 方面的行为似乎与另一组 oracle 11 服务器不同
运行以下查询会给我“奇怪”的经过时间变化。
从 ROWNUM
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
1.2。非敏感服务器上的 sqlplus
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
SELECT OWNER, OBJECT_NAME FROM DBA_OBJECTS WHERE ROWNUM
2.1。敏感服务器上的 sqlplus
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
2.2。非敏感服务器上的 sqlplus
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 设置为 100、1000、10000。
我的主要问题是:为什么一组服务器似乎对更改 LINESIZE 比另一组更敏感。敏感服务器的范围从 4s 到 40s,非敏感的范围仅从 4s 到 7s。
什么可以解释“敏感性”的这种差异?
查看 2.2 的数字,我们看到由“LINESIZE 太小”引起的可变性,更大的 LINESIZE 导致经过的时间更短(从 100 到 1000)。 但是为什么在 2.1 数字中看不到相同的效果。
注意:
使用相同的 sqlplus 客户端并报告相同的设置 全部显示。
自动跟踪返回的 Oracle 统计信息几乎相同(无顺序 幅度变化)
Oracle 数据库 11g 企业版版本 11.2.0.3.0 - 64 位 生产
【问题讨论】:
-
您使用的是完全相同的 SQL*Plus 客户端(完全相同的二进制文件)吗?还是您在每台服务器上使用不同的可执行文件?我猜是后者,所以问题是客户端绘制屏幕的速度(以及潜在的本地客户端窗口的大小)以及获取数据的速度。会话的痕迹可能很有趣,但我不确定您是否愿意花太多时间来调整文本应用程序绘制屏幕的速度。
-
是的,我在所有机器上都使用完全相同(相同的 chksum)客户端可执行文件。
cksumwhich sqlplus``262059320 11753 /xxxxxx/xxxxx/xxxxx//xxx/sqlplussqlplus -vSQL*Plus: Release 10.2.0.3.0 - Production -
对不起。您是说有一台客户端计算机连接到每个服务器吗?或者您是说您在每个不同的服务器上独立运行 SQLPlus(尽管 SQL 版本相同Plus)?
-
我在多个“相同”的环境(各种测试环境)中运行它。有一个运行 sqlplus 的盒子,连接到另一个盒子上的数据库服务器。我在“模拟”客户端-服务器配置中运行它。想象一个给定的生产设置。然后为各种测试环境(性能测试、用户验收测试……)复制整个设置
-
我确实注意到,当我更改 LINESIZE 时,自动跟踪报告的“通过 SQL*Net 发送/接收到客户端的字节数”没有变化。我猜这意味着sqlplus和db服务器之间的数据量不会随着LINESIZE而改变。那么这是否意味着 LINESIZE 只影响 sqlplus 在从查询中接收到数据后所做的事情。