日程Oracle记录

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 条件) ; 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。