天天看点

dbms_sqldiag 创建sql测试用例

sys@orcl> conn /as sysdba

已连接。

sys@orcl> grant read,write on directory exp_dir to u2;

授权成功。

sys@orcl> grant read,write on directory exp_dir to u1;

sys@orcl> grant dba to u2;

sys@orcl> grant dba to u1;

  directory目录前面已经创建了,授权给用户u1、u2。而且用户u1、u2需要拥有dba权限。

sys@orcl> conn u2/u2

u2@orcl> select count(*) from t;

count(*)

----------

1

u2@orcl> conn u1/u1

u1@orcl> select count(*) from t;

select count(*) from t

*

第 1 行出现错误:

ora-00942: 表或视图不存在

  可以看见u1下面是不可以执行t表的查询的,现在我们就把u2下面的这个sql用例导入到u1用户下。

导出:

u2@orcl> conn u2/u2

u2@orcl> declare mycase clob;

2  begin

dbms_sqldiag.export_sql_testcase(directory => 'exp_dir',sql_text => 'select count(*) from t',user_name => 'u2',exportdata => true,testcase => mycase);

4  end;

5  /

pl/sql 过程已成功完成。

 可以看见directory目录多了很多东西:

[root@linux exp_dir]# ll

总计 248

-rw-r----- 1 oracle oinstall 196608 11-08 21:49 oratcb1_007d001b0001dpexp.dmp

-rw-r--r-- 1 oracle oinstall    969 11-08 21:49 oratcb1_007d001b0001dpexp.log

-rw-r--r-- 1 oracle oinstall   4563 11-08 21:48 oratcb1_007d001b0001dpexp.sql

-rw-r--r-- 1 oracle oinstall   3773 11-08 21:49 oratcb1_007d001b0001dpimp.sql

-rw-r--r-- 1 oracle oinstall   1763 11-08 21:49 oratcb1_007d001b0001main.xml

-rw-r--r-- 1 oracle oinstall    239 11-08 21:48 oratcb1_007d001b0001ol.xml

-rw-r--r-- 1 oracle oinstall    173 11-08 21:48 oratcb1_007d001b0001sql.xml

-rw-r--r-- 1 oracle oinstall    388 11-08 21:49 oratcb1_007d001b0001ssimp.sql

-rw-r--r-- 1 oracle oinstall    422 11-08 21:49 oratcb1_007d001b0001xplf.sql

-rw-r--r-- 1 oracle oinstall    654 11-08 21:49 oratcb1_007d001b0001xplo.sql

-rw-r--r-- 1 oracle oinstall    399 11-08 21:49 oratcb1_007d001b0001xpls.sql

-rw-r--r-- 1 oracle oinstall   1891 11-08 21:49 oratcb1_007d001b0001xpl.txt

-rw-r--r-- 1 oracle oinstall   2316 11-08 21:48 readme.txt

  导入:

u1@orcl> exec dbms_sqldiag.import_sql_testcase(directory => 'exp_dir',filename => 'oratcb1_007d001b0001main.xml',importdata => true);

u1@orcl> select count(*) from t

2  ;

u1@orcl> select * from t;

a

u1@orcl> select * from tab;

tname                          tabtype  clusterid

------------------------------ ------- ----------

t                              table

最新内容请见作者的github页:http://qaseven.github.io/