oracle中 insert into table from DB LINK 慢死,卡,一直死锁 20
在表空间中加入了DB-LINK,insertinto本地表selectfromDB-LINK关联表时速度非常慢,30多条记录几个小时了没有反应,用select直接查询很快...
在表空间中加入了DB-LINK ,insert into 本地表select from DB-LINK关联表时速度非常慢,30多条记录几个小时了没有反应,用select直接查询很快就能查出这30多条记录,不知道为什么,大家帮帮忙,sql如下
select /* +DRIVING_SITE(T1) */
T1.EBELN,
T2.MATNR,
T3.EINDT,
T1.LIFNR,
T1.AEDAT,
T2.MENGE,
T2.WERKS,
T1.WAERS,
ROUND(T2.NETPR / T2.PEINH,5)
from EKKO@SAP T1, EKPO@SAP T2, EKET@SAP T3
where T1.EBELN = T2.EBELN
and T2.EBELP = '00010'
and T2.ELIKZ is null
and T2.EBELN = T3.EBELN
and T2.EBELP = T3.EBELP
and T3.ETENR = '0001'
and T1.REGDT >= dt_Start
and T1.REGDT <= dt_End;
select 前面忘了加insert into
insert into 本地表
(字段)
select
from
DBLINK表 展开
select /* +DRIVING_SITE(T1) */
T1.EBELN,
T2.MATNR,
T3.EINDT,
T1.LIFNR,
T1.AEDAT,
T2.MENGE,
T2.WERKS,
T1.WAERS,
ROUND(T2.NETPR / T2.PEINH,5)
from EKKO@SAP T1, EKPO@SAP T2, EKET@SAP T3
where T1.EBELN = T2.EBELN
and T2.EBELP = '00010'
and T2.ELIKZ is null
and T2.EBELN = T3.EBELN
and T2.EBELP = T3.EBELP
and T3.ETENR = '0001'
and T1.REGDT >= dt_Start
and T1.REGDT <= dt_End;
select 前面忘了加insert into
insert into 本地表
(字段)
select
from
DBLINK表 展开
展开全部
分步进行实验:
1、反复查询几次不同条件的数据,彻底搞清查询是否偶尔有卡的现象。如果没有那么做下一步;
2、用本地数据模仿远程数据插入到表中,看看是否有卡的现象。如果这个也没有问题做下一步;
3、再试试远程数据插入到本地的表语句。还有问题再试试下一步;
4、在本地创建一个与上面的一样表,往新表中插入记录试试。(可以试试换个表空间或用户)
注意检查表是否与其他表相关联,或者还有其它用户也在并发操作此表。总之通过实验找出问题的结症就好办了。
1、反复查询几次不同条件的数据,彻底搞清查询是否偶尔有卡的现象。如果没有那么做下一步;
2、用本地数据模仿远程数据插入到表中,看看是否有卡的现象。如果这个也没有问题做下一步;
3、再试试远程数据插入到本地的表语句。还有问题再试试下一步;
4、在本地创建一个与上面的一样表,往新表中插入记录试试。(可以试试换个表空间或用户)
注意检查表是否与其他表相关联,或者还有其它用户也在并发操作此表。总之通过实验找出问题的结症就好办了。
更多追问追答
追问
朋友的回答思路很清晰,我也一直是按照这个步骤去检查原因的,还是没有找到
查询我做过多次,一直没有问题,速度很快
在本地数据库可以插入数据,不是表死锁等原因
其他存储过程中远程数据插入到本地没有问题,远程数据库一直连接没有中断等现象
换过用户执行同样的存储过程结果一样,卡着不动,表空间没有试过,空间大小是自增的
不过仍然感谢朋友的帮助
追答
以上实验都不存在问题,那么怀疑程序(存储过程)有问题了。注意分析以下插入语句吧。
一般采用两种方式插入记录:
1、Insert into 表(列,...) Values(...
2、Insert into 表(列,...) Select ...
不知道你是采用了哪种方式,变换以下插入方式试试吧。还有查询和插入之间是否有什么操作没有,或许在这个地方出现了什么意想不到的问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询