SQL> select sql_id from v$sql where sql_text like 'delete  from  std_contract%';

SQL_ID
-------------
9wx6s3p84v3xw SQL> set long 9999
SQL> select sql_text from v$sql where sql_id ='9wx6s3p84v3xw'; SQL_TEXT
------------------------------------------------------------------------------
delete from std_contract subpartition (P0000021) t1 where exists (select 1
from T_POLINFO_WN_000002 t2 where t1.Cntr_Id=t2.CntrId ) SQL>
SQL>
SQL>
SQL> !
$ ora plan 9wx6s3p84v3xw Session altered. PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------
SQL_ID 9wx6s3p84v3xw, child number 0
-------------------------------------
delete from std_contract subpartition (P0000021) t1 where exists
(select 1 from T_POLINFO_WN_000002 t2 where t1.Cntr_Id=t2.CntrId ) Plan hash value: 668406912 -----------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time | Pstart| Pstop |
-----------------------------------------------------------------------------------------------------------------------------
| 0 | DELETE STATEMENT | | | | | 295K(100)| | | |
| 1 | DELETE | STD_CONTRACT | | | | | | | |
|* 2 | HASH JOIN RIGHT SEMI | | 13M| 1727M| 538M| 295K (1)| 00:59:02 | | |
| 3 | TABLE ACCESS FULL | T_POLINFO_WN_000002 | 13M| 380M| | 85240 (1)| 00:17:03 | | |
| 4 | PARTITION COMBINED ITERATOR| | 16M| 1577M| | 95085 (2)| 00:19:02 | KEY | KEY |
| 5 | TABLE ACCESS FULL | STD_CONTRACT | 16M| 1577M| | 95085 (2)| 00:19:02 | 1 | 1 |
----------------------------------------------------------------------------------------------------------------------------- SQL> select index_name from dba_indexes where table_name ='STD_CONTRACT'; INDEX_NAME
------------------------------
IDX_STD_CONTACT_APPLNO
IDX_STD_CONTACT_CNTRNO
IDX_STD_CONTACT_CNTRID
IDX_STD_CONTRACT_INFORCE
IDX_STD_SGID

