中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 数据库开发 > DB2
DB2数据库创建存储过程时遇到的错误
作者:qvlwk 时间:2007-06-22 15:05 出处:Developerworks中国 责编:月夜寒箫
              摘要:DB2数据库创建存储过程时遇到的错误

问:在 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
            /home/db2inst1/sqllib/function/routine/sqlproc/ABC/DB2INST1/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)即为受防护用户的主组

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

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有