ITPub博客

首页 > Linux操作系统 > Linux操作系统 > AIX 上配置完成TSM API后,备份DB2时报SQL2062N错误

AIX 上配置完成TSM API后,备份DB2时报SQL2062N错误

原创 Linux操作系统 作者:lenx2000 时间:2011-05-18 12:49:18 0 删除 编辑
问题真多。:
bash-3.2$ db2 backup db BPFDB online use tsm
SQL2062N  An error occurred while accessing media 
"/home/db2admin/sqllib/adsm/libtsm.a".  Reason code: "400"
查看错误日志:
bash-3.2$ tail -f tsmdb2.log 

05/18/11   20:23:56 ANS1036S The option 'SM' or the value supplied for it is not valid. It was found in options file 'OPTIONS STRING'
         at line number: 1
         The complete entry: 'TSM'

05/18/11   20:23:56 ANS1038S Invalid option specifie

参数设置错误:

 db2 update db cfg for BPFDB using VENDOROPT  :"''" (双引号里包着单引号)

OK







现总结如下:

db2 => ? SQL2062N


SQL2062N存取介质 "<介质>" 时出错。原因码:"<原因码>"

解释:

数据库实用程序处理期间,在存取设备、文件、TSM
或供应商共享库时发生意外的错误。下面是原因码列表:


 1 试图初始化设备、文件、TSM 或供应商共享库失败。

 2 试图终止设备、文件、TSM 或供应商共享库失败。

 其它 若正在使用 TSM,则这是一个由 TSM 返回的错误代码。

实用程序停止处理。

用户响应:

确保实用程序所使用的设备、文件、TSM
或供应商共享库可用,并重新提交实用程序命令。若该命令仍不成功,则与
技术服务代表联系。


$ db2 backup db TESTDB use tsm 
SQL2062N  An error occurred while accessing media 
"/db2home/db2admin/sqllib/adsm/libtsm.a".  Reason code: "138".


# su - db2admin
$ db2 backup db RONEOLD  use tsm
SQL2062N  An error occurred while accessing media 
"/home/db2admin/sqllib/adsm/libtsm.a".  Reason code: "168".



查看日志:/usr/tivoli/tsm/client/api/bin/dsmierror.log如下

12/11/09   13:53:58 Unable to locate valid trusted communication agent.
12/11/09   13:53:58 tcaPath is >/usr/tivoli/tsm/client/api/bin64/dsmtca<.  rc is 138 
12/11/09   13:56:34 Unable to locate valid trusted communication agent.
12/11/09   13:56:34 tcaPath is >/usr/tivoli/tsm/client/api/bin64/dsmtca<.  rc is 138 
12/11/09   13:56:38 Unable to locate valid trusted communication agent.
12/11/09   13:56:38 tcaPath is >/usr/tivoli/tsm/client/api/bin64/dsmtca<.  rc is 138 
12/11/09   14:07:31 Unable to locate valid trusted communication agent.
12/11/09   14:07:31 tcaPath is >/usr/tivoli/tsm/client/ba/bin/dsmtca<.  rc is 138 

分析:SQL2062N  An error occurred while accessing media 
表示db2在做备份时,无法访问与TSM相关的配置文件。
主要是因为安装配置TSM是以root执行的。
但备份时是DB2用户执行的,往往存在如下权限问题
1.没有生成密码文件。
DB2在调用API与TSMserver通讯时要提交密码,用如下方法生成密码文件。

以root用户生成密码:
cd /home/db2admin/sqllib/adsm
./dsmapipw  
密码存放目录:
cd /etc/security/adsm
TSM.PWD ( 此文件需只有root可以读)

当然有多个opt时可以指定./dsmapipw -optfile=/usr/tivoli/tsm/client/api/bin64/dsm.opt
生成密码之前一定要设置环境变量:#TSM API
export DSMI_DIR=/usr/tivoli/tsm/client/api/bin64
export DSMI_CONFIG=/usr/tivoli/tsm/client/api/bin64/dsm.opt
export DSMI_LOG=/usr/tivoli/tsm/client/api/bin64
export PATH=$DSM_DIR:$DSMI_DIR:$PATH


