如题,数据库里面每天有个job执行一个过程,有时不小心修改存储过程,导致过程锁死。
想问下有没有什么方法可以预防解决该问题。
如锁定到一定时间后或者次数后回滚,还是释放资源什么的,让过程可以不被锁,不知道有没有什么办法。
例如下面的过程,是不是可以加些简单的处理语句来实现。
create or replace procedure DAY_REPORT_AREA(p_in_day varchar2) is v_sql varchar2(4000); vs_errmsg varchar2(500); v_in_yyyymmdd varchar2(8); begin IF trim(p_in_day) IS NULL THEN v_in_yyyymmdd := to_char(sysdate - 1, 'yyyymmdd'); ELSE v_in_yyyymmdd := p_in_day; END IF; v_in_yyyymm := substr(v_in_yyyymmdd, 1, 6);
---------------新入网放号------------------ v_data_type := 'AREA_NEW_USER_1001'; delete from xiem_report_toexcel where datatime = v_in_yyyymmdd and datatype = v_data_type; commit; v_sql := 'INSERT INTO XIEM_REPORT_TOEXCEL(DATATIME,DATAEXP,DATAVALUE,DATATYPE,DATAEXPLAIN) select ' || v_in_yyyymmdd || ',B.org_id,count(*),''' || v_data_type || ''',''新入网放号'' From xiem_mid_new_user_month_' || v_in_yyyymm || ' a, XIEM_ORG_ID B WHERE A.USER_SITE = B.ORG_ID and a.no_t_score is null and a.innet_date<=TO_NUMBER(' || v_in_yyyymmdd || ') group by B.org_id'; execute immediate v_sql; commit; end DAY_REPORT_AREA;