通过oradebug查看session的情况

    Oracle session identified by:
{
instance: 1 (cmds.cmds1)
os id: 14419572
process id: 342, oracle@cmdsky01
session id: 3619
session serial #: 34985
}
is waiting for 'enq: TM - contention' with wait info:
{
p1: 'name|mode'=0x544d0003
p2: 'object #'=0x1a10c
p3: 'table/partition'=0x0
time in wait: 2714 min 58 sec
timeout after: never
wait id: 2058617
blocking: 0 sessions
current sql: delete from std_contract subpartition (P0000021) t1 where exists (select 1 from T_POLINFO_WN_000002 t
2 where t1.Cntr_Id=t2.CntrId )
short stack: ksedsts()+240<-ksdxfstk()+44<-ksdxcb()+3432<-sspuser()+116<-__sighandler()<-thread_wait()+580<-sskgpwwait(
)+32<-skgpwwait()+200<-ksliwat()+10772<-kslwaitctx()+180<-kjusuc()+3600<-ksipgetctxi()+1884<-ksqcmi()+22104<-ksqgtlctx()+2884<-ktaia
m()+700<-ktagetg0()+776<-ktagetp_internal()+232<-ktagetg_internal()+116<-ktagdw()+152<-ktaadm()+152<-kksfbc()+1860<-opiexe()+2020<-o
pipls()+2028<-opiodr()+908<-rpidrus()+216<-skgmstack()+160<-rpidru()+132<-rpiswu2()+520<-rpidrv()+1060<-psddr0()+448<-psdnal()+472<-
pevm_EXIM()+240<-
wait history:
* time between current wait and wait #1: 0.001417 sec
1. event: 'row cache lock'
time waited: 0.000372 sec
wait id: 2058616 p1: 'cache id'=0x10
p2: 'mode'=0x0
p3: 'request'=0x3
* time between wait #1 and #2: 0.002481 sec
2. event: 'library cache pin'
time waited: 0.000265 sec
wait id: 2058615 p1: 'handle address'=0x7000118a2602118
p2: 'pin address'=0x7000118a4aeb478
p3: '100*mode+namespace'=0x67138700010002

查看锁的情况

col OS_USER_NAME for a10
SELECT /*+ RULE */ ls.osuser os_user_name,
ls.username user_name,
decode(ls.type, 'RW', 'Row wait enqueue lock', 'TM', 'DML enqueue lock', 'TX', 'Transaction enqueue lock', 'UL', 'User supplied lock') lock_type,
o.object_name OBJECT,
decode(ls.lmode, 1, NULL, 2, 'Row Share', 3, 'Row Exclusive', 4, 'Share', 5, 'Share Row Exclusive', 6, 'Exclusive', NULL) lock_mode,
o.OWNER,
ls.sid,
ls.serial# serial_num,
ls.id1,
ls.id2
FROM sys.dba_objects o,
(
SELECT s.osuser,
s.username,
l.type,
l.lmode,
s.sid,
s.serial#,
l.id1,
l.id2
FROM v$session s,
v$lock l
WHERE s.sid = l.sid
) ls
WHERE o.object_id = ls.id1
AND o.OWNER ='CMDS'
ORDER BY o.OWNER,
o.object_name;

检查没有索引的外键,排除这个原因

SELECT * FROM (
SELECT c.table_name, cc.column_name, cc.position column_position
FROM user_constraints c, user_cons_columns cc
WHERE c.constraint_name = cc.constraint_name
AND c.constraint_type = 'R'
MINUS
SELECT i.table_name, ic.column_name, ic.column_position
FROM user_indexes i, user_ind_columns ic
WHERE i.index_name = ic.index_name
)
ORDER BY table_name, column_position; TABLE_NAME COLUMN_NAME COLUMN_POSITION
------------------------------ -------------------- ---------------
DBFS$_MOUNTS S_NAME 2
DBFS_SFS$_FS TABID 1
DBFS_SFS$_FS VOLID 2
HS$_CLASS_CAPS CAP_NUMBER 1
HS$_CLASS_DD DD_TABLE_ID 1
HS$_FDS_INST FDS_CLASS_ID 1
HS$_INST_CAPS CAP_NUMBER 1
HS$_INST_DD DD_TABLE_ID 1
HS$_PARALLEL_HISTOGRAM_DATA DBLINK 1
HS$_PARALLEL_HISTOGRAM_DATA REMOTE_TABLE_NAME 2
HS$_PARALLEL_HISTOGRAM_DATA REMOTE_SCHEMA_NAME 3
HS$_PARALLEL_PARTITION_DATA DBLINK 1
HS$_PARALLEL_PARTITION_DATA REMOTE_TABLE_NAME 2
HS$_PARALLEL_PARTITION_DATA REMOTE_SCHEMA_NAME 3
HS$_PARALLEL_SAMPLE_DATA DBLINK 1
HS$_PARALLEL_SAMPLE_DATA REMOTE_TABLE_NAME 2
HS$_PARALLEL_SAMPLE_DATA REMOTE_SCHEMA_NAME 3
REGISTRY$ PID 2
REGISTRY$DEPENDENCIES REQ_NAMESPACE 1
REGISTRY$DEPENDENCIES REQ_CID 2
REGISTRY$PROGRESS NAMESPACE 1
REGISTRY$PROGRESS CID 2
WRM$_SNAPSHOT INSTANCE_NUMBER 2
WRM$_SNAPSHOT STARTUP_TIME 3

没有这个情况

杀掉这些session

select sql_id,state from v$session where sid=2873 and  SERIAL#=39007;
select sql_id,state from v$session where sid=3619 and SERIAL#=34985;
select sql_id,state from v$session where sid=1699 and SERIAL#= 59001; alter system kill session '2873,39007';
alter system kill session '3619,34985';
alter system kill session '1699,59001';

原因

从应用了解到insert是带append提示的,因为这个提示,不走sga,所以必须保证数据不被修改,而同时表上面有delete操作,表的数据被删除,两个操作应该是delete在insert之前或差不多同时进行,导致产生了独占锁。

处理方法是杀掉session,然后先insert数据,然后跑delete,经过这样的处理之后,insert在非常短的时间内就完成了,delete量较大,跑了大概一晚上的时间。

insert操作卡死的处理过程的更多相关文章

  1. MyBatis魔法堂:Insert操作详解(返回主键、批量插入)

    一.前言    数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅. 二. insert元素 属性详解   其属性如下: parameterType  ...

  2. IBatisNet:让insert操作返回新增记录的主键值

    项目引用ibatis包: IBatisNet.Common.dll --文件版本1.6.2.0 IBatisNet.DataAccess.dll IBatisNet.DataMapper.dll 项目 ...

  3. MyBatis返回主键,MyBatis Insert操作返回主键

    MyBatis返回主键,MyBatis Insert操作返回主键 >>>>>>>>>>>>>>>>> ...

  4. MyBatis魔法堂:Insert操作详解

    一.前言 数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅. 二. insert元素 属性详解 其属性如下: parameterType:入参的全限 ...

  5. veridata实验例(3)验证veridata发现insert操作不会导致同步

    veridata实验例(3)验证veridata发现insert操作不会导致同步 续接:<veridata实验举例(2)验证表BONUS与表SALGRADE两节点同步情况>,地址:点击打开 ...

  6. 多表insert操作详解

    --1.无条件的多表insert all ; ; ; --没有条件,向多个目标表全量插入,必须有all insert all --不指定emp_1后面的列,也不指定values,那么emp_1中的所有 ...

  7. 使用sparkSQL的insert操作Kudu

    可以选择使用Spark SQL直接使用INSERT语句写入Kudu表:与'append'类似,INSERT语句实际上将默认使用UPSERT语义处理: import org.apache.kudu.sp ...

  8. 【mybatis】mybatis中insert操作,返回自增id

    需求是这样的: mybatis中insert操作,返回自增id,因为这个自增id需要给后续业务用到. 原本是这样的: 将insert语句传入,正常执行insert操作,返回int永远是 0[失败] 或 ...

  9. 2016/05/25 PHP mysql_insert_id() 函数 返回上一步 INSERT 操作产生的 ID

    定义和用法 mysql_insert_id() 函数返回上一步 INSERT 操作产生的 ID. 如果上一查询没有产生 AUTO_INCREMENT 的 ID,则 mysql_insert_id() ...

随机推荐

  1. C和指针 第三章 变量的储存类型 auto、static、register以及static关键词

    变量的储存类型决定标量何时创建,何时销毁以及他的值保持多久.有三个地方可以储存变量: 普通内存static 运行时堆栈auto 硬件寄存器register 变量的缺省储存类型取决于它的声明位置: 静态 ...

  2. mediastreamer使用教程

    mediastreamer使用教程 1.各个函数功能简介 ms_filter_destroy 释放filter资源 ms_ticker_destroy释放ticker 说明:ticker为定时器线程, ...

  3. WebService -- Java 实现之 CXF (初体验)

    1. 认识WebService 简而言之,她就是:一种跨编程语言以及操作系统的远程调用技术. 大家都可以根据定义好的规范和接口进行开发,尽管各自的使用的开发语言和操作系统有所不同,但是由于都遵循统一的 ...

  4. OSSFS将OSS bucket 挂载到本地文件系统及注意事项

    OSSFS将OSS bucket 挂载到本地文件系统及注意事项 下载ossfs安装包 wget http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/as ...

  5. Python之模块,迭代器与生成器

    本节涉及内容: 1. 迭代器和生成器 2. 递归 3. 字符串格式化 4. 模块 内置模块 自定义模块 第三方模块 5. 序列化的模块 json pickle (一). 迭代器和生成器: 迭代器:  ...

  6. [jquery]添加行内容后根据下拉菜单选择内容对比之前已有选项,若有重置再提示

    今天页面上一个添加列内容时,要对选择内容与之前已有选项内容作对比,防止用户重复选择内容 页面HTML代码 <ul class="list-group xj-list-NObor xj- ...

  7. HTML5+CSS3+Jquery实现纯手工的垂直时光轴【附源码】

    前言 由于工作中需要,系统中需要记录不同时间发生的事件,为了提升用户体验,决定用时光轴来实现.[据说这个东西挺火的,QQ空间和FB都在用...] 这个时光轴是在 三生石上 这位博主的时光轴基础上修改的 ...

  8. Linux安装搜狗拼音输入法

    环境:Ubuntu1604 英文版 1.下载搜狗安装包 2.双击deb文件进行安装 3.在终端执行如下命令 im-config 弹出对话框,点击OK,然后又弹出一个对话框,点击YES.如果弹出的对话框 ...

  9. Jmeter之Web端HTTP性能测试(九)

    之前有跟大家讲过通过Badboy来录制脚本,这里就不多说了,需要的可以参考 Jmeter之Badboy录制脚本及简化脚本http请求(三) 这边就不用项目的链接了,直接采用http://www.cnb ...

  10. Some Link: Java Reflection

    http://docs.oracle.com/javase/tutorial/reflect/index.html https://bugs.openjdk.java.net/browse/JDK-4 ...