oracle 解锁表删除去session 和kill

一、处理过程

1.通过查找出已被锁定的数据库表及相关的sid、serial#及spid:

select object_name as 对象名称,s.sid,s.serial#,p.spid as 系统进程号

from v$locked_object l , dba_objects o , v$session s , v$process p

where l.object_id=o.object_id and l.session_id=s.sid and s.paddr=p.addr;

2.在数据库中灭掉相关session:

alter system kill session 'sid,serial#';

--sid及serial#为第一步查出来的数据

3.从系统中灭掉与该session对应的进程:

kill -9 spid;

--spid为第一步中查出来的系统进程号

经过以上操作之后重新对之前锁定的对象进行操作应该就可以了。

二、使用了相关表的基本介绍

V$LOCKED_OBJECT中的列说明:

XIDUSN:回滚段号

XIDSLOT:槽号

XIDSQN:序列号

OBJECT_ID:被锁对象ID

SESSION_ID:持有锁的sessionID

ORACLE_USERNAME:持有锁的Oracle 用户名

OS_USER_NAME:持有锁的操作系统 用户名

PROCESS:操作系统进程号

LOCKED_MODE:锁模式

dba_objects的列说明(网上找的,懒得翻译了^_^)

OWNER

Username of the owner of the object

OBJECT_NAME

Name of the object

SUBOBJECT_NAME

Name of the sub-object (for example,partititon)

OBJECT_ID

Object number of the object

DATA_OBJECT_ID

Object number of the segment which contains the object

OBJECT_TYPE

Type of the object

CREATED

Timestamp for the creation of the object

LAST_DDL_TIME

Timestamp for the last DDL change (including GRANT and REVOKE) to the object

TIMESTAMP

Timestamp for the specification of the object

STATUS

Status of the object

TEMPORARY

Can the current session only see data that it place in this object itself?

GENERATED

Was the name of this object system generated?

SECONDARY

Is this a secondary object created as part of icreate for domain indexes?

v$session的说明

V$SESSION是基础信息视图,用于找寻用户SID或SADDR

常用列:

SID:SESSION标识

SERIAL#:如果某个SID又被其它的session使用的话则此数值自增加(当一个SESSION结束,另一个SESSION开始并使用了同一个SID)。

AUDSID:审查session ID唯一性,确认它通常也用于当寻找并行查询模式

USERNAME:当前session在oracle中的用户名。

STATUS:这列用来判断session状态是:

Achtive:正执行SQL语句(waiting for/using a resource)

Inactive:等待操作(即等待需要执行的SQL语句)

Killed:被标注为删除

v$process视图

v$process视图包含当前系统Oracle运行的所有进程信息。常被用于将Oracle或服务进程的操作系统进程ID与数据库session之间建立联系。

常用列:

ADDR:进程对象地址

PID:oracle进程ID

SPID:操作系统进程ID

详解:

一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。但是shutdown immediate又怕可能进程杀不掉会一直停留在shutdown immediate,直接shutdown abort又怕损坏数据库。

现在提供一种方法解决这种问题,那就是在ORACLE中杀不掉的,在OS一级再杀。

一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。但是shutdown immediate又怕可能进程杀不掉会一直停留在shutdown immediate,直接shutdown abort又怕损坏数据库。

现在提供一种方法解决这种问题,那就是在ORACLE中杀不掉的,在OS一级再杀。

1.下面的语句用来查询哪些对象被锁:

SELECT S.USERNAME,S.OSUSER,S.SID,S.SERIAL#,P.SPID FROM V$SESSION S,V$PROCESS

P WHERE S.PADDR=P.ADDR AND S.USERNAME IS NOT NULL;

2.下面的语句用来杀死一个进程:

alter system kill session 'sid,serial#';

【注】以上两步,可以通过Oracle的管理控制台来执行。

如果出现题目的错误,可以

select a.spid,b.sid,b.serial#,b.username from v$process a,v$session b where a.addr=b.paddr and b.status='KILLED' ;

3.如果利用上面的命令杀死一个进程后,进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先执行下面的语句获得进程(线程)号:

select spid, osuser, s.program from v$session s,v$process p where

s.paddr=p.addr and s.sid=33 (33就是上面的sid)

4.在OS上杀死这个进程(线程):

1)在unix上,用root身份执行命令:

#kill -9 12345(即第3步查询出的spid)

2)在windows(unix也适用)用orakill杀死线程,orakill是oracle提供的一个可执行命令,语法为:

orakill sid thread

其中:

sid:表示要杀死的进程属于的实例名

thread:是要杀掉的线程号,即第3步查询出的spid。

例:c:>orakill orcl 12345

Ps:这里要注意的是kill OS进程是在服务端操作,而不是你程序所在客户机。

