构建SQL测试用例
对于许多与SQL相关的问题,获得可重现的测试用例可以更轻松地解决问题。从11g第2版(11.2)开始,Oracle数据库包含SQL测试用例构建器,它可以自动完成收集和复制尽可能多的有关问题及其发生环境的信息的难度和时间过程。
SQL Test Case Builder捕获与SQL相关问题有关的信息,以及发生问题的确切环境,以便您可以在单独的数据库上重现和测试问题。测试用例准备就绪后,您可以将问题上载到Oracle Support,以使支持人员能够重现问题并进行故障排除。
SQL Test Case Builder收集的信息包括正在执行的查询,表和索引定义(但不包括实际数据),PL / SQL函数,过程和包,优化器统
信息和初始化参数设置。
创建测试用例
您可以从Enterprise Manager访问SQL Test Case Builder,也可以使用DBMS_SQLDIAG包手动访问。
从Enterprise Manager访问SQL Test Case Builder
在Enterprise Manager中,只有在发生SQL事件时才能访问SQL测试用例构建器。与SQL相关的问题称为SQL事件,每个SQL事件都由事件编号标识。您可以从Enterprise Manager的Support Workbench页面访问SQL Test Case Builder。
您可以通过以下任一方式访问Support Workbench页面:
■在Enterprise Manager的“数据库主页”页面的“诊断摘要”下,
单击“活动事件”链接(指示活动事件的数量)。这将打开Support Workbench页面,其中列出了表中的事件。
■单击“相关链接”下的“顾问中心”以打开“顾问中心”页面。
接下来,单击SQL Advisors,然后单击此处转至Support Workbench以打开Support Workbench页面。
从Support Workbench页面,访问SQL Test Case Builder:
1.单击事件ID以打开特定事件的问题详细信息。
2.接下来,单击“调查和解决”部分中的Oracle支持。
3.单击“生成其他转储和测试用例”。
4.对于特定事件,请单击“转到任务”列中的图标以运行SQL测试用例生成器。
SQL Test Case Builder的输出是一个SQL脚本,其中包含重新创建所有必需对象和环境所需的命令。 SQL Test Case Builder将文件存储在以下位置,其中inc_num表示事件编号,run_num表示运行编号:
$ADR_HOME/incident/incdir_inc_num/SQLTCB_run num
例如,有效的输出文件名可能如下所示:
$ORACLE_HOME/log/diag/rdbms/dbsa/dbsa/incident/incdir_2657/SQLTCB_1
使用DBMS_SQLDIAG访问SQL测试用例构建器
您还可以使用DBMS_SQLDIAG包手动调用SQL测试用例生成器。 该软件包由SQL Test Case Builder的各种子程序组成,其中一些子程序列于表16-1中。
有关此程序包及其所有过程和参数的详细信息,请参阅Oracle Database PL / SQL程序包和类型参考。