查看: 7088|回复: 25

[SQL] 【讨论】如何获取sql语句

[复制链接]
认证徽章
论坛徽章:
11
优秀写手
日期:2014-12-31 06:00:15秀才
日期:2015-08-17 13:13:32秀才
日期:2015-08-06 13:55:21秀才
日期:2015-08-06 10:47:082014数据库大会纪念章
日期:2015-03-18 10:16:212013数据库大会纪念章
日期:2015-03-18 10:16:212012数据库大会纪念章
日期:2015-03-18 10:16:212011数据库大会纪念章
日期:2015-03-18 10:16:212010数据库技术大会纪念徽章
日期:2015-03-18 10:16:21知识
日期:2015-03-10 11:53:27
发表于 2014-12-24 16:18 | 显示全部楼层 |阅读模式
在oracle数据库中,如何能够找到如’alter user %'样子的语句?
认证徽章
论坛徽章:
11
优秀写手
日期:2014-12-31 06:00:15秀才
日期:2015-08-17 13:13:32秀才
日期:2015-08-06 13:55:21秀才
日期:2015-08-06 10:47:082014数据库大会纪念章
日期:2015-03-18 10:16:212013数据库大会纪念章
日期:2015-03-18 10:16:212012数据库大会纪念章
日期:2015-03-18 10:16:212011数据库大会纪念章
日期:2015-03-18 10:16:212010数据库技术大会纪念徽章
日期:2015-03-18 10:16:21知识
日期:2015-03-10 11:53:27
发表于 2014-12-24 17:00 | 显示全部楼层
我的意思是sql语句执行过的,在数据库中怎么去抓取出来?

使用道具 举报

回复
认证徽章
论坛徽章:
32
懒羊羊
日期:2015-03-25 16:16:10ITPUB14周年纪念章
日期:2015-10-26 17:24:11射手座
日期:2015-09-23 08:53:55喜羊羊
日期:2015-06-15 13:04:17暖羊羊
日期:2015-05-21 16:12:35沸羊羊
日期:2015-05-07 17:25:26暖羊羊
日期:2015-05-21 16:12:35暖羊羊
日期:2015-05-21 16:12:35慢羊羊
日期:2015-04-21 17:07:36慢羊羊
日期:2015-03-25 09:38:59
发表于 2014-12-24 17:29 | 显示全部楼层
v$sqlarea  v$sql

使用道具 举报

回复
认证徽章
论坛徽章:
40
2014年新春福章
日期:2014-02-18 16:43:09喜羊羊
日期:2015-05-18 16:24:25慢羊羊
日期:2015-06-12 13:08:22暖羊羊
日期:2015-07-02 16:06:20暖羊羊
日期:2015-07-06 16:28:55狮子座
日期:2015-07-29 17:14:43摩羯座
日期:2015-09-02 13:58:47白羊座
日期:2015-09-08 10:39:06天枰座
日期:2015-09-17 21:41:53摩羯座
日期:2015-10-29 21:07:02
发表于 2014-12-24 18:02 | 显示全部楼层
wcg57 发表于 2014-12-24 17:00
我的意思是sql语句执行过的,在数据库中怎么去抓取出来?

补充3楼回答:可以再加上 dba_hist_sqltext

使用道具 举报

回复
认证徽章
论坛徽章:
11
优秀写手
日期:2014-12-31 06:00:15秀才
日期:2015-08-17 13:13:32秀才
日期:2015-08-06 13:55:21秀才
日期:2015-08-06 10:47:082014数据库大会纪念章
日期:2015-03-18 10:16:212013数据库大会纪念章
日期:2015-03-18 10:16:212012数据库大会纪念章
日期:2015-03-18 10:16:212011数据库大会纪念章
日期:2015-03-18 10:16:212010数据库技术大会纪念徽章
日期:2015-03-18 10:16:21知识
日期:2015-03-10 11:53:27
发表于 2014-12-25 09:33 | 显示全部楼层
iyee_tu 发表于 2014-12-24 17:29
v$sqlarea  v$sql

这2个在数据库繁忙的时候容易被覆盖掉。怎么保证每个sql语句都能够抓取到呢?而且经测试,alter user xxx经测试,在这2个视图中没有做记录。

使用道具 举报

回复
认证徽章
论坛徽章:
11
优秀写手
日期:2014-12-31 06:00:15秀才
日期:2015-08-17 13:13:32秀才
日期:2015-08-06 13:55:21秀才
日期:2015-08-06 10:47:082014数据库大会纪念章
日期:2015-03-18 10:16:212013数据库大会纪念章
日期:2015-03-18 10:16:212012数据库大会纪念章
日期:2015-03-18 10:16:212011数据库大会纪念章
日期:2015-03-18 10:16:212010数据库技术大会纪念徽章
日期:2015-03-18 10:16:21知识
日期:2015-03-10 11:53:27
发表于 2014-12-25 09:34 | 显示全部楼层
bfc99 发表于 2014-12-24 18:02
补充3楼回答:可以再加上 dba_hist_sqltext

