Oracle 锁表查询及解锁kill进程

简介: 1. 查看被锁定的表SELECT OBJECT_NAME, MACHINE, S.SID, S.

1. 查看被锁定的表

SELECT OBJECT_NAME, MACHINE, S.SID, S.SERIAL#,l.LOCKED_MODE,l.OS_USER_NAME
  FROM GV$LOCKED_OBJECT L, DBA_OBJECTS O, GV$SESSION S
 WHERE L.OBJECT_ID  = O.OBJECT_ID
   AND L.SESSION_ID = S.SID;

2.解锁kill进程

--alter system kill session 'sid, serial#'; 
--ALTER system kill session '23, 1647'; 

3. 锁定类型:
0:none 
1:null 空 
2:Row-S 行共享(RS):共享表锁 
3:Row-X 行专用(RX):用于行的修改 
4:Share 共享锁(S):阻止其他DML操作 
5:S/Row-X 共享行专用(SRX):阻止其他事务操作 
6:exclusive 专用(X):独立访问使用
数字越大锁级别越高, 影响的操作越多。


如果DML没有提交情况下,另一个session提交针对同一资源的DLL,系统报错。


如果DML没有提交情况下,另一个session提交针对同一资源的DML,第二个session会hang住,等待第一个session。


死锁:


系统会系统自动处理,处理方式提出形成死锁的人,错误是ORA-00060


命令行模式处理行级锁


查看锁:


select sid,lock_id from dba_locks where blocking_others='Blocking';


sid列:占用资源sid


select sid from v$lock where type='TX';


block列>0:占用资源sid


block列=0:等待资源sid


SELECT * FROM V$SESSION WHERE BLOCKING_SESSION IS NOT NULL;


sid列:等待资源sid


blocking_session列:占用资源sid


oracle级处理:


杀掉占用资源的session


1. 查询sid和serial#


select sid, serial#
  from v$session
 where sid = (select blocking_session
                from v$session
               where blocking_session is not null)


2. 杀进程


alter system kill session 'sid, serial#' immediate;


 杀掉等待资源的session


1. 查询sid和serial#


select sid, serial# from v$session where blocking_session is not null;


2. 杀进程


alter system kill session 'sid, serial#' immediate;


系统级处理:


1. 查询系统pid


select s.sid, p.spid
  from v$session s, v$process p
 where s.paddr = p.addr
   and s.sid = 146
2. 杀进程


kill -9 pid

目录
相关文章
|
10天前
|
SQL 关系型数据库 MySQL
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
25 1
|
2月前
|
Linux Shell
6-9|linux查询现在运行的进程
6-9|linux查询现在运行的进程
|
3月前
|
jenkins Java Shell
解决jenkins结束后kill掉衍生进程
解决jenkins结束后kill掉衍生进程
|
3月前
|
网络协议
Mac根据端口查询进程id的命令
这篇文章介绍了在Mac操作系统上如何使用两种命令来查询监听特定端口的进程ID。第一种方法是使用`netstat -anp tcp -v | grep 端口号`,例如`netstat -anp tcp -v | grep 80`,这将列出所有使用端口80的TCP连接及其相关信息。第二种方法是使用`lsof -P -n -i:端口号`,例如`lsof -P -n -i:8080`,这将显示使用指定端口的进程列表,包括进程ID、用户、文件描述符等信息。文章通过示例展示了如何使用这些命令,并提供了输出结果的截图。
273 2
|
4月前
|
SQL 自然语言处理 网络协议
【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
TCP(Transmission Control Protocol)连接是互联网上最常用的一种面向连接、可靠的、基于字节流的传输层通信协议。建立TCP连接需要经过著名的“三次握手”过程: 1. SYN(同步序列编号):客户端发送一个SYN包给服务器,并进入SYN_SEND状态,等待服务器确认。 2. SYN-ACK:服务器收到SYN包后,回应一个SYN-ACK(SYN+ACKnowledgment)包,告诉客户端其接收到了请求,并同意建立连接,此时服务器进入SYN_RECV状态。 3. ACK(确认字符):客户端收到服务器的SYN-ACK包后,发送一个ACK包给服务器,确认收到了服务器的确
187 1
|
5月前
|
Linux 数据处理
深入了解Linux命令kill:终止进程的艺术
**Linux的`kill`命令详解:高效管理进程的工具** `kill`命令在Linux中用于向进程发送信号,如SIGTERM(默认)和SIGKILL,以终止或影响进程行为。它通过进程ID(PID)操作,支持多种信号和选项,如`-l`列出信号,`-9`强制杀进程。例如,`kill 1234`发送TERM信号,`kill -9 1234`发送KILL信号。使用时注意,SIGKILL是不可忽视的,可能导致数据丢失。配合`pgrep`和`pkill`能更灵活管理进程。了解进程依赖和使用其他命令如`ps`和`top`可优化系统资源管理。
|
6月前
|
存储 Web App开发 运维
|
6月前
|
开发者 Python
在Python中查询进程信息的实用指南
在Python中查询进程信息的实用指南
140 2
|
5月前
|
Shell Linux
高级用法查询指定进程使用到的环境变量
查询指定进程使用到的环境变量
|
6月前
|
Web App开发
kill 终止进程
kill 终止进程。
52 7

相关实验场景

更多

推荐镜像

更多