linux中查看oracle进程在做什么,是否sql引起了锁 kill掉进程

简介: ps -l 查看系统进程    PID 每个进程的ID。  PPID 每个进程的父进程ID。  UID 每个进程所有者的UID 。  USER 每个进程所有者的用户名。

ps -l 查看系统进程
    PID 每个进程的ID。
  PPID 每个进程的父进程ID。
  UID 每个进程所有者的UID 。
  USER 每个进程所有者的用户名。
  PRI 每个进程的优先级别。
  NI 该进程的优先级值。
  SIZE 该进程的代码大小加上数据大小再加上堆栈空间大小的总数。单位是KB。
  TSIZE 该进程的代码大小。对于内核进程这是一个很奇怪的值。
  DSIZE 数据和堆栈的大小。
  TRS 文本驻留大小。
  D 被标记为“不干净”的页项目。
  LIB 使用的库页的大小。对于ELF进程没有作用。
  RSS 该进程占用的物理内存的总数量,单位是KB。
  SHARE 该进程使用共享内存的数量。
  STAT 该进程的状态。其中S代表休眠状态;D代表不可中断的休眠状态;R代表运行状态;Z代表僵死状态;

T代表停止或跟踪状态。
  TIME 该进程自启动以来所占用的总CPU时间。如果进入的是累计模式,那么该时间还包括这个进程子进程所占用的时间。且标题会变成CTIME。根据OS进程号,应该可以查到它正在执行什么SQL语句.
-- 查到oracle OS进程的sid编号:
select ses.sid from v$session ses,v$process pro where pro.spid=&spid and ses.paddr=pro.addr;
-- 查到此sid连接用户正在执行的SQL语句:
select sql_text from v$sqltext_with_newlines where (hash_value,address)
in (select sql_hash_value,sql_address from v$session where sid=&sid) order by address,piece;
查看oracle的锁是sql语句引起的

查看引起锁的session_id
 sync4j启动的进程

select * from v$locked_object where os_user_name='sync4j'
找到seesion_ID=139
找到引起的sql语句
SELECT a.username,
a.machine,
a.program,
a.sid,
a.serial#,
a.status,
c.piece,
c.sql_text
FROM v$session a,
v$sqltext c
WHERE a.sid = 139
and a.sql_address=c.address(+)
ORDER BY c.piece

v$sqltext就是引起锁的sql语句了

alter system kill session 'sid,serial#'  杀掉进程
  sid,serial#在v$session中可以查到

==================================

1.首先通过v$session_wait确定library cache pin等待事件的会话

2.确定要pin的对象:
select kglnaobj
from sys.x$kglob
where inst_id = userenv('instance')
and kglhdadr = v$session_wait.P1RAW;

3.确定阻塞的会话:
select a.sid,a.serial#,a.username,a.paddr,a.logon_time,
a.sql_hash_value,b.kglpnmod
from v$session a,sys.x$kglpn b
where a.saddr = b.kglpnuse
and b.inst_id= userenv('instance')
and b.kglpnreq = 0
and b.kglpnmod not in (0,1)
and b.kglpnhdl = v$session_wait.P1RAW;

确定哪些会话正在使用某个包/过程/函数/视图,如果有的话,这时就不要进行drop,complie之类的操作了
select c.sid
from sys.x$lglob a,sys.x$kglpn b,v$session c
where a.kglnaobj=大写的你要进行操作的包/过程/函数/视图
and a.kglhdadr=b.kglpnhdl
and b.kglpnuse=c.saddr;

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/liuya1985liuya/archive/2008/01/07/2028994.aspx

目录
相关文章
|
7天前
|
SQL 存储 Oracle
Oracle的PL/SQL定义变量和常量:数据的稳定与灵动
【4月更文挑战第19天】在Oracle PL/SQL中,变量和常量扮演着数据存储的关键角色。变量是可变的“魔术盒”,用于存储程序运行时的动态数据,通过`DECLARE`定义,可在循环和条件判断中体现其灵活性。常量则是不可变的“固定牌”,一旦设定值便保持不变,用`CONSTANT`声明,提供程序稳定性和易维护性。通过 `%TYPE`、`NOT NULL`等特性,可以更高效地管理和控制变量与常量,提升代码质量。善用两者,能优化PL/SQL程序的结构和性能。
|
1月前
|
存储 关系型数据库 MySQL
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
178 0
|
1月前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 向进程发送信号 kill命令 使用指南
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 向进程发送信号 kill命令 使用指南
31 0
|
3月前
|
SQL Oracle 关系型数据库
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作
89 0
|
3月前
|
Shell Linux 开发工具
linux shell脚本利用 kill -0 检查进程是否存在
linux shell脚本利用 kill -0 检查进程是否存在
59 1
|
7天前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL游标属性:数据的“导航仪”与“仪表盘”
【4月更文挑战第19天】Oracle PL/SQL游标属性如同车辆的导航仪和仪表盘,提供丰富信息和控制。 `%FOUND`和`%NOTFOUND`指示数据读取状态,`%ROWCOUNT`记录处理行数,`%ISOPEN`显示游标状态。还有`%BULK_ROWCOUNT`和`%BULK_EXCEPTIONS`增强处理灵活性。通过实例展示了如何在数据处理中利用这些属性监控和控制流程,提高效率和准确性。掌握游标属性是提升数据处理能力的关键。
|
7天前
|
SQL Oracle 安全
Oracle的PL/SQL循环语句:数据的“旋转木马”与“无限之旅”
【4月更文挑战第19天】Oracle PL/SQL中的循环语句(LOOP、EXIT WHEN、FOR、WHILE)是处理数据的关键工具,用于批量操作、报表生成和复杂业务逻辑。LOOP提供无限循环,可通过EXIT WHEN设定退出条件;FOR循环适用于固定次数迭代,WHILE循环基于条件判断执行。有效使用循环能提高效率,但需注意避免无限循环和优化大数据处理性能。掌握循环语句,将使数据处理更加高效和便捷。
|
7天前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL条件控制:数据的“红绿灯”与“分岔路”
【4月更文挑战第19天】在Oracle PL/SQL中,IF语句与CASE语句扮演着数据流程控制的关键角色。IF语句如红绿灯,依据条件决定程序执行路径;ELSE和ELSIF提供多分支逻辑。CASE语句则是分岔路,按表达式值选择执行路径。这些条件控制语句在数据验证、错误处理和业务逻辑中不可或缺,通过巧妙运用能实现高效程序逻辑,保障数据正确流转,支持企业业务发展。理解并熟练掌握这些语句的使用是成为合格数据管理员的重要一环。
|
7天前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL表达式:数据的魔法公式
【4月更文挑战第19天】探索Oracle PL/SQL表达式,体验数据的魔法公式。表达式结合常量、变量、运算符和函数,用于数据运算与转换。算术运算符处理数值计算,比较运算符执行数据比较,内置函数如TO_CHAR、ROUND和SUBSTR提供多样化操作。条件表达式如CASE和NULLIF实现灵活逻辑判断。广泛应用于SQL查询和PL/SQL程序,助你驾驭数据,揭示其背后的规律与秘密,成为数据魔法师。
|
1月前
|
Linux API C++
【Linux C/C++ 线程同步 】Linux API 读写锁的编程使用
【Linux C/C++ 线程同步 】Linux API 读写锁的编程使用
21 1