Oracle数据库查看一个进程是如何执行相关的实际sql语句

代码如下:

SELECT b.sql_text,sid,serial#,osuser,machine

FROM v$session a,v$sqlarea b

WHERE a.sql_address = b.address;

代码如下:

select user_name,sql_text

from v$open_cursor

where sid in

(select sid from (select sid,username,program from v$session where status='ACTIVE'));

根据SPID查询session

代码如下:

SELECT * FROM v$session WHERE paddr IN

(SELECT addr FROM v$process WHERE spid=&spid);

根据SID查询process

代码如下:

SELECT * FROM v$process WHERE addr IN

(SELECT paddr FROM v$session WHERE sid=&sid);

DBA如何查询其他用户所进行的操作

代码如下:

SELECT sql_text

FROM v$sql t1,v$session t2

WHERE t1.address = t2.sql_address

AND t2.sid = &sid;

根据process查询sql语句

代码如下:

SELECT sql_text

FROM v$sqltext a

WHERE (a.hash_value,a.address) IN (

SELECT DECODE (sql_hash_value,prev_hash_value,sql_hash_value ),

DECODE (sql_hash_value,prev_sql_addr,sql_address)

FROM v$session b

WHERE b.paddr = (SELECT addr

FROM v$process c

WHERE c.spid = '$processID'))

ORDER BY piece ASC;

其他

执行下列命令语句

代码如下:

sqlplus / as sysdba

quit;

EOF

通过ps -ef|grep sqlplus命令得到上面所执行的命令的进程id为:12345

执行下面的sql是查不到相关的信息:

select * from v$process where spid='12345';

因为这个spid字段对应的并不是我们用ps命令从系统中查询到的进程id,而是这个进程执行的当前sql的进程id,

也就是上面命令中的“create tablespace test datafile '/data/test01.dbf' size 10240M;”所对应的进程id,如果想

通过用ps命令从系统中查询到的进程id查看对应的信息,那么必须使用下面语句:

select spid,process,sql_address from v$session where process='12345'

上面sql中的process就是通过ps查看的进程id,而spid就是里面的sql语句所对应的进程id。

还可以通过上面的sql_address 查看正在执行的sql语句内容:

select sql_text from v$sqlarea s,v$session ses where s.address=ses.sql_address and ses.process='12345';

在查询 v$session 视图的时候,我们根据command字段内部表示解码每一个字段,当我们需要快速找出他们的 Oracle 系统的内部情况时非常有用。

代码如下:

select

substr(s.username,1,18) username,substr(s.program,15) program,p.spid,s.process,

decode(s.command,

0,'No Command',

1,'Create Table',

2,'Insert',

3,'Select',

6,'Update',

7,'Delete',

9,'Create Index',

15,'Alter Table',

21,'Create View',

23,'Validate Index',

35,'Alter Database',

39,'Create Tablespace',

41,'Drop Tablespace',

40,'Alter Tablespace',

53,'Drop User',

62,'Analyze Table',

63,'Analyze Index',

s.command||': Other') command

from

v$session s,

v$process p,

v$transaction t,

v$rollstat r,

v$rollname n

where s.paddr = p.addr

and s.taddr = t.addr (+)

and t.xidusn = r.usn (+)

and r.usn = n.usn (+)

order by username

sql--查看系统进程对应的信息

代码如下:

select se.saddr,se.sid,se.serial#,p.pid,se.paddr,s.sql_id,s.sql_text

from v$session se,v$process p,v$sqlarea s

where se.paddr=p.addr and se.sql_address=s.address and se.process='&1'

and se.username is not null

--查看所有的会话

代码如下:

select se.username,se.saddr,se.process,s.sql_id

from v$session se,v$sqlarea s

where se.sql_address=s.address

--查看会话对应的sql内容

@L_403_10@ 代码如下:

select se.username,v$sqlarea s

where se.sql_address=s.address and s.sql_id='&1'

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

