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 客户端并报告相同的设置
通过全部显示。
autotrace 返回的 Oracle 统计数据几乎完全相同(无顺序
幅度变化)
Oracle 数据库 11g 企业版 11.2.0.3.0 版 - 64 位
产量
终于弄清了这个烦人的问题。
我们使用的 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
我已阅读有关 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 客户端并报告相同的设置 通过全部显示。
autotrace 返回的 Oracle 统计数据几乎完全相同(无顺序 幅度变化)
Oracle 数据库 11g 企业版 11.2.0.3.0 版 - 64 位 产量
终于弄清了这个烦人的问题。
我们使用的 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