当前位置: 首页 > 图文教程 > 服务器 > Linux服务器 > 快速解决DB2创建存储过程时所遇到的错误

Linux服务器
Linux上双网卡绑定方法(Suse9SP3)
Linux操作系统调优参数的意义
Linux下使用SSH客户端及其Sftp文件传送
教你恢复被误删除的Linux文件
SQL Server注入大全及防御
Linux无法解析域名的解决办法
Linux系统下安装和配置MyEclipse的方法
Ubuntu下VirtualBox 1.4.0设置文件共享
Windows与Linux系统共享StarDict字典文件
修改Linux下相关的登陆信息
Windows通过SecureCRT远程登录Linux主机
Linux操作系统如何修改SWAP交换区的大小
Linux操作系统下为Apache目录添加密码
Linux时间设置与同步(NTP)
Linux内核补丁AMD旁路转换缓冲(TLB)错误
Linux架设DHCP服务器的方法
Fedora 8下Apache配置与管理
Linux操作系统下用单网卡捆绑双IP的方法
Ubuntu Linux系统环境变量配置文件
SUSE Linux中将Tomcat作为Service运行

Linux服务器 中的 快速解决DB2创建存储过程时所遇到的错误


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-18   浏览: 40 ::
收藏到网摘: n/a

某些情况下, Unix操作系统环境下会发生当DB2用户使用db2 -td@ -vf <存储过程创建脚本文件> 创建存储过程失败的情况,而查看 db2diag.log 文件则发现有类似如下报错信息:

以下为引用的内容:
2002-10-05-13.47.40.075759 Instance:db2inst1 Node:000
PID:1355876(db2agent (ABC) 0) TID:1 Appid:OC10103F.OD12.017302185202
oper system services sqloChangeFileOwnership Probe:100 Database:ABC

errno:
0x0FFFFFFFFFFF7AF0 : 0x00000001 ....

PID:1355876 TID:1 Node:000 Title: Path/Filename
/home2inst1/sqllib/function/routine/sqlproc/ABC2INST1/tmp/

2002-10-05-13.47.40.166289 Instance:db2inst1 Node:000
PID:1355876(db2agent (ABC) 0) TID:1 Appid:OC10103F.OD12.017302185202
PSM - SQL Procedure psm_ctrl::psm_init_backend Probe:230 Database:ABC

DIA8402C A disk error has occurred.
ZRC=0x860F0004

PID:1355876 TID:1 Node:000 Title: SQL procedure initialization:
0x09000000031213BC : 696E 7374 616E 6365 206F 776E 6572 2064 instance owner d
0x09000000031213CC : 6F65 7320 6E6F 7420 6265 6C6F 6E67 2074 oes not belong t
0x09000000031213DC : 6F20 6665 6E63 6564 2075 7365 7227 7320 o fenced user's
0x09000000031213EC : 7072 696D 6172 7920 6772 6F75 70 primary group

解决方法:

在 Unix 平台下的 DB2 存储过程对于实例用户和受防护用户之间的关系有一个约束,即 DB2 实例用户必须同时是受防护用户的主组中的一个用户。上述问题的发生就是由于在系统上,实例用户未加入至受防护用户的主组中,从而引发了存取权限不够的问题所导致的,而并非真的发生了如日志中所报的磁盘错误。解决这一问题的方法很简单,只要将实例用户加入该主组即可。但有时用户会发现,即使已将用户加入到指定组,问题仍然存在,这时还应检查一下实例用户所加入的组是否是实例用户所对应的受防护用户的主组,即检查一下加入的组是否正确。

要找到实例用户所应的受防护用户以及受防护用户的主组,可用如下方法:

1. 转入实例用户 Home 路径下的 sqllib/adm 路径。

2. 执行命令:ls -l .fenced,会得到类似如下输出。

-r--r--r-- 1 db2fencj db2fgrp2 0 Jul 30 09:57 .fenced

3. 输出中表明,该文件所属的用户(db2fencj)即为受防护用户,所属的组(db2fgrp2)即为受防护用户的主组。

然后,用户即可验证实例用户是否被加入到了正确的组中,如果结果正确,就可以解决上述问题了。