结束 oracle 锁 ps -ef|grepp.spid,oracle 解锁表剔除去session 和kill相关推荐

  1. ps -ef|grep httpServer|grep -v grep|cut -c 9-15|xargs kill -9

    linux 下杀死多个进程的命令 ps -ef|grep httpServer|grep -v grep|cut -c 9-15|xargs kill -9

  2. 实用 ps -ef | grep php-fpm | grep -v grep | cut -c 9-15 | xargs kill -s 9

    ps -ef | grep php-fpm | grep -v grep | cut -c 9-15 | xargs kill -s 9 说明: grep php-fpm    是输出结果,所有含有关 ...

  3. oracle 日期6,EF 6与Oracle - 如何加入日期字段?

    我正在使用EF 6与Oracle,我正在尝试使用员工编号和日期字段进行多列连接.我无法让LEFT OUTER JOIN正常工作,我很确定这是因为日期.我知道Oracle中的日期可能会非常棘手,我通常必 ...

  4. oracle锁mode,【案例】Oracle dml操作产生TM锁 lmode=6 分析原因和解决办法

    [案例]Oracle dml操作产生TM锁 lmode=6 分析原因和解决办法 时间:2016-12-04 20:22   来源:Oracle研究中心   作者:网络   点击: 次 天萃荷净 Ora ...

  5. oracle 10046 看锁,Maclean教你读Oracle 10046 SQL TRACE

    有同学一直向Maclean反应希望做一期10046 SQL trace的教程, 正好这几天有空 我们就理一理. 为什么我们要使用10046 trace? 10046 trace帮助我们解析 一条/多条 ...

  6. oracle EBS查进程,Linux下使用ps命令来查看Oracle DB以及EBS相关的进程

    Linux下可以使用ps命令来查看Oracle相关的进程 使用ps来查看Oracle数据库相关的服务 Oracle Listener 这个命令会列出Oracle Net Listener的进程 [or ...

  7. oracle lms进程 内存,Oracle进程:LMS 进程与Oracle RAC

    Oracle进程:LMS 进程与Oracle RAC LMS进程是Oracle RAC环境下非常重要的一个进程,关于这个进程的解释在不同文档中也有所不同. 在Oracle 9iR2的概念手册中这样介绍 ...

  8. gdb导入oracle,如何使用gdb工具对Oracle系统状态(systemstate)做trace

    当Oracle系统hang住 ,无法使用一切方法登录时 (包括 sqlplus -prelim / as sysdba),我们可以使用gdb调试工具来对 Oracle做系统 dump ,通过 系统 d ...

  9. oracle物理文件删除如何恢复,Oracle数据文件物理删除后的恢复

    做系统管理的都是这样,难免会误删文件,某天要是把某个Oracle数据文件删除,那该如何恢复呢?(这里数据库是OPEN的,并且未关闭) 建立测试表空间 创建测试用户 插入测试数据 删除数据文件 恢复数据 ...

最新文章

  1. 套用match_再也不用伤脑筋了,分享九个可以直接套用的Excel常用公式,收藏备用...
  2. du -sh 目录名称查看文件夹大小
  3. Win64 驱动内核编程-1.环境搭建
  4. Pyqt 打开外部链接的几种方法
  5. Android定位(是否使用GPS进行定位)
  6. 总结vue几种页面刷新方法
  7. 常用animation动画
  8. luogu P1156 垃圾陷阱
  9. 深入解析 ES6 系列(二)
  10. Spring Cloud 应用篇 之 Spring Cloud Stream(消息驱动)
  11. 《嵌入式 – GD32开发实战指南》第5章 跳动的心脏-Systick
  12. 去A片马赛克,开发者被抓了。
  13. abb机器人goto指令用法_ABB机器人的指令详细介绍!!!
  14. 使用 DiskMaker X 轻松制作 Yosemite 安装 U 盘(引)
  15. delphi mysql 加密_Delphi纯代码连SQLite数据库,同时支持数据库的加密解密
  16. 【牛客网-公司真题-前端入门篇】——小米秋招笔试-前端
  17. kaggle点赞最多的 泰坦尼克号数据竞赛模型融合方法(附代码)
  18. 融资融券通俗易懂的解释
  19. Spring Boot教程(十五)使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程...
  20. python购物街竟价项目_python制作视频教程下载地址

热门文章

  1. ArcMap导入Excel数据显示没有注册类
  2. RHCSA 核心考点列表
  3. 头条白板面试_我收到的最佳白板面试建议
  4. 2022年后疫情时代下市场研报报告合集(共90份)
  5. 质量保证和质量控制的区别
  6. HBuilder X 无法启动微信开发者工具问题解决方法
  7. org.gjt.mm.mysql.Driver与com.mysql.jdbc.Driver区别
  8. 用python制作电子时钟包装_使用电子水墨屏和树莓派制作的时钟,Epaper_clock
  9. springboot启动项目编码问题
  10. 水刺无纺布滤芯详细说明