AIX 上配置完成TSM API後,備份DB2時報SQL2062N錯誤

lenx2000發表於2011-05-18
問題真多。:
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<. is="">
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<. is="">
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<. is="">
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<. is="">

分析: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<. is="">
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經驗總結
AIX 上配置完成TSM API後,備份DB2時報SQL2062N錯誤
請登入後發表評論 登入
全部評論

相關文章