如何抓到jdbc连接的所执行的sql语句
我们通常在定位数据库锁问题时,通常希望找到哪个进程发出了哪个语句,锁住了哪张表,一般我们通过查v$lock,然后找到sid,再到v$sesion里找到这个进程的hash_value或pre_hash_value,然后根据hash_value定位到具体的语句。
可是,我们发现,通过JDBC连接上来的进程,它的hash_value是0,所以我们就无法定位这个进程执行的语句了,不过在oracle 10g之后,在v$session里面多了个sql_id字段,我们可以通过这个字段来查具体语句。在9i及之前的版本就没办法了。开了个oracle服务请求,oracle工程师也没有给出答案。提供一下语句:
10g之后,可以:
col sess format a15;
SELECT DECODE(request,0,'Holder: ','Waiter: ')||sid sess,
id1, id2, lmode, request, type,block,ctime
from V$LOCK
WHERE (id1, id2, type) IN
(SELECT id1, id2, type from V$LOCK WHERE request>0)
ORDER BY id1, request;
/
select sql_text from v$sqlarea where sql_id in
(select sql_id from v$session where sid=&1);
相关文档:
SQL Server 数据库管理常用的SQL和T-SQL语句
1. 查看数据库的版本
select @@version
2. 查看数据库所在机器操作系统参数
exec master..xp_msver
3. 查看数据库启动的参数
sp_configure
4. 查看数据库启动时间
select convert(varchar(30),login_time,120) from master..sysprocesses where spid=1
查看数 ......
搞了很久。。终于发现原来是权限问题。。
2行命令搞定
grant all privileges on rogue.* to admin@localhost identified by 'admin' with grant option
grant all privileges on rogue.* to admin@'%' identified by 'admin' with grant option
经典了。。。
魔力私服网页端搞定咯~~ ......
通配符 说明
_ 与任意单字符匹配
% 与包含一个或多个字符的字符串匹配
[ ] 与特定范围(例如,[a-f])或特定集(例如,[abcdef])中的任意单字符匹配。
[^] 与特定范围(例如,[^a-f])或特定集(例如,[^abcdef])之外的任意单字符匹配。
......
PL/SQL-FOR UPDATE 与 FOR UPDATE OF的区别
url:http://hi.baidu.com/1413/blog/item/a521251f7e5993c4a686696b.html
数据库 oracle for update of 和 for update区别
select * from TTable1 for update 锁定表的所有行,只能读不能写
2 select * from TTable1 wher ......
哎,还是上周的事情了,csdn的博客最近咋老是打不开呢!
基本语句:Alter table 表名 drop Column 字段名
另单单是这样是不行滴,还要删除对应的关系滴。下面就把查找到的那篇文章引用下吧!
原文地址:http://hi.baidu.com/lisky119/blog/item/3c348c082573949c0a7b82d1.html
SET ANSI_NULLS ON
GO
SET QUOTED_IDENT ......