oracle原始对象
Posted 一帘幽梦&nn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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\';
参考:
以上是关于oracle原始对象的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Toad for Oracle 中使用自定义代码片段?
Client / Server Interoperability Support Matrix for Different Oracle Versions (Doc ID 207303.1)(代码片段