oracle数据库数据量较大时更新数据较慢问题
merge into USE_YCHCB(修改的目标表) t
using (select T3.ID,T3.NPID(查出需要修改的值) from USE_YCHCB_TEMP(需要修改的数据来源表) T3) s
on (t.ID = s.ID)(关联关系)
when matched then update set t.NPID = s.NPID;
五十多万条数据,10秒左右完成;
Oracle 存储过程编译卡死的解决方法
Oracle 存储过程编译卡死的解决方法
1:查V$DB_OBJECT_CACHE
SELECT*FROMV$DB_OBJECT_CACHEWHEREname='CUX_OE_ORDER_RPT_PKG'ANDLOCKS!='0';
注意:CUX_OE_ORDER_RPT_PKG 为存储过程的名称。发现 locks=2
2:按对象查出sid的值
select/*+ rule*/SIDfromV$ACCESSWHEREobject='CUX_OE_ORDER_RPT_PKG';
注意:CUX_OE_ORDER_RPT_PKG 为存储过程的名称。
3:查sid,serial#
SELECTSID,SERIAL#,PADDR FROM V$SESSION WHERE SID='刚才查到的SID';
4:杀session
altersystemkillsession'sid值,serial#值'immediate;
Oracle 存储过程编译卡死的解决方法
oracle数据update后怎么恢复到以前的数据
一、 查出你需要恢复的时间点
select * from V$SQL where SQL_TEXT like '%update USE_YCHCB (注:可执行update 的修改的字段名 set cclc)%'二、 得到修改之前的数据
select * from USE_YCHCB ( 注:误操作的表 ) as of timestamp to_timestamp('2020-06-25 11:38:46','yyyy-mm-dd hh24:mi:ss') (注:时间节点,后面可以接where 条件) ;