Oracle 11 经过时间对 LINESIZE 变化的变量敏感性

Oracle 11 variable sensitivity of elapsed time to LINESIZE changes

我已阅读有关 LINESIZE 的文档 tuning SQLPlus,但我正在努力弄清楚为什么一组 oracle 11 服务器在 LINESIZE[=15 方面的行为似乎与另一组 oracle 11 服务器不同=]

运行 以下查询为我提供了 'strange' 经过时间变化。

SELECT OBJECT_NAME 来自 DBA_OBJECTS 其中 ROWNUM < 140000;

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 所有者,OBJECT_NAME 来自 DBA_OBJECTS,其中 ROWNUM < 140000;

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 比另一组服务器更敏感。敏感服务器 运行 从 4 秒变到 40 秒,非敏感服务器 运行 只有 运行 从 4 秒变到 7 秒。

什么可以解释 'sensititivity' 中的这种差异?

查看 2.2 数字,我们看到 "LINESIZE too small" 引起的可变性,较大的 LINESIZE 导致较短的运行时间(从 100 到 1000)。 但是为什么在2.1号里看不到同样的效果。

注:

终于弄清了这个烦人的问题。

我们使用的 sqlplus 客户端版本是:SQL*Plus:10.2.0.3.0 版 - 生产

将 'sensitive' 与 'non-sensitive' sqlplus 主机分开的设置是 NLS_LANG 环境变量。 在非敏感的变量未设置,因此默认为 AMERICAN_AMERICA.US7ASCII 在敏感变量上,变量设置为 AMERICAN_AMERICA.UTF8

一旦您知道要查找的内容,就会出现以下链接: https://community.oracle.com/thread/979446?tstart=0