oracle 根据spid查sql,探讨:Oracle数据库查看一个进程是如何执行相关的实际SQL语句...相关推荐

  1. oracle表空间查不到,Oracle 有的表查不到归属表空间

    --查看一个用户下有哪些表属于哪个表空间 select * from all_tables where owner = '表名大写'; 问题: 有时一些表查不到属于哪个表空间,在 all_tables ...

  2. linux查找postgre进程,postgresql数据库某一个进程占用大量CPU,问题排查详解

    postgresql某一个进程占用大量 CPU,问题排查,目前服务器cpu为4核,内存8G 1.查下是不是我们的业务SQL SELECT procpid, START, now() - START A ...

  3. java连接oracle增删改查,java连接oracle数据库实现增删改查

    package com; import java.sql.*; import java.util.Scanner; public class testOracle { static final Str ...

  4. oracle插入后查不到,Oracle表刚插入数据,但是在MyEclipse中却查不到(代码完全正确)...

    最近在做项目的时候发现了一个有趣的问题: 在plsqldeveloper中打开一个sql会话窗口,然后 插入一条数据(或者删.改操作),但是在MyEclipse中用代码却查询不到,而且数据已经插入进去 ...

  5. oracle erp 库存账龄,探讨Oracle Applications 库存及库龄的计算方法

    CREATE TABLE BITC_ITEM_INV_ATUO_AGE ( ORGANIZATION_ID    NUMBER, INVENTORY_ITEM_ID  NUMBER, SUB_INV  ...

  6. oracle用命令查表结构,Oracle查看表结构命令详解

    获取表: select table_name from user_tables; //当前用户的表 select table_name from all_tables; //所有用户的表 select ...

  7. oracle中row_number用法,深入探讨:oracle中row_number() over()分析函数用法

    row_number()over(partition by col1 order by col2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内 ...

  8. jap sql 保存_【hibernate spring data jpa】执行了save()方法 sql语句也执行了,但是数据并未插入数据库中...

    [转]用CSS代码写出的各种形状图形的方法 一共收集整理了图形20个,比较实用,同时也为了熟悉CSS的代码.整合了一下,有错误欢迎指出. 1.正方形 #square {width: 100px;hei ...

  9. springboot+Mybatis+MySql 一个update标签中执行多条update sql语句

    MySql默认是不支持这种骚操作的,但是并不代表不能实现,只需要在jdbc的配置文件中稍做配置: 配置文件:jdbc.properties driver=com.mysql.jdbc.Driver u ...

最新文章

  1. 百度吴甜宣布百度AI加速器第二期开营,要让创业者跑得更快
  2. thinkphp5 404 file_put_contents 无法打开流:权限被拒绝
  3. BZOJ 3244: [Noi2013]树的计数
  4. linux sed i 大文件,sed -i   修改链接文件注意事项   破坏了原文件
  5. javascript --- [jsonp] script标签的妙用(绕过同源限制)
  6. 区块链技术公司谈找到合适的激励机制
  7. opencv-api pyrDown
  8. Adopt Open JDK官方文档(四)基于虚拟机的编译环境
  9. linux mint 14 shurufa
  10. c 复杂的前置后置面试题_练一练!3道经典嵌入式C 面试题,答案在文末
  11. php 匹配标签内的文本内容 preg_match_all strip_tags
  12. 【11】MINST数据集的分类与效果验证
  13. 人工智能与心理学(人工智能最终方向)
  14. 项目过程管理(二)工具与流程
  15. linux redis-trib.rb,redis redis-trib.rb使用密码管理集群
  16. 宝塔面板切换PHP版本
  17. Topic modeling made just simple enough
  18. poj-3295 Tautology
  19. xxx was compiled with optimization - stepping may behave oddly; variables may not be available.
  20. 【工业设计公司】产品外观设计的重要性

热门文章

  1. class.getResourceAsStream与class.getClassLoader().getResourceAsStream区别
  2. 8080端口被占用_Spring Cloud IPv6端口问题排坑
  3. 基于 abp vNext 和 .NET Core 开发博客项目 - 博客接口实战篇(一)
  4. mysql 更改 uf_SQL经典实例(四)插入、更新和删除
  5. 修改Xmodem/Zmodem上传下载路径
  6. 安卓系列转载,有时间可以参考学习
  7. e7用什么主板_主板上这么多扩展插槽,都是干什么用的,看了不后悔
  8. javascript设计模式_Javascript 前端设计模式
  9. DNS、IP地址、子网掩码和网关
  10. 计算机科学的大部分研究是基于,计算机科学