首页 > 软件开发 > ORACLE >

oracle锁表和函数过程的处理方式

来源:互联网 2023-03-16 23:58:28 302

在平时的工作中经常遇到oracle的表被锁住了,导致我们在对数据库表进行dml操作时都会失败,不仅是表,当我们在test函数或存储过程时,如果中间存在执行数据库过慢,或事物出现异常,都会导致存储过程被锁,关也关不掉,下面结合我自己的工作经验来说说我是如何处理数据库对象被锁的情况。C3e办公区 - 实用经验教程分享!

工具/原料

  • oracle
  • plsql

方法/步骤

  • 1

    首先来澄清一下数据库的基本视图表,以及表之间的联系,v$session视图:在某一个oracle实例中,这个视图存放了用户的各个会话,每次建立新的会话窗口,并执行某个sql都会在视图中有这个新的会话记录(在上篇文章已经模拟)。下面执行视图的查询,在这里我只列出v$session视图中常用的字段C3e办公区 - 实用经验教程分享!

    --查看当前会话C3e办公区 - 实用经验教程分享!

    selectvs.SADDR,vs.SID,vs.SERIAL#,vs.PADDR,vs.USERNAME,vs.LOCKWAIT,vs.OSUSER,vs.PROCESS,vs.MACHINE,vs.STATUS,vs.SQL_ADDRESS,vs.SQL_HASH_VALUE fromv$session vsC3e办公区 - 实用经验教程分享!

    下图列出了重要字段的定义和解释C3e办公区 - 实用经验教程分享!

    oracle锁表和函数过程的处理方式C3e办公区 - 实用经验教程分享!

  • 2

    其次,还要明白数据库对象表all_objects或者 dba_objectsC3e办公区 - 实用经验教程分享!

    这个表存放数据库所有类型的对象数据,包括存储过程、函数、表等。在这里我只列出重要的字段C3e办公区 - 实用经验教程分享!

    select* fromall_objects a wherea.OWNER='GAYX'ANDA.OBJECT_TYPE IN('TABLE','PROCEDURE')C3e办公区 - 实用经验教程分享!

    这个查询是查询用户名为‘GAYX’的数据对象为表和过程的所有对象。C3e办公区 - 实用经验教程分享!

    oracle锁表和函数过程的处理方式C3e办公区 - 实用经验教程分享!

  • 3

    再次我们查询锁数据库库对象后,数据对象所存放的表,在oracle中主要使用两个视图,一个是v$locked_object,一个是v$lockC3e办公区 - 实用经验教程分享!

    oracle锁表和函数过程的处理方式C3e办公区 - 实用经验教程分享!

    oracle锁表和函数过程的处理方式C3e办公区 - 实用经验教程分享!

  • 4

    下面给大家描述一下,这两者的区别,v$locked_object对象是表级锁, v$lock是所有锁包含表、行、系统等锁,也就是说,前者解锁后不起作用的情况下,可以使用后者进行解锁。C3e办公区 - 实用经验教程分享!

    C3e办公区 - 实用经验教程分享!

    还有一个视图就是 v$sql 或v$sqlarea 这两个视图存放会话中执行的sql语句,一般在恢复数据时可以使用,一般和v$session视图关联使用。C3e办公区 - 实用经验教程分享!

    oracle锁表和函数过程的处理方式C3e办公区 - 实用经验教程分享!

  • 5

    好了 到目前为止,大家应该了解这几个表的作用与联系了,那么当数据库表或存储过程发生死锁后,我们该如何利用这些表进行解锁呢?C3e办公区 - 实用经验教程分享!

    首先查询v$lock_object 对象表C3e办公区 - 实用经验教程分享!

    oracle锁表和函数过程的处理方式C3e办公区 - 实用经验教程分享!

  • 6

    如果上述解锁不能生效,则查询如下锁:C3e办公区 - 实用经验教程分享!

    oracle锁表和函数过程的处理方式C3e办公区 - 实用经验教程分享!

  • 6该信息未经授权抓取自百度经验
  • 7

    过程锁了:C3e办公区 - 实用经验教程分享!

    oracle锁表和函数过程的处理方式C3e办公区 - 实用经验教程分享!

  • 8

    一般来说,如果存在锁表的情况,上述两种就可以解锁了,但是有些时候,解锁之后,不释放资源,我们需要在服务器端将操作系统级别的进程杀死C3e办公区 - 实用经验教程分享!

    如下:C3e办公区 - 实用经验教程分享!

    oracle锁表和函数过程的处理方式C3e办公区 - 实用经验教程分享!

  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!C3e办公区 - 实用经验教程分享!


    标签: oracle函数

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码