一、处理过程
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 查询用户锁表 Oracle 查询用户锁表是指在 Oracle 数据库中查询当前用户锁定的表,以便诊断和解决锁表问题。本文档将详细介绍如何查询用户锁表,并提供相关的代码。 一、查询用户锁表的必要性 在 Oracle ...
### 清除Oracle中长时间持锁的Session #### 背景介绍 在Oracle数据库管理过程中,有时会遇到一些长时间占用资源的进程,这些进程可能会导致数据库性能下降甚至某些操作无法执行。通常情况下,如果一个session的状态...
3. **重启数据库实例**:在所有其他方法都无效时,作为最后手段,可以考虑重启数据库实例来强制清除所有的锁定情况。 需要注意的是,在进行任何操作之前,都应该仔细评估潜在的风险,并备份好所有重要的数据,...
当你采用的是直接连接数据库的方式,也不要用OS系统命令$kill process_num或者$kill -9 process_num来终止用户连接,因为一个用户进程可能产生一个以上的锁,杀OS进程并不能彻底清除锁的问题。 oracle死锁表后处理...
在Oracle数据库管理过程中,有时需要重启Oracle服务或清除所有的会话(session),以解决某些特定问题或进行必要的维护工作。本文将详细介绍如何通过一系列命令来实现这一目标,并确保整个过程顺利无误。 #### 二、...
以下是对"Oracle中去除锁表命令"的详细说明: 1. **检测表锁** 在Oracle中,你可以通过查询`v$locked_object`视图来查看当前被锁定的对象。结合`dba_objects`视图,可以找出被锁定的表及其锁定模式和持有锁的会话...
总结来说,安全快速地批量删除Oracle数据库外部会话涉及到对`ALTER SYSTEM KILL SESSION`、`ALTER SYSTEM DISCONNECT SESSION`命令的熟练运用,以及可能的与操作系统交互。在执行这些操作时,务必小心谨慎,避免对...
4. **查看锁表及解锁**: - 使用`V$SESSION`和`V$LOCK`视图可以检查当前会话或所有会话的锁信息。例如,找出死锁情况: ```sql SELECT ... FROM sys.dba_objects, (SELECT ... FROM v$session s, v$lock l ...) ...
首先,自动清除Oracle当前链接,这通常涉及到`DBMS_SESSION`包中的`KILL_SESSION`过程。此过程用于终止指定会话,当有长时间未活动的会话或者需要紧急清理资源时非常有用。在Bash脚本中,我们可能通过SQL*Plus或oci8...
### Oracle清除死锁知识点 #### 一、Oracle死锁概念 在Oracle数据库中,当两个或多个事务在等待对方释放锁定资源时会发生死锁。这种情况下,所有事务都将被阻塞,无法继续执行,直到其中一个事务回滚或者系统采取...
### 处理Oracle中难以清除的锁定状况 在Oracle数据库管理与维护过程中,经常会遇到一些棘手的问题,比如某些锁定无法通过常规手段解除。本文将详细介绍如何处理Oracle中那些难以解决的锁定问题,并提供一系列实用的...
当我们获得了锁定会话的相关信息后,就可以使用`ALTER SYSTEM KILL SESSION`命令来终止该会话了。需要注意的是,在执行此命令之前,请务必再次确认目标会话是否就是需要被杀死的进程。 ```sql ALTER SYSTEM KILL ...
`命令,这将强制Oracle执行一次检查点,有助于释放被锁住的资源。 2. **切换日志文件**:通过`ALTER SYSTEM SWITCH LOGFILE;`命令切换重做日志文件,有助于解决某些类型的锁定问题。 3. **立即关闭数据库**:在某些...
标题与描述概述的知识点主要涉及Oracle数据库中临时表空间(TEMP表空间)的管理与优化,特别是当TEMP表空间占用过多硬盘空间时的处理方法。本文将深入解析这一过程,帮助读者理解并掌握释放TEMP表空间所占用硬盘空间...
清除锁表是解决并发控制中的死锁问题,通过DBA_LOCKED_OBJECTS视图可以查看锁定对象,然后使用ALTER SYSTEM KILL SESSION来解除锁。 二、数据库备份与恢复 数据库备份是保障数据安全的重要环节,Oracle提供完整备份...
- 通过`ALTER SYSTEM KILL SESSION 'sid,serial#';`命令可以强制杀死持有锁的会话。 #### 控制文件备份步骤 1. **关闭数据库**: - 使用`SHUTDOWN IMMEDIATE;`命令立即关闭数据库。 2. **复制控制文件**: - ...
查看有哪些表被锁住 - **功能**: 列出所有被锁定的对象和会话信息。 - **SQL语句**: ```sql SELECT b.owner, b.object_name, a.session_id, a.locked_mode FROM v$locked_object a, dba_objects b WHERE b....
在Oracle 10g及以上版本中,`DROP TABLE xx PURGE`命令会彻底删除一个表,不会放入回收站。若要恢复被删除的表,可以查询`USER_RECYCLEBIN`,然后使用`FLASHBACK TABLE ...
总结:本文详尽地介绍了Oracle数据库的一些关键命令,涵盖了用户管理、权限设置、数据库连接、表空间操作以及查询优化等多个方面。熟练掌握这些命令,将极大地提高你在Oracle数据库管理中的效率。希望这些内容对你在...