创建SQL测试用例
为了创建一个SQL测试用例,必须输出该SQL语句以及关于该语句的一些有用信息。
-- 以sysdba 登陆,创建一个目录存放测试用例 create or replace directory test_dir1 as ''; grant read,write on test_dir1 to sh; grant dba to sh; conn sh/sh -- 报错的SQL selct * from my_mv where ....; -- 使用 export_sql_testcase 存储过程来输出数据 set serveroutput on declare mycase clob; begin dbms_sqldiag.export_sql_testcase( directory =>'test_dir1', sql_text =>'selct * from my_mv where ....', user_name =>'SH', exportData => TRUE, testcasse =>mycase ); end; /
导入步骤
-- 以sysdba 登陆,创建一个目录存放测试用例 create or replace directory test_dir2 as ''; grant read,write on test_dir2 to test; grant dba to test; conn test/test -- 使用 import_sql_testcase 存储过程来输出数据 set serveroutput on begin dbms_sqldiag.import_sql_testcase( directory =>'test_dir2', filename =>'oratcb1_sssss.xml', importData => TRUE ); end; /
用户 TEST 现在已经拥有了执行想要分析的SQL语句的所有对象。可以通过提交原始的 select 语句来验证这一点。它会给出与在SH下执行该语句相同的输出。
Oracle 将SQL测试用例创建为一个脚本,包含重建必要的数据库对象的语句,以及相关的运行时信息,如统计信息,从而重现错误。测试用例创建过程中捕获和导出的各种不同类型的信息:
- 存在问题的语句的SQL文本
- 表数据--可选的,可以导出部分采样数据或完成的数据
- 执行计划
- 优化器统计信息
- PL/SQL函数、过程和包
- 绑定变量
- 用户权限
- SQL配置文件
- 语句中所有对象的元对象
- 动态采样结果
- 运行时信息,例如并行度
export_sql_testcase 过程各属性的含义
DIRECTORY: 想要用来存放测试用例文件的目录
SQL_TEXT:实际报错的SQL
TESTCASE:测试用例的名称
EXPORTDATA:默认不导出数据,TRUE为导出。还可以通过采样百分比指定一个值来限制导出数据的量。默认为 100
测试用例生成器将会自动导出PL/SQL包规范,而不会自动导出包体。但是可以指定让TCB将包体一起导出。导出过程会在所指定的目录下创建一些列的文件。在这些文件中,oratcb1_xxxmain.xml 包含测试用例的元数据

浙公网安备 33010602011771号