Oracle 执行语句历史查询—测试和实施人员必备技能
2012-02-08 01:15
387 查看
Oracle 执行语句历史查询—测试和实施人员必备技能
author:润明 2012-2-7 QQ:226399587 http://blog.csdn.net/runming918 今晚真的有点无聊,工作上好几天都没啥事情了,但还是不得不每天在办公室‘装忙’耗十三四个小时;坐得真抓狂。还是找点事情做吧。
这个项目做下来,我发现现场的测试人员普遍都不会前台抓SQL(就是指点击一下前台界面的操作,然后去数据库追查刚刚这个动作 操作了哪些表)。后来和做测试的几个其它朋友聊天,也基本不知道这几个视图,感觉很诧异,这个应该是每一个测试人员,以及实施人员(没参与项目数据库开发,不熟悉每个业务具体操作那些表)常用的技能。因此决定总结下,把这小技巧给大家推荐下。
其实很简单,就两个oracle 自带的视图:v$sql_bind_capture 和 v$sql.
1、先点击下系统前台操作,然后去数据库查询
2、 通个这个查询我们可以知道,刚刚数据库进行操作的SQL(如果语句很长就得看SQL_FULLTEXT这个字段),如果你还想看详细参数,就得继续了。
Value_string就是你传进去执行的变量值。很不幸的告诉你时间这样显示不了,但我们有办法啊,继续下面的查询。
具体我就不解释了。
关于v$sql_bind_capture视图大家得注意下,由于数据库参数配置的不同,这个保存绑定变量的值刷新时间是不同的,隐含参数 _cursor_bind_capture_interval,这个就是控制绑定变量抓取频率的参数,默认值是900(15min)。修改参数值很小,可以快速获取绑定变量的值: alter system set "_cursor_bind_capture_interval"=5 scope=both; 不过这个得根据你数据库的具体情况来设置了。如果你抓取到的参数老是没变化,你就要注意下这个抓取刷新的频率是多高了。
select * from v$parameter t where t.name like '%bind%';
还有一点也需要注意,如果你的数据库是RAC多点集群的话,v$sql_bind_capture这个表的数据并没有存到共享存储区,它是在被你链接的单点数据库上面,所以有时候你可能查不到,这时就得单点登录一个个单点数据库去试运气了。
当你刚刚接触别人的二手代码,或作为一个测试人员、实施人员、数据割接人员,不知道每个业务具体操作的是哪些表时,这两视图这样查询是不是很爽。哈哈
author:润明 2012-2-7 QQ:226399587 http://blog.csdn.net/runming918 今晚真的有点无聊,工作上好几天都没啥事情了,但还是不得不每天在办公室‘装忙’耗十三四个小时;坐得真抓狂。还是找点事情做吧。
这个项目做下来,我发现现场的测试人员普遍都不会前台抓SQL(就是指点击一下前台界面的操作,然后去数据库追查刚刚这个动作 操作了哪些表)。后来和做测试的几个其它朋友聊天,也基本不知道这几个视图,感觉很诧异,这个应该是每一个测试人员,以及实施人员(没参与项目数据库开发,不熟悉每个业务具体操作那些表)常用的技能。因此决定总结下,把这小技巧给大家推荐下。
其实很简单,就两个oracle 自带的视图:v$sql_bind_capture 和 v$sql.
1、先点击下系统前台操作,然后去数据库查询
select distinct sql_text, sql_id, address from v$sql where module = 'JDBC Thin Client' --数据库的链接方式 and last_active_time>sysdate-0.0005 --很短的一个时间,不然太多不好区分 and parsing_schema_name like 'INVENTORY%'; --数据库用户名 |
select t.NAME, t.VALUE_STRING, t.* from gv$sql_bind_capture t where t.address = '0700000916BF5110'; |
select t.value_string, t.NAME, t.datatype_string, DUMP(t.value_anydata), ANYDATA.accesstimestamp(t.value_anydata) from gv$sql_bind_capture t where address = '000000015E3964A8'; |
关于v$sql_bind_capture视图大家得注意下,由于数据库参数配置的不同,这个保存绑定变量的值刷新时间是不同的,隐含参数 _cursor_bind_capture_interval,这个就是控制绑定变量抓取频率的参数,默认值是900(15min)。修改参数值很小,可以快速获取绑定变量的值: alter system set "_cursor_bind_capture_interval"=5 scope=both; 不过这个得根据你数据库的具体情况来设置了。如果你抓取到的参数老是没变化,你就要注意下这个抓取刷新的频率是多高了。
select * from v$parameter t where t.name like '%bind%';
还有一点也需要注意,如果你的数据库是RAC多点集群的话,v$sql_bind_capture这个表的数据并没有存到共享存储区,它是在被你链接的单点数据库上面,所以有时候你可能查不到,这时就得单点登录一个个单点数据库去试运气了。
当你刚刚接触别人的二手代码,或作为一个测试人员、实施人员、数据割接人员,不知道每个业务具体操作的是哪些表时,这两视图这样查询是不是很爽。哈哈
相关文章推荐
- 这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询。这些是所有 Oracle 开发者都必备的技能,所以快快收藏吧!
- ***测试人员必备技能:实施***测试的HTTP方法
- Oracle- plsql developer如何查询SQL语句执行历史记录
- 查询Oracle正在执行和执行过的SQL语句
- Oracle 历史SQL语句执行计划的对比与分析
- 45 个非常有用的 Oracle 查询语句(未测试)
- oracle查看执行最慢与查询次数最多的sql语句
- ETL系列:开发人员常用oracle的查询语句
- oracle查看执行最慢与查询次数最多的sql语句
- ORACLE查询某个sqlid 执行历史时间
- oracle 执行一条查询语句,把数据加载到页面或者前台发生的事情
- 查询Oracle正在执行的sql语句
- Oracle执行SQL查询语句的步骤
- 查看oracle用户执行的sql语句历史记录
- plsql developer如何查询SQL语句执行历史记录
- plsql developer如何查询SQL语句执行历史记录(转)
- 查询Oracle性能差的、正在执行或执行过的SQL语句
- 查询Oracle正在执行的sql语句
- 查询Oracle正在执行和执行过的SQL语句
- 对于Oracle中分页排序查询语句执行效率的比较分析