insert操作卡死的处理过程
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操作卡死的处理过程的更多相关文章
- MyBatis魔法堂:Insert操作详解(返回主键、批量插入)
一.前言 数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅. 二. insert元素 属性详解 其属性如下: parameterType ...
- IBatisNet:让insert操作返回新增记录的主键值
项目引用ibatis包: IBatisNet.Common.dll --文件版本1.6.2.0 IBatisNet.DataAccess.dll IBatisNet.DataMapper.dll 项目 ...
- MyBatis返回主键,MyBatis Insert操作返回主键
MyBatis返回主键,MyBatis Insert操作返回主键 >>>>>>>>>>>>>>>>> ...
- MyBatis魔法堂:Insert操作详解
一.前言 数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅. 二. insert元素 属性详解 其属性如下: parameterType:入参的全限 ...
- veridata实验例(3)验证veridata发现insert操作不会导致同步
veridata实验例(3)验证veridata发现insert操作不会导致同步 续接:<veridata实验举例(2)验证表BONUS与表SALGRADE两节点同步情况>,地址:点击打开 ...
- 多表insert操作详解
--1.无条件的多表insert all ; ; ; --没有条件,向多个目标表全量插入,必须有all insert all --不指定emp_1后面的列,也不指定values,那么emp_1中的所有 ...
- 使用sparkSQL的insert操作Kudu
可以选择使用Spark SQL直接使用INSERT语句写入Kudu表:与'append'类似,INSERT语句实际上将默认使用UPSERT语义处理: import org.apache.kudu.sp ...
- 【mybatis】mybatis中insert操作,返回自增id
需求是这样的: mybatis中insert操作,返回自增id,因为这个自增id需要给后续业务用到. 原本是这样的: 将insert语句传入,正常执行insert操作,返回int永远是 0[失败] 或 ...
- 2016/05/25 PHP mysql_insert_id() 函数 返回上一步 INSERT 操作产生的 ID
定义和用法 mysql_insert_id() 函数返回上一步 INSERT 操作产生的 ID. 如果上一查询没有产生 AUTO_INCREMENT 的 ID,则 mysql_insert_id() ...
随机推荐
- 浏览器兼容innerText nextElementSibling firstElementChild
//下面是封装的方法,可以直接使用 //获dom对象的innerText的取值 function getInnerText(element){ //判断浏览器是否支持innerText if(type ...
- Vue in 2016
原文链接:Vue in 2016 Vue 作者尤雨溪对 Vue 在 2016 年的总结以及未来的展望 现在已经是2016的尾声了!在这过去的12个月里,Vue的持续增长速度已经超过了我的预期--这个项 ...
- 交叉编译fftw
交叉编译 fftw 使用的源码是 fftw-3.2.2-arm.tar.gz 新塘平台arm ./configure --prefix=/usr/local/fftw_arm --host=arm-l ...
- mysql datatime 设置默认值为CURRENT_TIMESTAMP报错`Invalid default value`
环境: Ubuntu mysql 5.5 解决方法: 升级mysql至5.6 apt-cache search mysql-server sudo apt-add-repository ppa:ond ...
- css content 如何自定义生成图标?
作者:仅愚链接:https://www.zhihu.com/question/22022905/answer/20585820来源:知乎著作权归作者所有,转载请联系作者获得授权. :before(或: ...
- 技术架构:IBatisNet
--连接数据库框架 1 providers.config 提供配制 常用的数据库连接程序 的xml文件 2 SqlMap.xml SQL语句执行结果和实体对象之间的映射文 ...
- java入门 第三季4
java集合框架中 java集合框架下
- [转]odoo常用openerp-server.conf配置参数详解
参数 说明 用法 addons_path addons模块的查找路径,多个路径用逗号分隔 addons_path = E:\GreenOdoo8.0\source\openerp\addons csv ...
- springMVC 学习(一)
本文主要介绍springmvc的框架原理,并通过一个入门程序展示环境搭建,配置以及部署调试. springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合 ...
- 分布式追踪系统dapper
http://www.cnblogs.com/LBSer/p/3390852.html 最近单位需要做自己的分布式监控系统,因此看了一些资料,其中就有google的分布式追踪系统dapper的论文:h ...