oracle 11g。由以前的9i升级而来。
一直出现4068,6508错误。
4068:
existing stats of packages%s%s%s has benn discarder
Cause? one of errors 4060-4067 when attempt to execute a stored procedure.
Action: Try again after proper re-initiallization of any application's state
6508:
"Pl/SQL: could not find program unit being called%s"
Cause :
Action:
通过各种版本实在是搞不定,肯定大家帮忙.
内容:
系统有个存储过程是发送短信的,其他过程通过该过程将短信内容插入到一个表中tb_sys_sms_send_cur,由另外一个过程定时来扫描该短信表,发送到短信接口,成功后删除该条记录。
系统2个库A,B;B库通过DBLINK插入到该短信表。
以前针对这种错误重复执行一遍就可以了,但是昨晚重复执行4遍还是报错。
下面是代码:
CREATE OR REPLACE PROCEDURE MASASYS.sp_sys_sms_send(is_serv_number in varchar2 , ---号码
is_send_date in date, ---计划发送时间
is_text in varchar2, ---短信内容
is_opt_user in varchar2, ---发送人
is_sms_type in varchar2, ---短信内容
is_plan_id in varchar2 , ---活动编码
oi_return_code out integer ---返回代码
) is
vs_username varchar2(30); --数据库用户登陆名
vs_program varchar2(48); --过程名
vd_logon_time date; --登陆时间
vs_machine varchar2(64); --机器名
vs_osuser varchar2(30); --操作系统用户名
vs_terminal varchar2(30); --终端机器名
vs_area_code char(5) default '35';
begin
/*select username,
nvl(program, 'xxx'),
logon_time,
nvl(machine, 'xxx'),
osuser,
terminal
into vs_username,
vs_program,
vd_logon_time,
vs_machine,
vs_osuser,
vs_terminal
from v$session
where sid in (select distinct sid from v$mystat );*/ 最开始以为是动态性能表的问题导致过程失效,所以换成下面的"",但是换过后还是报错,所以肯定不是动态性能表引起的。
select '','','','','',''
into vs_username,
vs_program,
vd_logon_time,
vs_machine,
vs_osuser,
vs_terminal
from dual ;
insert into [email=masasys.tb_sys_sms_send_cur@SEND_51]masasys.tb_sys_sms_send_cur[/email]
(serv_number,
send_date,
text,
opt_user,
opt_date,
area_code,
sms_type,
plan_id,
osuser,
terminal,
program,
logon_time,
machine,
username)
values
(is_serv_number,
is_send_date,
is_text,
is_opt_user,
sysdate,
vs_area_code,
is_sms_type,
nvl(trim(is_plan_id) ,'systemb'),
vs_osuser,
vs_terminal,
vs_program,
vd_logon_time,
vs_machine,
vs_username);
commit;
oi_return_code := 0;
return;
exception
when others then
oi_return_code := sqlcode;
rollback;
end;
报的错误信息
4068: ORA-04068: 已丢弃程序包 的当前状态
ORA-04065: 未执行, 已变更或删除 stored procedure "MASASYS.SP_SYS_SMS_SEND"
ORA-06508: PL/SQL: 无法找到正在调用 : "MASASYS.SP_SYS_SMS_SEND" 的程序单元
ORA-06512: 在 "MASAMK.SP_DELTENULL_MK_SC_USER_DTAL", line 32
ORA-06512: 在 line 1
调用方式:
masasys.sp_sys_sms_send( '00000000000',
to_date( to_char(sysdate,'yyyymmdd')||'100000','yyyymmdd hh24:mi:ss') ,
'删除为空数据数量:'||to_char(vi_count)||' delete /*+parallel(a,8)*/ from masamk.tb_mk_sc_user_dtal a
where SERV_NUMBER is null and a.statis_date=trunc(sysdate - 1 );',
'liuyi' ,
'1' ,
'system' ,
vi_sms_ret );