2.日志文件权限
DSMI_LOG变量设置的目录及*.log文件都要db2用户写权限,
chmod 666 /usr/tivoli/tsm/client/api/bin64
chmod 666 /usr/tivoli/tsm/client/api/bin64/*.log
-rw-rw-rw-   1 root     system         5182 Dec 11 16:15 dsmsched.log (调度日志)
-rw-rw-rw-   1 root     system         2629 Dec 11 16:15 dsmwebcl.log (web日志)
-rw-rw-rw-   1 root     system          150 Dec 11 16:08 dsmierror.log (api错误日志)


3.dsmtca程序S权限
我今天的问题就出现这个问题上,经高人指点才得以过关。
原来db2用户(一般为db2admin db2inst1)在备份时要去访问root设置的TSM密码,
但db2用户又没有权限,怎么办呢。还记得unix系统都有个不常用的S权限吗。
附件中有说明。
由于之前我做过
chmod 777 /usr/tivoli/tsm/client/api/bin64/
所以/usr/tivoli/tsm/client/api/bin64/dsmtca文件的S权限丢了。
在dsmierror日志中出现
12/11/09   13:56:38 tcaPath is >/usr/tivoli/tsm/client/api/bin64/dsmtca<.  rc is 138 
12/11/09   14:07:31 Unable to locate valid trusted communication agent.
这个错误。
解决办法:
a.重装TSM API (tsm在重装过程中不会影响之前的配置,只会替换程序文件)
b.chmod 4755 dsmsta 
ls -al
-rwsr-xr-x   1 root     system      5276923 Oct 31 2007  dsmtca



附件:文件权限详解:

文件权限除了r、w、x外还有s、t、i、a权限:

s:文件属主和组设置SUID和GUID,文件在被设置了s权限后将以root身份执行。
在设置s权限时文件属主、属组必须先设置相应的x权限,否则s权限并不能正真生效
(c h m o d命令不进行必要的完整性检查,即使不设置x权限就设置s权限,
chmod也不会报错,当我们ls -l时看到rwS,大写S说明s权限未生效)。
Linux修改密码的passwd便是个设置了SUID的程序
普通用户无读写/etc/shadow文件的权限确可以修改自己的密码。

ls -al /usr/bin/passwd
-rwsr-xr-x 1 root root 32988 2008-12-08 17:17 /usr/bin/passwd
我们可以通过字符模式设置s权限:chmod a+s filename,也可以使用绝对模式进行设置:
设置s u i d:将相应的权限位之前的那一位设置为4;
设置g u i d:将相应的权限位之前的那一位设置为2;
两者都置位:将相应的权限位之前的那一位设置为4+2=6。

如:chmod 4764 filename   //设置SUID
t :设置粘着位,一个文件可读写的用户并一定相让他有删除此文件的权限,
如果文件设置了t权限则只用属主和root有删除文件的权限,通过chmod +t filename 来设置t权限。

i:不可修改权限  例:chattr u+i filename 则filename文件就不可修改,
无论任何人,如果需要修改需要先删除i权限,用chattr -i filename就可以了。
查看文件是否设置了i权限用lsattr filename。

a:只追加权限, 对于日志系统很好用,这个权限让目标文件只能追加,
不能删除,而且不能通过编辑器追加。可以使用chattr +a设置追加权



ash-3.2$ db2 backup db RONEOLD  use tsm
SQL2071N  An error occurred while accessing the shared library 
"/home/db2admin/sqllib/adsm/libtsm.a". Reason code: "1".
bash-3.2$ cd /home/db2admin/sqllib/adsm/

修改文件夹权限后OK
bash-3.2# chmod 777 /usr/tivoli/
bash-3.2# chmod 777 /usr/tivoli/tsm
bash-3.2# chmod 777 /usr/tivoli/tsm/client
bash-3.2# chmod 777 /usr/tivoli/tsm/client/api
bash-3.2# chmod 777 /usr/tivoli/tsm/client/api/bin
bash-3.2# su - db2admin

发生以下错误。
bash-3.2$ db2 backup db CDBOLD  use tsm
SQL2062N  An error occurred while accessing media 
"/home/db2admin/sqllib/adsm/libtsm.a".  Reason code: "184".
bash-3.2$ 


原来是DB2策略域没有设置好


















来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11134849/viewspace-695660/,如需转载,请注明出处,否则将追究法律责任。

上一篇: FASTback经验总结
请登录后发表评论 登录
全部评论

注册时间:2009-07-19

  • 博文量
    153
  • 访问量
    478298