今天在执行truncate table table_name时,总是出现ORA-00054错误,后来从网上查阅发现是因为对象被锁定引起的,下面将网上搜到的具体的处理方法进行以下总结:
一、相关知识简介
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
二、错误处理方法
首先用数据库管理员登陆:
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#为第一步查出来的数据
若是执行时提示“ora-00031错误”,可以多执行几次,估计和数据量的多少有关,具体为什么我暂时也不知道了^_^。
3.从系统中灭掉与该session对应的进程
kill -9 spid; --spid为第一步中查出来的系统进程号
经过以上操作之后重新对之前锁定的对象进行操作应该就可以了
分享到:
相关推荐
4.修改用户解除锁定,命令为:alter user 用户名 account unlock。 5.提交修改,命令为:commit。 解决 SQLPlus 命令行工具中的错误 在使用 SQLPlus 命令行工具时,可能会出现一些错误,例如:“bash: sqlplus: ...
在Oracle数据库系统中,表锁是一种重要的并发控制机制,用于管理多用户环境下对数据的访问。当多个用户同时操作同一张表时,表锁确保了数据的一致性和完整性,防止了数据的不一致状态。本资料主要探讨Oracle中的表锁...
在Oracle数据库系统中,锁定机制确保了并发操作时的数据安全性,防止了数据的不一致性和脏读问题。以下是对Oracle锁的详细解析: 1. **锁的类型**: - **共享锁(S锁)**:也称为读锁,允许一个或多个事务读取一行...
Oracle SQL是用于访问和操作Oracle数据库的强大工具,涵盖了各种查询、更新和管理数据的方法。以下是对笔记中提及的一些关键知识点的详细解释: 1. **登录Oracle数据库**:通常以超级管理员(sysdba)身份登录,如`...
标题“Delphi备份Oracle数据库”涉及的是使用Delphi编程语言编写的应用程序,该程序能够对Oracle数据库进行备份操作。在数据库管理中,备份是至关重要的,因为它可以保护数据免受意外丢失、系统故障或恶意攻击的影响...
解除用户帐户的锁定并重置口令 6-9 权限 6-10 系统权限 6-11 对象权限 6-13 使用 ADMIN OPTION 撤销系统权限 6-14 使用 GRANT OPTION 撤销对象权限 6-15 角色的作用 6-16 将权限分配给角色以及将角色分配给...
2. **解除锁定** 在多用户环境下,数据库中可能出现锁定导致的并发问题。你可以通过查询`V$SESSION`和`V$LOCK`视图来查看当前数据库中的锁定情况: ```sql SELECT /*+ rule */ s.username, decode(l.type,'TM','...
### ORACLE数据库死锁查杀方法详解 #### 一、引言 在Oracle数据库系统中,当两个或多个事务在等待对方释放资源时,就会出现死锁现象。死锁不仅会降低系统的整体性能,还可能导致某些重要事务长时间无法完成,严重...
Oracle数据库死锁是数据库系统中常见的问题,它发生在两个或多个事务在执行过程中,因争夺资源而造成的一种相互等待的现象。当这种情况发生时,如果没有外力干预,这些事务都将无法继续执行,形成一种僵局。了解如何...
### Oracle数据库日常维护手册知识点概览 #### 一、检查数据库基本状况 ##### 1.1 检查Oracle实例状态 - **SQL命令**:`SELECT instance_name, host_name, startup_time, status, database_status FROM v$instance;...
在Oracle数据库中,误删数据或表是常见的问题之一。以下是一些恢复策略和技术: **1. 恢复表数据** - **时间戳查询**: 如果只需要恢复表中的部分数据,可以使用带有时间戳的查询来获取特定时间点之前的数据。例如...
在Oracle数据库环境中,死锁是一种常见的问题,特别是在高并发的应用场景下更为常见。死锁是指两个或多个事务在执行过程中,因争夺资源而造成的一种僵局现象,在这种状态下,每个事务都在等待另一个事务释放资源,但...
以下是一些关键的知识点,涵盖了如何恢复误删除的数据、解除锁定、处理账户锁定以及查询数据库用户和权限的相关信息。 1. **恢复误删除数据**: - Oracle 提供了闪回技术来恢复误删除的数据。通过 `AS OF ...
在Oracle数据库管理中,了解如何检查被锁定的对象是至关重要的,因为这直接影响到数据库的性能和可用性。本文将深入探讨两个SQL查询语句,它们分别用于检查数据库表和pkg包是否被锁定,以及如何通过这些查询来识别并...
解除用户帐户的锁定并重置口令 6-9 权限 6-10 系统权限 6-11 对象权限 6-13 使用 ADMIN OPTION 撤销系统权限 6-14 使用 GRANT OPTION 撤销对象权限 6-15 角色的作用 6-16 将权限分配给角色以及将角色分配给...
Oracle数据库管理系统是全球广泛使用的大型关系型数据库之一,它提供了丰富的功能来确保数据的安全性和可恢复性。本文将详细讲解如何在Oracle中恢复误删除数据、解除锁定,以及查询和管理用户权限。 1. **恢复误...
ora-00031:session marked for kill处理oracle中杀不掉的锁一些ORACLE中的进程被杀掉后,状态被置为”killed”,但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。现在提供一种方法解决这种问题,那...
### Oracle数据库面试题知识点解析 #### 一、基础知识(1-20) 1. **Oracle数据库的主要特点**: - **高性能与可扩展性**:支持大量并发用户和大规模数据处理。 - **高可用性**:具备强大的容错能力和故障恢复...
Oracle数据库管理系统提供了强大的数据恢复和管理功能,包括对误删除数据的恢复、锁定问题的处理以及用户和权限的管理。以下是一些关键知识点的详细解释: 1. **误删除数据恢复**: 当误删数据库表时,Oracle的闪...