存储过程执行失败与sql668n

某日监控报存储过程执行失败,查看返回码为sql668n

[[email protected] bin]$ db2 ? sql668n
SQL0668N  Operation not allowed for reason code "<reason-code>" on table
      "<table-name>".
Explanation:
Access to table "<table-name>" is restricted. The cause is based on the
following reason codes "<reason-code>":

从解释看是在执行的时候遇到权限问题,然后经过一系列折腾找到两张表处于Load Pending状态,导致存储过程执行失败,处理步骤大体如下:

# 1 通过存储过程名找到Package名
[[email protected] bin]$ db2 "select substr(BNAME,1,20) as PACKAGE from syscat.ROUTINEDEP where SPECIFICNAME in (select substr(SPECIFICNAME,1,30) from syscat.PROCEDURES where PROCNAME=‘BONUS_INCREASE‘) and BTYPE=‘K‘"

PACKAGE
--------------------
P764091115          

  1 record(s) selected.

# 2 通过Package名找到此存储过程所依赖的对象
[[email protected] bin]$ db2 "select BTYPE,substr(BNAME,1,30) from syscat.PACKAGEDEP where PKGNAME=‘P764091115‘"

BTYPE 2
----- ------------------------------
T     EMPLOYEE
I     XEMP2
I     PK_EMPLOYEE                   

  3 record(s) selected.

# 3 查看表的状态,当然下面表状态是正常
[[email protected] bin]$ db2 load query table db2inst1.EMPLOYEE
Tablestate:
  Normal

至于怎么处理表Load Pending状态,请自行百度

时间: 01-06

存储过程执行失败与sql668n的相关文章

【转】mysql触发器的实战(触发器执行失败,sql会回滚吗)

1   引言 Mysql的触发器和存储过程一样,都是嵌入到mysql的一段程序.触发器是mysql5新增的功能,目前线上凤巢系统.北斗系统以及哥伦布系统使用的数据库均是mysql5.0.45版本,很多程序比如fc-star管理端,sfrd(das),dorado都会用到触发器程序,实现对于数据库增.删.改引起事件的关联操作.本文介绍了触发器的类型和基本使用方法,讲述了触发器使用中容易产生的误区,从mysql源码中得到触发器执行顺序的结论,本文最后是实战遭遇的触发器经典案例.没有特殊说明时,本文的

ORA-12011+ORA-06512–job执行失败问题

oracle库中的一个job,正常运行了一年多,因某种原因导致无法运行,系统尝试多次均失败之后下次执行时间就变成了 4000/1/1. 现导致job失败的问题已经解决,从新运行job时报 12011和06512错误. ERROR at line 1:ORA-12011: execution of 1 jobs failedORA-06512: at “SYS.DBMS_IJOB”, line 242ORA-06512: at “SYS.DBMS_JOB”, line 218ORA-06512:

程序中使用事务来管理sql语句的执行,执行失败时,可以达到回滚的要求。

1.设置使用事务的SQL执行语句 1 /// <summary> 2 /// 使用有事务的SQL语句 3 /// </summary> 4 /// <param name="sql"></param> 5 /// <param name="conn"></param> 6 /// <param name="tran"></param> 7 /// &l

sqlServer 存储过程执行遇到的问题及解决方案

1.EXEC 执行Sql语句被截断的问题: Sql语句: 1 SET @sqlSel='SELECT '+@sqlField+', 2 SUM(ISNULL(b.customsTariff_Sup,0))AS customsTariff_Sup,SUM(ISNULL(addedValueTax_Sup,0))AS addedValueTax_Sup,SUM(ISNULL(ConsumptTax_Sup,0))AS ConsumptTax_Sup, 3 SUM(ISNULL(customsTari

关于crontab定时任务执行失败发送报错邮件的问题

前几天,发现一个在服务器通过crontab执行的一个java程序,突然不执行了.后来经过排查,是由于运维在其他项目上线的时候,不知道什么原因,导致crontab中jar文件的执行,通过java -jar执行不了了,必须修改为java的全路径/usr/java/jdk1.7.0_79/bin/java -jar才可以执行.原因因该是java的一些什么路径问题,这个没有具体去了解. 就打算在程序中添加一个监控,不然程序挂了也不知道,必须数据出现问题了,才有可能发现问题. 首先,在程序中添加监控是没有

SQLServer 2012异常问题(一)--故障转移群集+镜像环境导致作业执行失败

原文:SQLServer 2012异常问题(一)--故障转移群集+镜像环境导致作业执行失败 先感谢一下我的同事们最先发现此问题,鸣谢:向飞.志刚.海云 最近在生产环境发现一个诡异的问题: 环境:WINDOWS 2012+SQLSERVER 2012 SP1,双节点的故障转移群集+单节点的SQLSERVER 2012 SP1实例(镜像) 生产数据库是从SQLSERVER 2008R2迁移到2012的,迁移过程很顺利,按照一般经验,可能导致数据库所有者丢失,因此在迁移后手动修改数据库所有者为sa,与

SQL Server2005/2008 作业执行失败的解决办法

数据库:SQL Server 2005/2008,运行环境:Windows Server 2008  在数据库里的所有作业都执行失败,包括自动执行和手动执行.在事件查看器里看到的错误报告如下: 该 作业失败.  无法确定所有者 AAA/Administrator (拥有作业 备份-AAA)是否有服务器访问权限 (原因: 无法获取有关 Windows NT 组/用户 'AAA/Administrator' 的信息,错误代码 0x534. [SQLSTATE 42000] (错误 15404)).

oracle 使用 dbms_lock.sleep暂停存储过程执行

grant execute on dbms_lock to USERNAME; ? dbms_lock.sleep(time)参数单位为秒 ? create or replace procedure initdata is num number := 0; begin ? for i in 1 .. 500 loop ? num := num + 1; if num >= 1000 then dbms_lock.sleep(5); num := 0; dbms_output.put_line('

DBA工具——DMV——通过sys.dm_exec_procedure_stats查看存储过程执行信息

原文:DBA工具--DMV--通过sys.dm_exec_procedure_stats查看存储过程执行信息 对于DBA来说,经常要手机存储过程的某些信息: 执行了多少次 执行的执行计划如何 执行的平均读写如何 执行平均需要多少时间 列名 数据类型 说明 database_id int 存储过程所在的数据库 ID. object_id int 存储过程的对象标识号. type char(2) 对象的类型: P = SQL 存储过程 PC = 程序集 (CLR) 存储过程 X = 扩展存储过程 t