【DB2學習】由於TSM損壞導致歸檔失敗

楊奇龍發表於2010-09-16

2010-01-29-10.19.25.544030+480 I54728390A401      LEVEL: Error
PID     : 434422               TID  : 1           PROC : db2logmgr (MYDB) 0
INSTANCE: db2inst1             NODE : 000
FUNCTION: DB2 UDB, data protection services, sqlpgArchiveLogFile, probe:3160
MESSAGE : Failed to archive log file S0002000.LOG to USEREXIT from
          /home/db2inst1/db2inst1/NODE0000/SQL00004/SQLOGDIR/ with rc = 8.

2010-01-29-10.19.25.544197+480 I54728792A380      LEVEL: Warning
PID     : 434422               TID  : 1           PROC : db2logmgr (MYDB) 0
INSTANCE: db2inst1             NODE : 000
FUNCTION: DB2 UDB, data protection services, sqlpgRetryFailedArchive, probe:4780
MESSAGE : Still unable to archive log file 2000 due to rc 8 for LOGARCHMETH1
          using method 4 and target .

2010-01-29-10.19.34.944387+480 I54729173A401      LEVEL: Error
PID     : 434422               TID  : 1           PROC : db2logmgr (MYDB) 0
INSTANCE: db2inst1             NODE : 000
FUNCTION: DB2 UDB, data protection services, sqlpgArchiveLogFile, probe:3160
MESSAGE : Failed to archive log file S0002132.LOG to USEREXIT from
          /home/db2inst1/db2inst1/NODE0000/SQL00004/SQLOGDIR/ with rc = 8.

2010-01-29-10.19.34.944553+480 I54729575A319      LEVEL: Error
PID     : 434422               TID  : 1           PROC : db2logmgr (MYDB) 0
INSTANCE: db2inst1             NODE : 000
FUNCTION: DB2 UDB, data protection services, sqlpgArchivePendingLogs, probe:1500
MESSAGE : Log archive failed with rc 8 for LOGARCHMETH1.

解決思路 :

1  從 Failed to archive log file S0002132.LOG to USEREXIT from 。。。看出歸檔到userexit 指定的路徑失敗!所以應該檢視userexit 指定的歸檔路徑是什麼地方。

編譯使用者出口程式

先改成C檔案,並設定許可權

mv /home/db2inst/sqllib/samples/c/db2uext.cdisk /home/db2inst/db2uext.c

chmod 777 /home/db2inst/db2uext.c

然後修改該檔案,主要修改以下幾個關鍵項

vi /home/db2inst/db2uext.c

#define ARCHIVE_PATH      "/u/"           /* path must end with a slash       */

#define RETRIEVE_PATH     "/u/"           /* path must end with a slash       */

#define AUDIT_ACTIVE          1           /* enable audit trail logging        */

#define ERROR_ACTIVE          1           /* enable error trail logging        */

#define AUDIT_ERROR_PATH  "/u/"           /* path must end with a slash      */

#define AUDIT_ERROR_ATTR    "a"           /* append to text file             */

#define BUFFER_SIZE          32           /* # of 4K pages for output buffer    */

3 看出這裡的歸檔路徑,(實際上該資料庫是由TSM來管理備份的),TSM 失效,導致歸檔失敗!

解決辦法:

將userexit  設定為off ,將logarchmeth1設定為本地磁碟路徑,DISK:具體的路徑

附上:

userexit 引數的含義:當使用該引數時,日誌的歸檔和檢索使用使用者出口程式自動執行的,這個出口程式是由db2uext2 呼叫的。這個程式用於將線上歸檔日誌移動到與活動日誌目錄不同的目錄中,或者移動到另一個媒介(此案例是在TSM 指定 的目錄)。當在ROLLFORARD 操作期間需要某些離線歸檔日誌時,這個程式還可以用於將歸檔日誌取出到活動日誌目錄中。在windows下,db2uext2 必須在sqllib/bin 目錄下,在unix下,db2uext2 必須在sqllib/adm目錄下。

v9 版本以後 就不再推薦使用該引數了!而是使用 logarchmeth1 和logarchmeth2這兩個引數來管理資料庫日誌的歸檔。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-674177/,如需轉載,請註明出處,否則將追究法律責任。

相關文章