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. thinkphp一对多HAS_MANY

    关联关系通常我们所说的关联关系包括下面三种:一对一关联 :ONE_TO_ONE,包括HAS_ONE 和 BELONGS_TO 一对多关联 :ONE_TO_MANY,包括HAS_MANY 和 BELON ...

  2. BZOJ4551——[Tjoi2016&Heoi2016]树

    1.题意: 给定一颗有根树(根为1),有以下 两种操作:1. 标记操作:对某个结点打上标记(在最开始,只有结点1有标记,其他结点均无标记,而且对于某个 结点,可以打多次标记.)2. 询问操作:询问某个 ...

  3. python用二进制读取文件

    python二进制读取文件 很多时候,都需要用到二进制读取文件.毕竟很多信息不是以文本的形式存储.例如:图片,音乐等等.这些东西都是有规则的二进制文件. 在python中,二进制读取采用rb的方式. ...

  4. nginx访问不了zabbix安装配置界面

    通过yum安装的php等其他各种软件,配置好后,html目录下面php可以解析,但是就是访问不到setup.php文件.后来各种查找,发现是setup解析错误 PHP Parse error:  sy ...

  5. Python之路

    Python学习之路 第一天   Python之路,Day1 - Python基础1介绍.基本语法.流程控制              第一天作业第二天   Python之路,Day2 - Pytho ...

  6. NHibernate3快速上手教程FluentNHibernate配置与DBHelper

    很多学习NHibernate的新手很容易卡在配置文件这一关,正所谓万事开头难,上手后再配合官方文档就比较容易了. 网上关于配置文件的资料非常多,但由于版本的问题,许多老的教程中都没有明确指出类库的版本 ...

  7. textarea输入回车,前台jsp不回车问题解决

    jsp引入标签: <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"% ...

  8. xamarin真的是一个鸡肋吗?

    team leader 极力推荐 Xamarin,于是下载下来体验了一把,并没有觉得用它来开发 App 会爽到哪里去,可能对于从事 C#开发的开发人员来说是个福音吧.于是看看别人对其评价如何,现粘贴如 ...

  9. 解决weblogic.net.http.SOAPHttpsURLConnection incompatible with javax.net.ssl.HttpsURLConnection

    1. 按照网上的办法,可以修改代码解决问题,但是由于我们使用的是别人的jar包,不能修改代码,: URL url = new URL(null, "https://www.baidu.&qu ...

  10. .NET 获取客户端的操作系统版本、浏览器版本和IP地址

    我们在使用.NET做网站的时候,很多情况下需要需要知道客户端的操作系统版本和浏览器版本,怎样获取客户端的操作系统和浏览器版本呢?我们可以通过分析UserAgent来获取. .NET 获取客户端的操作系 ...