引起Oracle阻塞的原因

1、select for update

2、外键没有创建索引
    (1)主表上有频繁的删除操作
   
(2)主键上有频繁的修改操作
    (3)业务上经常会出现主表和从表进行关联查询

当第一个和第二个条件操作的时候,主表会在从表上创建一个锁定,以保证主表主键的修改不会导致从表的数据在引用上不会出现问题。

如果经常对主表的主键进行修改都将导致从表被长时间锁定。比如主表每次删除1000条记录,它将扫描从表1000次,以确定每一行记录的改变

不会造成从表的引用不完整。因此,在从表的外键上应该创建索引。

分析表
exec
dbms_stats.gather_table_stats(user,‘t‘,cascade=>true);--分析表相关对象信息cascade
=> true

开启执行计划
explain plan for select * from
emp;
set autotrace trace exp
stat;
alter seesion
set sql_trace=true;
show parameter optimizer_mode;

时间: 2024-08-28 07:04:03

引起Oracle阻塞的原因的相关文章

Oracle 阻塞(blocking blocked)

阻塞是DBA经常碰到的情形,尤其是不良的应用程序设计的阻塞将导致性能严重下降直至数据库崩溃.对DBA而言,有必要知道如何定位到当前系统有哪些阻塞,到底谁是阻塞者,谁是被阻塞者.本文对此给出了描述并做了相关演示. 1.阻塞及其类型a.什么是阻塞   一个会话持有某个资源的锁,而另一个会话在请求这个资源,就会出现阻塞(blocking).也就是说新的会话会被挂起,直到持有锁的会话放弃锁定的资源.大多数情况下,在一个交互式应用中被严重阻塞,即可表明应用逻辑有问题,这才是阻塞的根源.b.阻塞得类型  

Rxjava 执行阻塞的原因分析 tolist() observable.from()等。

开发中多次碰到了tolist方法阻塞住的问题.一直为了赶进度,避开使用该操作符号. 直到有一天发现flatmap中的 observable.from()也会阻塞.排查原因才发现是  onComplete()方法没有调用的原因. 根据rxjava的链式调用原理,有从下到上一步步传递回调函数,在从上到下逐步执行的过程. 而该过程中有的步骤执行需要等待oncomplete调用. Rxjava 执行阻塞的原因分析 tolist() observable.from()等.

oracle 索引失效原因

摘自网络http://blog.chinaunix.net/uid-23622436-id-3184356.html oracle 索引失效的原因 分类: Oracle 1) 没有查询条件,或者查询条件没有建立索引 2) 在查询条件上没有使用引导列 3) 查询的数量是大表的大部分,应该是30%以上. 4) 索引本身失效 5) 查询条件使用函数在索引列上(见12) 6) 对小表查询 7) 提示不使用索引 8) 统计数据不真实 9) CBO计算走索引花费过大的情况.其实也包含了上面的情况,这里指的是

ArcSOC进程数不断增长导致oracle processes溢出原因分析

现场出现了一个问题,oracle运行一段时间之后,process个数会溢出,然后新的连接会失败.通过分析,发现Arcgis Server 的ArcSOC进程在不段增长.ArcSOC是arcgis server 的一个容器进程,该容器中装载arcgis object. 计划尝试用两个方法来解决/缓解这一问题. 方法一 调整每个服务的配置信息,具体如下: 将空间实例可持续运行的最长时间由1800s降低到600s 将实例的隔离级别设置为"低隔离性",如下图: 建议:先使用第一种方法修改服务配

数据库锁表及阻塞的原因和解决办法

问题说明 当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性.加锁是实现数据库并发控制的一个非常重要的技术.在实际应用中经常会遇到的与锁 相关的异常情况,当两个事务需要一组有冲突的锁,而不能将事务继续下去的话,就会出现死锁,严重影响应用的正常执行. 在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁).当数据对象被加上排它锁时,其他

oracle 索引失效原因_汇总

1) 没有查询条件,或者查询条件没有建立索引 2) 在查询条件上没有使用引导列 3) 查询的数量是大表的大部分,应该是30%以上. 4) 索引本身失效 5) 查询条件使用函数在索引列上,或者对索引列进行运算,运算包括(+,-,*,/,! 等) 错误的例子:select * from test where id-1=9; 正确的例子:select * from test where id=10; 6) 对小表查询 7) 提示不使用索引 8) 统计数据不真实 9) CBO计算走索引花费过大的情况.其

oracle数据库升级dbua操作阻塞解决方法(解决ORA-32004报错)

操作环境 1.SuSE11sp3操作系统 2.oracle 11.2.0.3版本升级到11.2.0.4版本 问题现象   oracle 11.2.0.3版本升级到11.2.0.4版本时执行dbua命令在获取dabase信息步骤时提示输入pfile文件,无法next操作,升级阻塞.(不是在自己环境操作,暂无截图) 问题分析   oracle start mount步骤时会出现提示ORA-32004: obsolete or deprecated parameter(s) specified for

Oracle问题--远程登录失败原因分析

远程机: 安装 Oracle 的计算机: 本地机: 访问远程机上 Oracle 数据库的计算机. 一.问题描述 在远程计算机安装 Oracle 数据库. 在本地机上,配置 InstantClient 后, 使用 PLSql Developer 远程登录 Oracle 数据库,报 Oracle 错误. 二.解决思路 根据 Oracle 错误代码分析原因,如ORA-1455. 三.原因分析 常常是远程或本地计算机配置错误. 四.解决方案 (1).先确保能在远程计算机上,使用 PLSql 访问远程机上

SQL Server数据阻塞原因

阻塞形成原因 是由于SQL Server是高并发的,同一时间会有很多用户访问,为了保证数据一致性和数据安全,引入了锁的机制.同一时间只有拿到钥匙的用户能够访问,而其他用户需要等待. 死锁形成四大必要条件 1.一个资源每次只能被一个进程使用. 2.一个进程因请求资源而阻塞时,对已经获得的资源保持不放 3.进程已获得的资源,在未使用之前,不能强行剥夺 4.若干进程之间形成首尾相接的循环等待关系 如图: 如何捕捉死锁 1.Profiler 2. 扩展事件跟踪死锁