oracle原始对象

一、概述

oracle数据库中存在一些基本,这些表是oracle内置的表,用来管理其他表的表。这些基本和你的业务表没啥关系,一般你也用不到,

不用去理会它们。它们是在特定的场景下使用的,如:当你发生死锁时,你就需要到这些基表去查询死锁,然后杀掉死锁;或者当你

需要对用户、角色等进行权限控制时,你也需要用到它们。

官网参考:oracle官网

二、使用

1. 死锁

场景:oracle锁表,导致无法进行删除或者修改操作

解决:

复制代码
--1.首先查看有哪些锁  --主要是看看有没有自己用户锁的表
select s.username,
       decode(l.type, 'TM', 'TABLE LOCK', 'TX', 'ROW LOCK', null) lock_level,
       o.owner,
       o.object_name,
       o.object_type,
       s.sid,
       s.serial#,
       s.terminal,
       s.machine,
       s.program,
       s.osuser
from v$session s,
     v$lock l,
     dba_objects o
where l.sid = s.sid
  and l.id1 = o.object_id(+)
  and s.username is not null;
  
--2.如果发生了锁等待,看是谁锁了表而引起谁的等待
--以下的语句可以查询到谁锁了表,而谁在等待。 如果有子节点,则表示有等待发生  
select lpad(' ', decode(l.xidusn, 0, 3, 0)) || l.oracle_username user_name,
       o.owner,
       o.object_name,
       o.object_type,
       s.sid,
       s.serial#
from v$locked_object l,
     dba_objects o,
     v$session s
where l.object_id = o.object_id
  and l.session_id = s.sid
order by o.object_id, xidusn desc;


--3.找到自己用的表,记录下那个sid,serial,然后用以下语句解锁
--找到引起等待的session,杀掉该session: 
alter system kill session 'sid,serial';
View Code
复制代码

 

 

 

 

 

 

 

参考:

oracle锁表无法进行删除delete或者修改操作的解决办法.txt

Oracle中V$SESSION等各表的字段解释,Oracle官方解释

posted @   一帘幽梦&nn  阅读(126)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击查看具体代码内容
点击右上角即可分享
微信分享提示