ITPub博客

首页 > Linux操作系统 > Linux操作系统 > AIX 上TSM备份DB2时报SQL2062N 总结

AIX 上TSM备份DB2时报SQL2062N 总结

原创 Linux操作系统 作者:lenx2000 时间:2009-12-11 01:01:13 0 删除 编辑
AIX 上配置完成TSM API后,备份DB2时报SQL2062N错误
折腾了一天在高人指点下终于搞明白其原因了。
现总结如下:


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

查看日志:/usr/tivoli/tsm/client/api/bin64/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设置追加权


# su - db2admin
$ db2 backup db RONEOLD  use tsm
SQL2062N  An error occurred while accessing media 
"/home/db2admin/sqllib/adsm/libtsm.a".  Reason code: "168".
已经配置好了几台。可这台怎么也过不去。报上面的错,
突然想起来DB2实例是32位的.但我配置的是64们API。
晕!

$ db2 backup db CDBOLD  use tsm
SQL2062N  An error occurred while accessing media 
"/home/db2admin/sqllib/adsm/libtsm.a".  Reason code: "406"
更新DB2配置后得重启数据库。不然会报406
方法:
db2 force application all      #停掉应用
db2stop force
db2start

SQL2062N看来这个错真是原因多啊!
NND每台原因都不同。



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

请登录后发表评论 登录
全部评论

注册时间:2009-07-19

  • 博文量
    155
  • 访问量
    516770