问题真多。:
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博客 ” ,链接:https://blog.itpub.net/11134849/viewspace-695660/
,如需转载,请注明出处,否则将追究法律责任。