如何抓到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自带的数据库备份计划
一:基本思路
1:要实现异地备份,必须使用域用户帐号来启动SQL Server服务以及SQL Server Agent服务,因为本地系统帐户无法访问网络。
2:在异地机器中建立一个与SQL Server服务器中启动SQL Server服务的域用户帐号同名帐号,且密码保持相同。在异地机器中建立一个共享文件夹,并设置合 ......
select * from orders where month(orderdate)= (select month(orderdate) from orders where orderid=10248)
1.一个月第一天的
Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
2.本周的星期一
Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
3.一年的第一天
Select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
......
SQL存储过程入门
一、SQL存储过程的概念,优点及语法
整理在学习程序过程之前,先了解下什么是存储过程?为什么要用存储过程,他有那些优点
定义:将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute ......
今天抽出一点时间解释几个关于SQL日志的概念,他们也经常使初学者望而止步,反正计算机的术语都是很抽象的,所以第一感觉就是头疼,然后然后几次后就没感觉了.以下有些是从书上摘抄的,有的是从网上找的算是借花献佛吧!!
物理日志文件:
这个比较好理解,实实在在的东西,数据库目录下面的.ldf文件 ......