自治专用和SQL Performance Analyzer:通过良好的SQL和不良的性能

发布于:2020-12-19 18:35:37

0

98

0

SQL Oracle 数据库

越来越多的客户希望迁移到Oracle云中,其中许多人希望了解自治数据库可以为他们做什么,但他们担心性能可能会受到影响。考虑到这一点,我决定写一篇关于使用SQL Performance Analyzer(SPA)来验证从本地(或其他任何地方)迁移到运行在专用基础结构上的自治数据库时性能是否良好的博客文章。SQL Performance Analyzer(SPA)允许我们从“工作”环境中创建一组已知的SQL,在新环境中重播这些SQL,并生成比较报告。这也是在QA / Staging环境中运行的出色工具,在该环境中,可以在将补丁应用于生产之前对其进行测试。

迁移到自治数据库后,我可以随时运行SQL集,以确认自治数据库的性能是否符合预期,或者是否要对关键任务数据库进行验证的环境发生已知更改。让我向您展示如何仅需少量设置即可运行此分析。

我将使用在本地运行的12.1.0.2数据库,并将传统SAN存储作为源。我们将用于生成SQL调整集的工作负载将来自Swingbench。

{xunruicms_img_title}


目标数据库将是在OCI中的自治专用基础结构(ADB-D)上运行的19c自治数据库(ADB)。首先,我们需要处理12.1.0.2数据库并生成用于比较的SQL调整集。以特权用户身份登录到源系统,并在根据需要更新过滤后运行以下命令:

{xunruicms_img_title}


接下来,我们需要创建登台表,该登台表将用于将此SQL调优集移动到自治数据库中:

{xunruicms_img_title}


创建临时表之后,可以使用以下命令将调整集打包到其中:

{xunruicms_img_title}


快速浏览一下我们的登台表,我可以看到我们有18个独特的SQL用于测试:

{xunruicms_img_title}


一旦填充了临时表,就需要将该表移到自治数据库中。我将使用数据泵来方便移动:

{xunruicms_img_title}


在拥有可用的转储文件之后,我们需要将其上传到OCI对象存储中,以便可以将其提取到自治数据库中。

{xunruicms_img_title}


现在,我们已经完成了准备工作,现在可以移至自治数据库,并准备就绪以运行SPA。必须事先完成以下假设和工作:(1)可以访问自治专用基础架构并创建自治数据库;(2)从源系统加载模式/应用程序数据(数据与STS来自的位置越接近,我们的分析就越好)。


首先,我们需要从12c数据库中导入SQL调整集登台表。我选择使用SQL Developer数据泵导入向导(具有保存的OCI凭据以及指向对象存储中我的dmp文件的链接),但是您也可以使用mv2adb(文档ID 2463574.1)或直接impdp

{xunruicms_img_title}


导入表后,我们需要将其解压缩到SQL调整集中。

{xunruicms_img_title}


!在这两个系统上的准备工作都已完成,并且我们已经准备好根据需要运行SPA多次,以测试我们对Autonomous的升级。


我们可以使用DBMS_SQLPA.EXECUTE_ANALYSIS_TASK的CONVERT_SQLSET执行类型将SQL调优集转换为12c计时的“运行前”,生成19c计时,并使用以下命令运行比较:

{xunruicms_img_title}


分析完成后,我们可以使用以下方法生成报告并查看结果:

{xunruicms_img_title}


这是我们工作量报告的示例屏幕截图。如您所见,升级版本时我们对计划进行了一些更改。在大多数SQL上,总体性能更好!

{xunruicms_img_title}


这是一个报告示例,其中SQL有计划更改并且性能下降了:

{xunruicms_img_title}


我可以查看该报告,找到回归的SQL,然后单击SQLID,然后确切了解发生了什么更改以及更改的原因。向下钻取将报告查询之间的度量标准更改,并列出更改内容。

{xunruicms_img_title}


现在,我已经在自治数据库中拥有了STS,可以在系统发生任何更改或者想要开始测试某些自治功能时开始使用它!


最后一件事...虽然SPA是Oracle功能的附加组件,但该许可证包含在自治专用OCPU中。因此,出去那里并开始使用它。


最后一件事…如果您是Enterprise Manager 13.4+用户,则有一个名为“迁移到Oracle自治数据库”的指导工作流,它会指导您完成测试自治数据库链接上的本地SQL调优集的过程。

{xunruicms_img_title}