oracle 数据库12c 一个pdb进行delete操作,commit失败导致被锁,需要把会话杀掉
来源:互联网 发布:网络音乐地址 编辑:程序博客网 时间:2024/06/05 15:14
oracle 数据库12c 一个pdb进行delete操作,commit失败导致被锁,需要把会话杀掉。下面是详细步骤:
进入pdb alter session set container=ORCL;
oracle查锁的sql
set linesize 200
col ORACLE_USERNAME format a15
col OBJECT_NAME format a35
col machine for a20
col program for a20
select a.xidusn,a.OBJECT_ID,c.sid,c.serial#,ORACLE_USERNAME,LOCKED_MODE,OBJECT_NAME,object_type,machine
from v$locked_object a,dba_objects b, v$session c
where a.OBJECT_ID=b.OBJECT_ID
and a.SESSION_ID=c.sid
order by 1,4,7;
如果是gv$sessiion 则查询的是全局,INSID列表示在哪一个节点
本节点只能杀本节点的会话===========
set linesize 200
col ORACLE_USERNAME format a15
col OBJECT_NAME format a35
col machine for a20
col program for a20
select a.INST_ID,a.xidusn,a.OBJECT_ID,c.sid,c.serial#,ORACLE_USERNAME,LOCKED_MODE,OBJECT_NAME,object_type,machine
from gv$locked_object a,dba_objects b, gv$session c
where a.OBJECT_ID=b.OBJECT_ID
and a.SESSION_ID=c.sid
order by 1,4,8;
1 0 36782 6175 48734 BRMPROD 3 TBL_RISK_RESULT TABLE brcapp02
2 0 36782 7265 51106 BRMPROD 3 TBL_RISK_RESULT TABLE brcapp02
2 0 36782 7382 5596 BRMPROD 3 TBL_RISK_RESULT TABLE brcapp02
杀应用会话:
alter system kill session 'sid,serial#';
会报错:session make for kill;
或者:
alter system kill session 'sid,serial#' immediate;
会报错:session make for kill;实际上不是真正的杀死会话,它只是将会话标记为终止。不用其他操作,等待PMON进程来清除会话。
如何彻底杀掉不良用户会话
在ORACLE数据库当中,有时候会使用ALTER SYSTEM KILL SESSION 'sid,serial#'杀掉一个会话进程,但是使用这个SQL语句杀掉会话后,数据库并不会立即释放掉相关的资源,有时候你会发现锁定的资源很长时间也不会释放,即使会话状态为“KILLED”,依然会阻塞其它会话。
在ORACLE数据库杀掉会话进程有三种方式:
1: ALTER SYSTEM KILL SESSION
关于KILL SESSION Clause ,如下官方文档描述所示,alter system kill session实际上不是真正的杀死会话,它只是将会话标记为终止。等待PMON进程来清除会话。
select sid,serial# from v$session where username='DEMO';查询用户的 sid,seria
可以使用ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE 来快速回滚事物、释放会话的相关锁、立即返回当前会话的控制权。
Specify IMMEDIATE to instruct Oracle Database to roll back ongoing transactions, release all session locks, recover the entire session state, and return control to you immediately.
2: ALTER SYSTEM DISCONNECT SESSION
ALTER SYSTEM DISCONNECT SESSION 杀掉专用服务器(DEDICATED SERVER)或共享服务器的连接会话,它等价于从操作系统杀掉进程。它有两个选项POST_TRANSACTION和IMMEDIATE, 其中POST_TRANSACTION表示等待事务完成后断开会话,IMMEDIATE表示中断会话,立即回滚事务。
SQL> ALTER SYSTEM DISCONNECT SESSION 'sid,serial#' POST_TRANSACTION;
SQL> ALTER SYSTEM DISCONNECT SESSION 'sid,serial#' IMMEDIATE;
3: KILL -9 SPID (Linux) 或 orakill ORACLE_SID spid (Windows)
可以使用下面SQL语句找到对应的操作系统进程SPID,然后杀掉。当然杀掉操作系统进程是一件危险的事情,尤其不要误杀。所以在执行前,一定要谨慎确认。
select SPID from v$process where addr in (SELECT PADDR FROM V$SESSION WHERE USERNAME='用户名字'); (找到用户的spid)
kill -9 spid
在数据库如果要彻底杀掉一个会话,尤其是大事务会话,最好是使用ALTER SYSTEM DISCONNECT SESSION IMMEDIATE或使用下面步骤:
1:首先在操作系统级别Kill掉进程。
2:在数据库内部KILL SESSION
或者反过来亦可。这样可以快速终止进程,释放资源。
进入pdb alter session set container=ORCL;
oracle查锁的sql
set linesize 200
col ORACLE_USERNAME format a15
col OBJECT_NAME format a35
col machine for a20
col program for a20
select a.xidusn,a.OBJECT_ID,c.sid,c.serial#,ORACLE_USERNAME,LOCKED_MODE,OBJECT_NAME,object_type,machine
from v$locked_object a,dba_objects b, v$session c
where a.OBJECT_ID=b.OBJECT_ID
and a.SESSION_ID=c.sid
order by 1,4,7;
如果是gv$sessiion 则查询的是全局,INSID列表示在哪一个节点
本节点只能杀本节点的会话===========
set linesize 200
col ORACLE_USERNAME format a15
col OBJECT_NAME format a35
col machine for a20
col program for a20
select a.INST_ID,a.xidusn,a.OBJECT_ID,c.sid,c.serial#,ORACLE_USERNAME,LOCKED_MODE,OBJECT_NAME,object_type,machine
from gv$locked_object a,dba_objects b, gv$session c
where a.OBJECT_ID=b.OBJECT_ID
and a.SESSION_ID=c.sid
order by 1,4,8;
查询结果:
INST_ID XIDUSN OBJECT_ID SID SERIAL# USERNAME LOCKED_MODE OBJECT_NAME OBJECT_TYPE
---------- ---------- ---------- ---------- ---------- --------------- ----------- ------1 0 36782 6175 48734 BRMPROD 3 TBL_RISK_RESULT TABLE brcapp02
2 0 36782 7265 51106 BRMPROD 3 TBL_RISK_RESULT TABLE brcapp02
2 0 36782 7382 5596 BRMPROD 3 TBL_RISK_RESULT TABLE brcapp02
杀应用会话:
alter system kill session 'sid,serial#';
会报错:session make for kill;
或者:
alter system kill session 'sid,serial#' immediate;
会报错:session make for kill;实际上不是真正的杀死会话,它只是将会话标记为终止。不用其他操作,等待PMON进程来清除会话。
如何彻底杀掉不良用户会话
在ORACLE数据库当中,有时候会使用ALTER SYSTEM KILL SESSION 'sid,serial#'杀掉一个会话进程,但是使用这个SQL语句杀掉会话后,数据库并不会立即释放掉相关的资源,有时候你会发现锁定的资源很长时间也不会释放,即使会话状态为“KILLED”,依然会阻塞其它会话。
在ORACLE数据库杀掉会话进程有三种方式:
1: ALTER SYSTEM KILL SESSION
关于KILL SESSION Clause ,如下官方文档描述所示,alter system kill session实际上不是真正的杀死会话,它只是将会话标记为终止。等待PMON进程来清除会话。
select sid,serial# from v$session where username='DEMO';查询用户的 sid,seria
可以使用ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE 来快速回滚事物、释放会话的相关锁、立即返回当前会话的控制权。
Specify IMMEDIATE to instruct Oracle Database to roll back ongoing transactions, release all session locks, recover the entire session state, and return control to you immediately.
2: ALTER SYSTEM DISCONNECT SESSION
ALTER SYSTEM DISCONNECT SESSION 杀掉专用服务器(DEDICATED SERVER)或共享服务器的连接会话,它等价于从操作系统杀掉进程。它有两个选项POST_TRANSACTION和IMMEDIATE, 其中POST_TRANSACTION表示等待事务完成后断开会话,IMMEDIATE表示中断会话,立即回滚事务。
SQL> ALTER SYSTEM DISCONNECT SESSION 'sid,serial#' POST_TRANSACTION;
SQL> ALTER SYSTEM DISCONNECT SESSION 'sid,serial#' IMMEDIATE;
3: KILL -9 SPID (Linux) 或 orakill ORACLE_SID spid (Windows)
可以使用下面SQL语句找到对应的操作系统进程SPID,然后杀掉。当然杀掉操作系统进程是一件危险的事情,尤其不要误杀。所以在执行前,一定要谨慎确认。
select SPID from v$process where addr in (SELECT PADDR FROM V$SESSION WHERE USERNAME='用户名字'); (找到用户的spid)
kill -9 spid
在数据库如果要彻底杀掉一个会话,尤其是大事务会话,最好是使用ALTER SYSTEM DISCONNECT SESSION IMMEDIATE或使用下面步骤:
1:首先在操作系统级别Kill掉进程。
2:在数据库内部KILL SESSION
或者反过来亦可。这样可以快速终止进程,释放资源。
阅读全文
1 0
- oracle 数据库12c 一个pdb进行delete操作,commit失败导致被锁,需要把会话杀掉
- oracle 12c误删pdb数据文件导致整个数据库无法打开问题
- Oracle 12c 基于PDB种子数据库创建PDB
- 浅谈Oracle数据库12c PDB技术
- oracle 12c 多租户 pdb 恢复(单个pdb数据文件、非系统pdb表空间、整个pdb数据库)
- 数据库运维之--手工杀掉一个会话
- 远程连接ORACLE 12C中可插拔数据库PDB
- Oracle 12c 如何打开PDB可插播数据库
- oracle 12c卸载pdb
- oracle 12c pdb&cdb
- Oracle 12c创建pdb
- Oracle中Delete和Commit操作的流程分析
- oracle锁表当客户端杀掉会话不成功可以服务端杀掉进程
- 【ORACLE】ORACLE 12c PDB 基础
- 【ORACLE】ORACLE 12c PDB 基础
- 【ORACLE】ORACLE 12c PDB 基础
- Oracle 12C -- 使用seed PDB创建新的pdb
- oracle什么时候需要commit
- vue 组件 全局注册与局部注册的方法
- 九、 通用工具 ----辅助函数
- MySQL的简单应用
- Spring Cloud Feign实例讲解
- Android图片加载框架最全解析(一),Glide的基本用法
- oracle 数据库12c 一个pdb进行delete操作,commit失败导致被锁,需要把会话杀掉
- Angular1.63 绑定数据与继承
- LightOJ 1205 Palindromic Numbers(数位dp)
- 背景图片自适应
- 游戏安全资讯精选2017年第五期:国际网络犯罪基础设施被曝光
- 九、 通用工具 ----class ratio<>
- 四十、vue中封装jsonp
- picture picker(选择多张本地图片,网格布局)
- Angular 点击事件