7 x 24 在线支持!
PeopleSoft 性能优化建议
如果自己搞不定可以找诗檀软件专业ORACLE 优化团队成员帮您调优!
诗檀软件专业数据库优化团队
服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com
本文档旨在为Oracle DBA寻求关于如何“大图”的理解支持PeopleSoft应用程序。 这是一个简短的概述,其中包含PeopleSoft支持的建议安装/升级和CoE团队与相关KM文档的链接。
它是由一系列步骤组成的,从与硬件相关的意见开始,并从“工作”开始在那里。 从硬件,操作系统,数据库版本和补丁集,初始化设置,统计等。
本文件是为了预期读者是熟练的Oracle DBA而编写的Oracle DBMS的实施,管理和调优的各个方面。 此外,它将是有助于读者流利的PeopleSoft技术和/或可以访问PeopleSoft技术可以修改设置以满足特定实施需要的人员。
本文档中包含的信息适用于用于PeopleSoft应用程序的Oracle数据库基于PeopleTools 8.50+,特别是Oracle 10g,通过Oracle 12c。
硬件和操作系统支持
一般来说,PeopleSoft只要设备不会限制硬件选择适当地配置和调整其在给定架构中扮演的角色。 意图是允许设计PeopleSoft系统时具有很大的灵活性。
Operating Systems vs. Hardware
在PeopleTools安装/升级支持团队中,使用了一个短语,“...我们支持操作系统,而不是
硬件...“,强调整体来说,硬件选择并不像关于硬件的操作系统那么重要。 例如,如果64位Linux的给定变体得到支持,则可以选择硬件供应商的64位机器不是主要关注的问题。
任何存在的限制都应列在“My Oracle Support”中的“Certifications”选项卡上。 这是明智的确认任何硬件或操作系统选择,特别是在升级期间,作为要求可能随时间而变化。
当然,当数据库服务器在PeopleSoft架构中扮演多个角色时,例如 当进程调度程序安装在数据库服务器上时,“操作”中可能存在设置和约束
系统必须支持这种特殊的,混合的角色。 发生这种情况时,需要调整所有组件的各种要求。 当服务器只支持数据库时,没有任何重大的意义
除了由DBS供应商强加的硬件或操作系统限制,PeopleSoft也施加了限制。
有用资源
硬件虚拟化
硬件虚拟化在现代实施架构中的作用越来越大。
通常,虚拟基础架构非常有能力,整体性能相当好。 但在有影响的情况下,可能是重要的。 在这些情况下,Oracle Support可能会将您重定向到为这些产品提供支持的供应商。
例如,生产基础架构中的延迟很小可能是有问题的。 例如,一些应用程序遍历许多小事务,例如 HCM的工资单计算,所以甚至非常小的延迟,例如 亚微毫秒,由CPU虚拟化,电源管理或I / O争用引起的,可能会累积到显着的性能影响。
另一个常见的问题是共享或基于SAN的存储的性能。 与本地专用存储相比,实际性能可能会有很大的不同。 当使用提供“平均响应时间”的工具进行监视时,I / O系统的性能可以报告为足够,但实际吞吐量和响应性相当差。 在这些情况下,使用AWR报告的等待事件直方图评估各种读/写事件可能非常有用。
Oracle DBMS版本和补丁
与DBMS软件版本和补丁集相关的决策是实现Oracle数据库体系结构的下一个考虑。 这些选择构成了以下部分中许多建议的基础。
认证版本和配置
PeopleTools Development提供与认证版本和配置要求相关的信息。 版本信息至少在三个地方提供:
•认证组合:包括DBMS在内的各种组件的某些组合已获得认证支持。 “我的Oracle支持”中的“认证”选项卡列出了这些组合。
注意:确保实现各种组件的版本,例如SQLNet,OCI等“匹配”,并在联系Oracle支持之前得到支持。
•Oracle DBMS修补程序和设置:对于各种修补程序,一些关键修补程序和初始化参数已被标识为“必需”以正确操作Oracle DBMS。这些修补程序和设置列在题为“使用PeopleSoft的Oracle数据库的所需临时修补程序”(Doc ID 1100831.1)的注释中。确保查看索引以了解哪些选项卡适用,因为通常有两个选项适用:一个用于修补程序,一次用于设置。
•操作系统支持:支持PeopleSoft Infrastructure组件的所需补丁,例如WebLogic,Tuxedo,COBOL,操作系统,列在题为“安装PeopleTools - 主列表”所需的操作系统,RDBMS和其他组件修补程序的文件(Doc ID 756571.1)中。
有用的KM文件:
•My Oracle Support中的“Certifications”选项卡
•使用PeopleSoft的Oracle数据库所需的临时修补程序“(Doc ID 1100831.1)
•安装所需的操作系统,RDBMS和其他组件修补程序
PeopleTools - 主列表“(Doc ID 756571.1)
支持版本指南
给定的PeopleTools版本在给定的Oracle DBMS版本和补丁集上进行了认证。 通常,在该版本的Oracle版本中,除非另有说明,还支持补丁集和所有后续补丁。
例如,PeopleTools 8.51最初分别在Oracle 10gR2,11gR1和11gR2 - 补丁集10.2.0.4,11.1.0.7和11.2.0.1上进行了认证。 支持这些认证修补程序之上或之后的每个版本的所有修补程序。
当然,Oracle DBMS的广泛支持肯定并不意味着所有的PeopleSoft
应用程序在Oracle DBMS的所有版本和修补程序中都能同样出色。 给定版本或补丁集的某些特性可能会显着影响PeopleSoft应用程序。
PeopleTools支持鼓励客户使用与实际相同的补丁。
Oracle限制和缺陷
不是Oracle DBMS中的所有限制和缺陷都会影响PeopleSoft应用程序。但是有一些问题,随着时间的推移,PeopleSoft应用程序比其他应用程序更受到影响。一个值得特别提及的是基于功能的索引。
基于功能的索引在PeopleSoft应用程序中变得常见,当在PeopleTools 8.48及更高版本中,许多构造为支持范围查询时这些索引包括DESC关键字。
不幸的是,他们的使用将PeopleSoft实现打开与基于功能的索引相关的一些副作用。此外,由于许多PeopleSoft应用程序查询的复杂性,他们的好处并没有得到广泛的赞赏。在大多数情况下,删除DESC关键字非常有用,可以避免基于功能的索引的副作用,而不会对性能造成重大影响。
关于使用降序索引的PeopleTools策略已经改变,以避免在Oracle 12c中使用DESC子句。所有Oracle 12c数据库上的实现都需要此方法,并且是现有Oracle 10g和11g的可选,适用和支持。在使用PeopleTools 8.54或更高版本的任何实现中,Application Designer将不会发出DESC子句。
有用的KM文件:
•删除PeopleSoft数据库的降序索引(Doc ID 1909646.1)
初始化参数
初始化参数对于Oracle优化器所做的决策至关重要。 本节介绍一些更重要的设置及其对PeopleSoft应用程序的影响
“必需”参数
与当前支持的Oracle版本相关,PeopleTools Development已经将一些初始化参数指定为“必需”或“推荐”。 虽然My Oracle Support Certification文档是这些的权威存储库,本节重点介绍了这些参数,并简要说明了如何使用它们。
•_gby_hash_aggregation_enabled = false - Oracle 10g实现了高性能,基于哈希的排序算法,用于处理DISTINCT子句时使用。 这个新算法并不能保证在先前的算法对行进行排序时,这些行将被排序。
许多PeopleSoft应用程序是按预期排序的行编写的,如果没有这种排序,它将不会正常运行。 因此,在Oracle DBMS上,应该使用遗留算法。 因此,需要在运行PeopleSoft应用程序的所有Oracle数据库中禁用此值。
•_unnest_subquery = false - 在使用默认值的内部测试期间,在线处理中会发生性能下降。 还有一些偶然的错误造成观点。 需要在运行PeopleSoft应用程序的所有Oracle数据库中禁用默认值。 (本文档后面介绍的这个参数使用的灵活性)
•optimizer_adaptive_features = FALSE - 升级到Oracle Database 12c后,许多PeopleSoft客户注意到与Oracle 12c Optimizer Adaptive Feature (OAF)相关的整体性能下降.建议在所有运行PeopleSoft应用程序Oracle数据库中禁用此值.
•_optimizer_skip_scan_enabled = FALSE - 在Oracle 12c上运行的PeopleSoft SQL查询Exadata使用索引跳过扫描而不是全扫描,并且可以比全扫描运行慢得多,尽管执行计划中的成本评估较低。建议在所有运行PeopleSoft应用程序的Oracle 12c Exadata数据库禁用此值
•_fix_control ='14033181:0'PeopleSoft SQL查询在当查询在执行计划中执行位图转换时,Oracle 12c中返回错误的结果。建议在运行PeopleSoft应用程序的所有Oracle数据库中禁用该值。
•nls_length_semantics = char。 对于运行PeopleSoft Applications 9.0和更高版本的大多数当前实现中使用的Unicode数据库,此设置是必需的。 有关其他详细信息,请参阅安装指南,“准备安装”一节。
•o7_dictionary_accessibility - 最初添加了此参数,以允许PeopleSoft在PeopleTools 8.48中实现的触发器支持PeopleSoft移动应用程序框架所需的功能。 2010年5月,使用该参数的要求被消除,取而代之的是要实现两个GRANT。 在这是必需的设置之前,有一些先决条件。
有用的KM文件:
•使用PeopleSoft的Oracle数据库所需的临时修补程序(Doc ID 1100831.1)
要避免的参数
通常会随着时间的推移将某些设置“蠕变”到PeopleSoft系统中,这通常是解决性能问题或感知优化器限制的方法。 以下参数严重扭曲了CBO的计算。 除了罕见的例外 - 通常仅作为CBO缺陷或设计限制的解决方法 - 我们建议仅对这些参数使用默认值。
•cursor_sharing - default:EXACT - cursor_sharing参数值得特别注意,因为它的全局滥用可能会对PeopleSoft应用程序的稳定性和性能产生有害影响,部分原因在于典型数据集的大小和偏差。 默认设置cursor_sharing = exact,是PeopleSoft应用程序唯一应用的值。 cursor_sharing = similar的设置已被Oracle不推荐使用,不应该在PeopleSoft应用程序的任何上下文中使用。
•optimizer_index_cost_adj - 默认值:100 - 此早期版本的Oracle DBMS中已使用此设置来全局强制CBO以优先使用索引。 不推荐在当前版本的Oracle中全面使用此参数,因为它可能对数据库的整体性能稳定性产生深刻的负面影响。
optimizer_index_caching - default:0 - 此设置也已在早期版本的Oracle DBMS中使用,以全局强制CBO更喜欢使用索引。 不推荐在当前版本的Oracle中全面使用此参数,因为它可能对数据库的整体性能稳定性产生深刻的负面影响。
•db_file_multiblock_read_count - 默认值:unset,由DBMS动态计算 - 在Oracle 10g及更高版本中推荐使用此参数的默认值。
•各种“underscore”参数 - 除了在Oracle Server技术支持的特定方向进行解决特定错误之外,应避免使用下列参数(不包括上一节中列出的参数)。 必须注意。)将其应用于“locally”,例如 在语句或会话级别和b。),一旦数据库升级到解决该错误的版本/修补程序集即可将其删除。
经常混淆的参数
以下两个参数是不时使用的,值得一提,因为它们经常让人困惑。 只有极少数情况下,它们的非默认使用是合适的。
•optimizer_features_enable - default:{current DBMS version}。 此设置允许客户使用较新的DBMS版本或补丁集,但要求CBO更像“过去版本”“行为”。 它可以用作实现特定版本的Oracle后发现的错误的临时解决方法。
不幸的是,使用该设置通常会超出需要的位置,不必要地限制优化器可用的功能。 除非Oracle Server技术支持专门指出将此设置用作临时措施,否则强烈建议将此值取消设置。
•compatible:此设置会影响给定版本的文件存储功能。 通常,它用于在DBMS升级期间提供“退出策略”。 而PeopleSoft使用某些受此设置影响的功能。 本地管理的表空间,通常在PeopleSoft实现中并不重要,不需要设置。
用作定制的参数
•_unnest_subquery = true:如果存在需要使用查询不需要功能的特定用例,则允许启用此参数,即作为提示或更改的会话设置。 将支持使用此参数作为自定义,并且可能需要在服务请求的诊断过程中将其删除。
由于向Oracle支持部门报告了问题,第一行查询是删除非标准配置参数。 如果发现实际上未设置“必需”参数,或者使用除Oracle支持所需的外部设置之外的其他设置,则准备提供测试用例,将参数重置为所需值。
但是,对初始化参数的任何更改都会产生深远的影响。 例如,对设置的更改可能会产生副作用,即使更改是将其重置为必需或推荐状态。
在生产环境部署它之前,管理员应该可以充分测试任何全局变化的回归。
有用的KM文件:
•从10gR2,HASH UNIQUE操作返回结果在默认的UNSORTED ORDER
(文件编号341838.1)
•使用PeopleSoft的Oracle数据库所需的临时修补程序(Doc ID 1100831.1)
•安装所需的操作系统,RDBMS和其他组件修补程序
PeopleTools - 主列表(Doc ID 756571.1)
•公告:弃用cursor_sharing ='SIMILAR'设置。 (Doc ID 1169017.1号文件)
•E-ORA:如何将Oracle非Unicode数据库转换为Unicode数据库(Doc ID
1437384.1)
Statistics Management
传统上,PeopleTools Development已提供指导,协助收集以违约,样本和文件形式出现的统计数据。 关于统计数据收集的最终决定一直留给顾客。
尽管Oracle CBO的成熟度,随着时间的推移,随着PeopleSols应用程序使用PeopleTools的交付“默认值”和Oracle DBMS问题,出现了一些特点。 本节将探讨更重要的异常情况,并提出减轻其影响的建议。
Oracle特性对统计管理至关重要
以下Oracle功能会影响PeopleSoft应用程序,并进行描述,以便更好地了解其影响。
AUTO_SAMPLE_SIZE
在Oracle10g中,默认的AUTO_SAMPLE_SIZE产生的样本太小,无效。 为此,Oracle支持部门建议,在Oracle10g中,将实际的样本大小设置为100%,或者基于与表大小有关的以下计划:
100% for tables < 1M rows
30% for tables up to 10M rows
10% for tables up to 100M rows
3% for tables up to 1B rows
1% for tables > 1B rows
在Oracle 11g和更高版本中,自动采样算法完全改变,现在使用AUTO_SAMPLE_SIZE是适合和推荐的。 研究表明,统计学质量收集了99%样本大小的方法,其速度为10%或更少的样本量。 当列具有直方图并且列中的数据非常偏斜时,存在使用AUTO_SAMPLE_SIZE的一个例外。 在这种情况下,可能会更好地以大样本大小明确收集。
总而言之,建议使用的样品量如下:
•在Oracle 11g和12c中,使用AUTO_SAMPLE_SIZE作为默认值。
•在Oracle 10g中,避免在所有情况下使用AUTO_SAMPLE_SIZE。 使用100%的样品量。当大小禁止100%样品时,请使用上述表格进行改进性能。
Histograms
随着Oracle 11g和Oracle 12c优化器的发展,直方图更广泛地被接受为有益的,现在建议使用它们来增强计划的稳定性和性能。 在Oracle11g或更高版本上收集统计信息时,使用AUTO_OPT的AUTO是合适的。
通常,避免在Oracle 10g上使用直方图。 仅在已知其特定的列,并且在使用时没有副作用下使用它们。 收集有关Oracle 10g的统计信息时,请使用包含“SIZE 1”的METHOD_OPT,这将阻止生成直方图。
如前所述,在任何Oracle版本中,当收集具有非常偏斜数据的大对象的直方图时,请考虑增加样本大小以提高直方图的准确性。
总而言之,直方图的使用如下:
•在Oracle 11g和Oracle 12c中,使用AUTO的METHOD_OPT根据需要自动收集直方图。
•在Oracle 10g中,避免使用直方图,除非特定的用例值得使用。
Delayed Invalidation of Statistics
收集表上的统计信息与与该表相关联的计划失效之间发生延迟。 来自PeopleSoft的传递语法不会覆盖此延迟,可能是导致运行时间不可预测的原因。 建议在收集统计信息时将NO_INVALIDATE设置为FALSE。
•E-ORA如何在使用%UpdateStats时更改PSDDLMODEL发生的语法(Doc ID 1537099.1)
Automatic Statistics Collection Default Values
Oracle数据库随附了作业或则进行安排dbms_stats.gather_schema_stats()过程的AUTOTASK。 由于在Oracle上运行的PeopleSoft应用程序的特殊性,这些默认值会出现一些问题,特别是在Oracle 10g中。
•Histograms:根据SQL语句历史中是否使用列作为谓词,该过程将自动生成直方图。 如前所述,这在Oracle 10g中是有问题的,但不是Oracle 11g及更高版本中的问题。 但是,在PeopleTools中传递的语法不会收集统计信息,因此根据使用的方法,统计信息可能存在或不存在。
•Sample Size:此过程使用的默认样本大小为AUTO。 如前所述,这在Oracle 10g中是有问题的,但不是Oracle 11g及更高版本中的问题。 但是,在PeopleTools中传递的语法将样本大小设置为1%,所以根据使用哪种方法,统计数据完全不同。
•Dynamic Sampling:没有足够的控制哪些表不应该收集统计数据,即统计数据被删除以调用动态采样。 为了防止该过程收集这些丢失的统计信息,DBA通常会锁定该表上的统计信息。 但如果统计信息被锁定,如果从程序尝试更新统计信息,则可能会导致PeopleSoft批处理ABEND。
pscbo_stats包是为了克服这些限制而编写的,建议作为默认自动统计信息收集的增强。
关于管理统计的建议
有几个建议来解决PeopleSoft应用程序中大多数常见的统计问题
更改默认的DDL。
为%UpdateStats()提供的DDL包括FOR ALL INDEXED COLUMNS,不包括子句NO_INVALIDATE = FALSE,并且使用样本大小1.更改所有这些将显着提高统计信息的质量。
推荐的语法将使用FOR ALL COLUMNS和NO_INVALIDATE = FALSE。 另外,在Oracle 11g和更高版本中,包括AUTO_SAMPLE_SIZE和METHOD_OPT = AUTO也是适用的。 查看下面列出的KM,其中介绍了如何编辑默认的DDL,其中还包括建议的语法。
有用的KM文件:•E-ORA如何更改PeopleTools的NO_INVALIDATE的数据库首选项
申请(Doc ID 1537099.1)
实现pscbo_stats包
pscbo_stats软件包是实现动态抽样以及包含本文档中概述的首选设置的工具。 它是PeopleSoft CoE和Oracle Server Tech CoE的合资企业。
pscbo_stats包提供了一种可靠的方式来维护PeopleSoft应用程序的数据库统计信息。 它包括在模式或表级别收集统计信息的方法,并自动实现已知易失性表的动态抽样,例如。 应用引擎和COBOL中的临时存储表。
这个工具值得特别提及,因为它使用%UpdateStats()在很大程度上是无关紧要的。 使用Oracle的动态采样,而不是依赖程序来更新临时表的统计信息。当调用%UpdateStats()时,它被简单地忽略。
有用的KM文件:
•KM文件“pscbo_stats - 为PeopleSoft Enterprise改进Oracle RDBMS中的统计信息
(Doc 1322888.1号文件)“
使用%UpdateStats metaSQL
PeopleTools提供了一个名为%UpdateStats的PeopleCode元数据库构造,可以生成平台特定的SQL来收集统计信息。 %UpdateStats引用通常用于Application Engine和COBOL程序中,这些程序会显着改变给定表格中数据的“形状”。 当这种情况发生时,让应用程序更新表的统计元数据可以改善优化器所做的决策。
虽然交付的应用程序将%UpdateStats放在战略位置,但在某些实现中,可能不足以产生一致的,足够的性能。 在这些情况下,手动将%UpdateStats添加到应用程序可能是有益的。 这种变化将被视为定制,但在正确使用时可以极大地提高性能和运行时稳定性。
收集数据字典统计信息
PeopleSoft应用程序数据库有很多对象,数量在数万上。 这些对象中的每一个都在Oracle数据字典中定义,这是一组优化器不断查询以验证表,列,索引和约束等的存在的表。
主要DDL更改后,忽略更新此数据字典的统计信息是一个常见的监督。 建立或升级PeopleSoft数据库后,收集Oracle字典统计信息是明智的。
以下示例脚本显示必要的语法,例如 (以SYSDBA运行):
SET SERVEROUT ON TRIMS ON LINES 1000;
SPO gather_dict_stats.log;
exec dbms_stats.gather_dictionary_stats(estimate_percent=>100, method_opt=>’FOR ALL COLUMNS SIZE 1’);
QUIT;
收集工作量系统统计
当前的工作负载统计信息对于优化器(特别是Oracle 11g)可能非常有用,但经常被忽略,因为默认值通常工作得很好。 如果您有理由相信默认值不足,或者由于某种原因,系统的行为会不时更改,收集工作负载统计信息可能是适当的。
如果您选择收集工作负载统计信息,请确保在任何主要的DBMS升级或更改之后,或执行重要的硬件或操作系统更改时刷新它们。 通常,在“正常”系统活动的一到两个小时的窗口内收集数据,但该样本根据几个实施因素而不同。
每当数据库使用模式发生显着变化(例如数据库升级或影响CPU或IO指标的系统发生重大变化)后,准备重新收集工作负载统计信息。与任何全局变更一样,通过执行回归来管理与回归有关的风险 足够的测试。
由于在“正常”系统活动期间通过拍摄元数据的两个快照来收集这些数据,因此存在可观察到的性能影响的远程可能性。 这种影响是暂时的,通常是相当小的。 有效的工作量统计数据的好处通常超过收集这些数据的临时成本。
启动基准样本的命令是:
exec DBMS_STATS.GATHER_SYSTEM_STATS('START');
命令收集结束样本是:
exec DBMS_STATS.GATHER_SYSTEM_STATS('STOP');
收集工作负载系统统计数据后,查看结果非常重要。 使用以下示例脚本(以SYSDBA运行)确认所有值都在合理的范围内:
SET SERVEROUT ON TRIMS ON LINES 1000; SPO display_workload_stats.log;
SELECT pname, pval1 FROM sys.aux_stats$ WHERE sname = 'SYSSTATS_MAIN';
QUIT;
一个缺点值得特别提及。 SREADTIM和MREADTIM的典型值介于1到100之间,以毫秒为单位。 如果它们的值超过该值的10,000倍,则可能会遇到注释9842771.8中描述的错误。
有用的KM文件:
•Bug 9842771 - AUX_STATS $中的SREADTIM和MREADTIM统计信息错误$(Doc ID
9842771.8)
索引技术
索引策略比比皆是,并且在许多方面是熟练应用调谐器的艺术形式。 在改进单个访问路径的过程中,构建一个能够帮助多个访问路径通过各种数据集而不会影响应用程序性能的索引,可能需要很大的技巧。 这些权衡应始终以知情的方式进行。
一般概念:
虽然本节并不打算全面提供如何执行索引调整,但它确实包含了一些有用的“经验教训”,用于DBA对PeopleSoft应用程序进行索引调整
•索引唯一性 - PeopleSoft应用程序使用唯一索引来强制数据完整性。 虽然在唯一索引中重新排序密钥不会影响PeopleSoft应用程序的完整性,但是必须以任何方式改变唯一索引中密钥的存在。 通常,即使出于性能原因,也不需要修改唯一索引。
•非唯一索引 - 非唯一索引由PeopleTools Application Designer基于应用程序开发人员在定义记录结构时的选择进行算法构建。 因此,它们代表了如何访问数据的“受过教育的猜测”。除了出于性能原因,PeopleSoft应用程序没有固有的要求这些索引保留,或者如果它们仍然是未修改的。 修改这些索引时,请确保使用应用程序设计器更新PeopleTools数据字典。
•PeopleSoft数据字典 - 请记住,PeopleTools维护与Oracle数据字典不同的数据字典,需要使用对索引进行的任何更改进行更新,以便在应用程序升级期间可以保留这些更改。
•基于功能的索引 - DESC索引是基于功能的索引的示例,可以增加足够的优化器复杂性和存储要求,从而抵消其优点。使用Oracle 12c数据库,PeopleTools需要禁用DESC索引,并鼓励在先前版本的数据库中禁用它们。有关详细信息,请参阅本节末尾列出的KM。
•平等和等于连接谓词应先于索引中的扫描谓词 - “最佳实践”用于表明高度选择性值应始终引导索引。但是并不总是如此,在PeopleSoft应用程序中,范围扫描是常见的,这种误解可能会导致重大的性能问题。以下部分将介绍这一概念。
有用的KM文件
•删除PeopleSoft数据库的降序索引(Doc ID 1909646.1)
访问与过滤器谓词
在添加或更改索引之前,请了解访问对过滤器谓词和预测键的影响。一般来说,当您构建索引时,您需要访问谓词的键位于过滤器谓词的键之前,最后是相关的预测键。
通过Web搜索和已发布的书籍可以获得许多文章,并且很好地理解这些概念对于有效的索引调整至关重要。 例如:
性能的关键字排序
当添加索引以支持具有相等(和/或等于连接)谓词和范围谓词的查询时,通常最好在密钥之前查找等式(和/或等于连接)谓词中使用的密钥 用于范围谓词。 一个例子将有助于说明这一建议。
为了说明,考虑以下简单查询:
SELECT COL_A, COL_B, COL_C FROM MYTABLE WHERE COL_A=:1 AND COL_B =:2 AND COL_C > 100;
为了本示例的目的,假设所有三列都是合理选择性的,并且优化器“想要”使用索引来检索此数据。 此外,假设COL_C是最有选择性的,COL_A是最不具选择性的。 纯粹基于基数,添加以下索引以支持此查询将是诱人的:
MYTABLE(COL_C, COL_B, COL_A)
但是,由于COL_C上的范围扫描可能会使COL_B或COL_A被用作高效的访问谓词,尽管它们可能被用作过滤器谓词,但这种排列对于此查询来说效率不高。 为了获得最佳性能,COL_A或COL_B应在COL_C之前,因为COL_C是范围谓词。 这些键的更好的安排将是以下索引之一:
PS_MYTABLE(COL_A, COL_B, COL_C)
PS_MYTABLE(COL_B, COL_A, COL_C)
应该首先决定哪个关键字应该是其他查询是否使用COL_A或COL_B。
表行排序
随着时间的推移,将行插入到表中的顺序可能与从该表中通常选择行的顺序有显着的不同。虽然索引可以提高识别表行的能力,但是可能会出现表中行的顺序与所有索引的关键顺序发生显着差异,性能可能会显着降低,因为索引不再有效检索数据的方法。
当这种情况发生时,优化器将倾向于选择全表扫描,其中索引以前将更有效。此外,连接顺序的更改通常会发生,进一步降低性能。
要解决这种情况,请重新排列表中的行,以便与最常见的用例更紧密地匹配行顺序。在PeopleSoft应用程序中,默认唯一索引是应用程序通常访问表数据的行顺序的良好指示符。 (一个例外是当一个表被广泛地用于月末报告时,像nVision这样的工具,根据时间段和/或部门值重新排序表可能是适当的。)
有用的KM文件
•如何使用CTAS来改进Oracle RDBMS上的集群因素,以提高SQL性能
(文件编号2065790.1)
•https://docs.oracle.com/cd/E17952_01/refman-5.5-en/create-table-select.html
优化器限制
有一些限制可能会导致PeopleSoft应用程序中的问题,如果有的话应该避免
可能:
•避免使用BOTH直方图并绑定在Oracle 10g中 - 这些功能的组合往往会导致Oracle 10g中的计划不稳定。 PeopleSoft在很大程度上依赖于使用绑定变量,因此避免直方图是避免这种有问题的组合的合理方法。
•避免使用VARCHAR类型的“填充”字段进行范围扫描 - 当在BETWEEN子句中使用VARCHAR字段时,CBO可以进行不准确的基数估计,最值得注意的是数据长度大,开始时 用,或者是“填充”,相同的几个字符,例如 00000123.如果这种类型的数据在实现中使用,需要额外的关注
•避免基于功能的索引 - 如前所述,使用基于功能的索引时会出现限制。 如前所述,PeopleTools开发通常不鼓励使用基于功能的索引的自由使用,除非有一个令人信服的用例,它们已知可以帮助没有负面的副作用。
有用的工具和参考
有几种工具应该是每个PeopleSoft Oracle DBA工具包的一部分。
SQLTXPLAIN (SQLT)
SQLT是一个强大的报告工具,可以收集与执行给定的SQL相关的数据。 它可以方便地将执行计划,CBO统计信息,元数据,性能统计信息,配置参数等收集到一个容易附加到SR的单个归档中。
• SQLT - Tool That Helps To Diagnose SQL Statements Performing Poorly (Doc ID 215187.1)
The pscbo_stats Package
pscbo_stats是PeopleSoft CoE和Oracle Server Tech CoE的合资企业,是实现动态抽样以及包含本文档中概述的首选设置的工具。 它为PeopleSoft应用程序提供一致,可靠的维护数据库统计的方法。 它包括在模式或表级别收集统计信息的方法,并自动实现已知易失性表的动态抽样,例如。 应用引擎和COBOL中的临时存储表。
•pscbo_stats - 在PeopleSoft Enterprise的Oracle RDBMS中改进统计信息(Doc ID
1322888.1)
AWR / StatsPack Report
AWR是捕获数据库整体行为的好工具。 在RAC环境中,请记住在尝试了解特定行为时收集所有实例的报告。 一般来说,报告涵盖的时间越长,作为诊断工具就越有用。 如果可能,尝试生成30分钟或更短的报告。 如果您对AWR工具的许可有任何疑问,请参阅以下注意事项:
• AWR Reporting - Licensing Requirements Clarification (Doc ID 1490798.1)
PSPRCSRQST Batch Trigger
存在一个KM文档,说明如何在批处理进程开始运行时在PSPRCSRQST表上安装触发器来更改会话。 此触发器对于实现会话级别更改(用于诊断或性能调整)非常有用
•创建Oracle数据库触发器以处理与PeopleSoft批次关联的会话流程(文件ID 1415642.1)
OS Watcher
OS Watcher(OSW)是UNIX shell脚本的集合,旨在收集和存档操作系统和网络指标,以帮助诊断性能问题。 OSW在服务器上作为一组后台进程运行,并定期收集OS数据,调用诸如vmstat,netstat和iostat之类的Unix实用程序。
•“操作系统观察者用户指南”(Doc ID 301137.1)
ORAchk Health Checks for the Oracle Stack (ORAchk)
ORAchk主动扫描Oracle数据库中的已知问题,简化了调查和分析哪些已知问题存在风险。 高级别报告显示系统健康风险,并具有深入了解具体问题并了解其决议的能力。
•ORAchk - Oracle配置审核工具(Doc ID 1268927.2)
How to Configure PeopleSoft for Maximum Availability (MAA)
本文介绍了PeopleSoft最大可用性架构以及所需的操作和配置实践,以最大限度地提高PeopleSoft的可用性,防止意外中断,并最大限度地减少计划维护活动的停机时间。 本文还介绍了PeopleSoft最近的增强功能如何启用更快的应用程序故障切换并报告卸载到Active Data Guard。
•E-ORA如何配置PeopleSoft以获得最大可用性(文档ID 1446793.1)
更新和建议
本文件的性质有些流动。 Oracle DBMS,PeopleSoft应用程序或PeopleTools产品中的产品发生重大变化时,将提供更新。 要提供有关文档的反馈意见并提供有关内容的建议,请发送一个条目 - 将其标题清楚地标识到PeopleTools安装/升级社区,该社区可以在此URL中找到:
https://community.oracle.com/community/support/peoplesoft/install_upgrad...