同样也遇到覆盖的情况。

使用道具 举报

回复
认证徽章
论坛徽章:
40
2014年新春福章
日期:2014-02-18 16:43:09喜羊羊
日期:2015-05-18 16:24:25慢羊羊
日期:2015-06-12 13:08:22暖羊羊
日期:2015-07-02 16:06:20暖羊羊
日期:2015-07-06 16:28:55狮子座
日期:2015-07-29 17:14:43摩羯座
日期:2015-09-02 13:58:47白羊座
日期:2015-09-08 10:39:06天枰座
日期:2015-09-17 21:41:53摩羯座
日期:2015-10-29 21:07:02
发表于 2014-12-25 09:56 | 显示全部楼层
wcg57 发表于 2014-12-25 09:34
同样也遇到覆盖的情况。

v$sql 和v$sqlarea 中会存放任何还在内存中的SQL语句,但一旦被交换出内存,则就查不到了。
dba_hist_sqltext 中存放的是采样于 v$sql中的历史数据。由于是采样,所以,不会是所有的SQL,而且该视图中,也只是存储一定时期内的,而不是全部的。

使用道具 举报

回复
认证徽章
论坛徽章:
11
优秀写手
日期:2014-12-31 06:00:15秀才
日期:2015-08-17 13:13:32秀才
日期:2015-08-06 13:55:21秀才
日期:2015-08-06 10:47:082014数据库大会纪念章
日期:2015-03-18 10:16:212013数据库大会纪念章
日期:2015-03-18 10:16:212012数据库大会纪念章
日期:2015-03-18 10:16:212011数据库大会纪念章
日期:2015-03-18 10:16:212010数据库技术大会纪念徽章
日期:2015-03-18 10:16:21知识
日期:2015-03-10 11:53:27
发表于 2014-12-25 10:50 | 显示全部楼层
bfc99 发表于 2014-12-25 09:56
v$sql 和v$sqlarea 中会存放任何还在内存中的SQL语句,但一旦被交换出内存,则就查不到了。
dba_hist_sq ...

所以这个还是不能取到所有需要的sql语句。而且我很奇怪的是alter user xxx,这个语句在v$sql中根本不存在。我在自己的测试环境试过了。

使用道具 举报

回复
认证徽章
论坛徽章:
40
2014年新春福章
日期:2014-02-18 16:43:09喜羊羊
日期:2015-05-18 16:24:25慢羊羊
日期:2015-06-12 13:08:22暖羊羊
日期:2015-07-02 16:06:20暖羊羊
日期:2015-07-06 16:28:55狮子座
日期:2015-07-29 17:14:43摩羯座
日期:2015-09-02 13:58:47白羊座
日期:2015-09-08 10:39:06天枰座
日期:2015-09-17 21:41:53摩羯座
日期:2015-10-29 21:07:02
发表于 2014-12-25 11:11 | 显示全部楼层
wcg57 发表于 2014-12-25 10:50
所以这个还是不能取到所有需要的sql语句。而且我很奇怪的是alter user xxx,这个语句在v$sql中根本不存在 ...

DDL语句从来不会共享使用的,即每次执行都会有硬解析的过程,所以,DDL语句一旦执行完毕,就会从SGA中清除,即执行后就会从v$sql等视图中清除。

使用道具 举报

回复
认证徽章
论坛徽章:
11
优秀写手
日期:2014-12-31 06:00:15秀才
日期:2015-08-17 13:13:32秀才
日期:2015-08-06 13:55:21秀才
日期:2015-08-06 10:47:082014数据库大会纪念章
日期:2015-03-18 10:16:212013数据库大会纪念章
日期:2015-03-18 10:16:212012数据库大会纪念章
日期:2015-03-18 10:16:212011数据库大会纪念章
日期:2015-03-18 10:16:212010数据库技术大会纪念徽章
日期:2015-03-18 10:16:21知识
日期:2015-03-10 11:53:27
发表于 2014-12-25 15:10 | 显示全部楼层
bfc99 发表于 2014-12-25 11:11
DDL语句从来不会共享使用的,即每次执行都会有硬解析的过程,所以,DDL语句一旦执行完毕,就会从SGA中清除 ...

嗯,非常感谢解惑了哈~~那看来我这个问题是无解了。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表