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#
    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
    AND O.OWNER='GDEGIS'--用户名

2.考虑到可能有些服务器上用的不只是一台机,可能用的是rac部署的多台机器。

所以首先将数据库所有的死锁表查询出来,查询数据库中的全局视图

--查看全局锁死对象

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#
    FROM  gv$session s, gv$lock l, dba_objects o
   WHERE l.sid = s.sid
     AND l.id1 = o.object_id(+)
     AND s.username is NOT NULL
    AND O.OWNER='GDEGIS'--用户名

可能你会发现有时候会报“会话ID不存在”的错误.

对比实例中和全局锁死的表数量

实例视图里没有的而全局有的死锁表,说明不存在当前实例节点,可以通过手动配置TNS登录到另外节点杀死锁死的会话

alter system kill session 'sid,serial;

一般通过这些就可以完全解决数据库表死锁问题,再不行只能登录到OS级杀死进程!

3.关于存储过程或者包无法编辑的问题一般都是由于表死锁造成的。比如数据库中的一个JOB一直在执行一个任务操作此表,

   1.查看正在运行的job:    

   select * from dba_jobs_running;

   2.查询job对应的s.sid,s.serial#:

   select s.sid,s.serial# from v$session s where s.sid in (select sid from dba_jobs_running);

   3.停止任务会话:

   alter system kill session 'sid,serial;

   4.断开JOB。

   5.最后删除在执行的JOB。

   注意:任务会话结束后,任务不一定就停止运行了,必须删除JOB。再通过查询死锁表语句查看是否有锁表,

   假如没有,此时应该可以对存储过程或者包重新编辑了,或者在调用脚本杀除锁表会话。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
(一)客户端组件和服务器端组件 2 (二)Oracle Database 的体系架构 2 1. 什么是数据库?什么是实例? 3 2. 存储结构 3 数据文件(data file) 4 联机日志文件(online redo log file) 4 控制文件(control file) 5 归档模式:冷备份,离线备份,热备份,联机备份 6 Spfile:二进制,9i 之后 Pfile:文本,9i 之前 6 可以将 spfile 转换为 pfile 6 注意:scope 的取值有三个:memory、spfile、both 7 一个空间(tablespace)由一组段组成 8 Tablespaces(空间) 8 system sysaux temp undo 8 Segments (段) 8 extents (区) 8 Data Block (数据块) 8 3. 进程结构 9 日志写进程(LGWR) 检查点进程(CKPT) 9 归档进程(ARCn) 恢复器进程(RECO) 9 2日志写进程(LGWR) 10 3检查点进程(CKPT) 10 6归档进程(ARCn) 10 7恢复器进程(RECO) 11 4. 内存结构 11 1共享池:shared pool 12 3重做日志缓冲区:log buffer 12 (三)自动内存管理和自动共享内存管理 13 (四)管理方案对象 13 (五)数据字典 15 (一)安装 Oracle Linux 7.3 64 位操作系统 17 (二)安装 Oracle Database 12cR2 19 (三)使用 DBCA 创建 Oracle 数据库 21 (四)验证 Oracle Database 12cR2 环境 25 (五)使用 oracle-database-server-12cR2-preinstall 25 三、管理数据库实例 27 (一)管理工具 27 (二)初始化参数 27 (三)数据库启动的过程 29 (四)数据库的关闭 29 四、配置 Oracle 的网络环境 31 (一)连接建立的过程 31 (二)使用 lsnrctl 命令 31 (三)如何配置监听器 33 (四)注册数据库的服务 34 (五)建立连接的方法 36 (六)共享服务器模式 38 (七)分布式数据库基础 40 五、管理用户和权限 42 (一)用户 42 (二)权限 46 (三)角色 51 (四)概要文件:Profile 54 六、管理数据库存储结构 57 (一)存储结构 57 (二)数据块的结构 57 (三)空间和数据文件 57 (四)什么是自动存储管理 58 七、数据的并发处理 60 (一)锁定的机制 60 (三)锁的队列 60 (四)死锁 62 (五)手动加锁 64 (方式一)lock 语句 64 八、管理还原数据 65 (一)什么是还原数据? 65 (二)还原数据的作用 66 (三)还原数据的工作原理 66 (四)还原数据与重做数据 67 (五)管理还原数据 67 (六)还原保留期和确保还原保留期 67 九、数据库审计 68 (一)什么是数据库审计 68 (二)审计的参数设置 69 (三)强制审计 69 (四)标准审计 69 (五)基于值的审计 71 (六)细粒度审计(FGA) 71 (七)DBA 审计 73 (八)12c 审计的新特性 73 十、移动数据 76 (一)移动数据的整体架构 76 (二)目录对象 76 (三)使用 SQL*Loader 77 (四)数据泵 78 (五)外部 80 十一、性能管理基础 82 (一)性能监视 82 (二)性能监视 82 (三)管理内存组件 83 (四)使用内存指导 83 (五)使用动态性能视图 84 (六)故障排除和优化视图 85 (七)无效和不可用对象 85 =======第二篇:备份与恢复======= 86 一、备份和恢复的基本概念 86 (一)衡量数据库可恢复性的两个指标 86 (二)数据库故障的类型 86 (三)配置数据库的可恢复性 88 (四)归档日志文件 88 (五)启用 ARCHIVELOG(归档)模式 89 (六)Oracle 数据库备份的解决方案 89 二、闪回 90 (一)什么是闪回 Flashback? 90 (五)闪回查询:Flashback Query 91 (六)闪回版本查询:Flashback Version Query 92 (七)闪回:Flashback Table 93 (八)闪回数据库:Flashback Database 94 (九)闪回删除:Flashback Drop 95 (十)闪回事务查询:Flashback Transaction Qu

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值