連接環境補充資料

最常見的 DB2 Connect 問題

本節列出使用 DB2 Connect 時最常見的連接問題。在各種問題發生時, 都會提供您:

註:

  1. 請參閱產品的快速入門手冊, 以及最新的「版本注意事項」,取得建議軟體修正程式層次的相關最新資訊。

  2. 若是 APPC 通信特定的訊息與回覆碼組合, 則可能也會指示 SNA 感應碼。目前, 與特定訊息相關的 SNA 感應碼資訊必須從 SNA 子系統取得。

    有時候也可以透過系統日誌來檢視 SNA 感應碼。是否可檢視,都取決於所使用的 SNA 子系統, 但是在某些狀況下,您可能必須啟用 SNA 追蹤來重建問題, 才能取得感應碼資訊。

  3. 有關閘道這個術語,請參閱 DB2 Connect Enterprise Edition。

SQL0965 或 SQL0969

症狀

訊息 SQL0965 及 SQL0969 可以不同的回覆碼從 DB2 Universal Database for AS/400、DB2 Universal Database for OS/390、 DB2 for MVS/ESA 及 DB2 for VM &VSE 發出。

當您遇到其中一個訊息時,您應該在文件中尋找原來的 SQL 碼, 以取得發出該訊息的資料庫伺服器產品。

解決方案

從主電腦資料庫收到的 SQL 碼無法轉換 請先根據錯誤碼更正問題,然後再重新提出失敗的命令。

CONNECT 期間發生 SQL1338

症狀/原因

符號式目的地名稱尚未定義,或未正確定義。

例如,使用 APPC 節點, 而且在 DB2 節點目錄中指定的符號式目的地名稱與本端 APPC 通信子系統架構中的 CPI-C 登錄不符時, 就會發生這個問題。

另一個原因可能是您的機器上安裝了數個 SNA 堆疊。 您可能需要檢查 PATH 及 LIBPATH, 以確保系統先參照您要使用的堆疊。

解決方案

  1. 請確認 DB2 節點目錄登錄中所指定的 CPIC 通信端資訊設定檔名稱確實符合 SNA 架構 (它有大小寫的區分)。
  2. 您可能需要檢查 PATH 及 LIBPATH, 以確保系統先參照您要使用的 SNA 堆疊。

CONNECT 期間發生 SQL1403N

症狀

SQL1403N 提供的使用者名稱及/或通行碼不正確。

解決方案

  1. 使用者無法在 DB2 Connect 工作站上驗證身份。請判斷在 DB2 Connect 工作站上是否需要驗證使用者的身份。

    如果需要的話,請確認 CONNECT 陳述式上所提供的通行碼是否正確 (必要時)。

    如果不需要的話, 一定是系統資料庫目錄登錄在編目時誤用了 AUTHENTICATION SERVER (如果沒有明確指定 AUTHENTICATION 的話, 則這是預設值)。 如果是這種情況,請使用 AUTHENTICATION DCS 或 CLIENT 重新為該登錄編目。

  2. 無通行碼可傳送至目標伺服器資料庫。如果系統資料庫目錄登錄是使用 AUTHENTICATION DCS 編目的話,則通行碼必須從 DB2 Client 傳到目標伺 服器資料庫。 在某些平台上 (例如,AIX),只有在 CONNECT 陳述式上有提供通行碼時, 才能取得通行碼。

SQL5043N

症狀

一或數個通訊協定的支援無法順利啟動。 但核心資料庫管理程式的功能可順利啟動。

或許是在 DB2 Connect 閘道上未啟動 TCP/IP 通訊協定 先前可能已順利啟動從屬站連接。

如果 diaglevel = 4, 則 db2diag.log 中可能含有相同的登錄,例如:

1997-05-30-14.09.55.321092   Instance:svtdbm5   Node:000
PID:10296(db2tcpcm)   Appid:none
common_communication  sqlcctcpconnmgr_child   Probe:46
   DIA3205E Socket address "30090" configured in the TCP/IP
   services file and
   required by the TCP/IP server support is being used by another
   process.

解決方案

此警告是表示 DB2 Connect (作為遠端從屬站的閘道) 在處理一或數個從屬站通訊協定時, 遇到麻煩的症狀。 這些通訊協定可以是 TCP/IP、APPC 及其它, 而且通常該訊息表示,定義給 DB2 Connect 的通訊協定之一未正確架構。

通常原因是 DB2COMM 設定檔變數尚未定義,或未正確定義。 一般而言,問題的產生主要是因為定義在資料庫管理程式架構中的名稱 (例如, svcename、nname 或 tpname) 與 DB2COMM 變數不符。

可能的情況之一是,先前已順利連接, 但卻在沒有變更任何架構的狀況下,發生 SQL5043 錯誤訊息。 遠端系統使用 TCP/IP 通訊協定時, 若因某種原因而異常終止連接的話,會發生這種問題 發生這個問題時,連接可能還存在從屬站上, 而且可以發出如下所示的命令, 不需要進一步處理,即可復置該連接。

最有可能的原因是, 其中一個連到閘道的從屬站在 TCP/IP 埠上還有一個 handle。在每一部連到閘道的從屬站機器上:

  1. db2 terminate
  2. db2stop

SQL30020

症狀

SQL30020N 執行失敗, 因為發生一個「分散式通訊協定錯誤」,這將會影響後續命令及 SQL 陳述式的順利執行。

解決方案

連絡服務人員,告知所發生的錯誤。

請檢查 db2dump 目錄,看看有沒有 ffdc 傾出 (pid.000),然後, 用 db2fdump 將這個傾出檔案格式化, 並在結果檔案中搜尋 "ERROR"。 MVS ABEND 可能會列在這裡。在這個情況下,請檢查 MVS 主控台, 取得進一步的資訊,然後在「DB2 for MVS Messages and Codes」一書中查閱異常終止碼。

SQL30060

症狀

SQL30060N "<authorization-ID>" 沒有執行作業 "<operation>" 的專用權。

解決方案

連接到 DB2 for MVS 或 DB2 for OS/390 時, 通信資料庫 (CDB) 表格尚未正確更新 請參閱:

SQL30061

症狀

連接到錯誤的主電腦或 AS/400 資料庫伺服器位置 - 找不到目標資料庫。

解決方案

可能是在 DCS 目錄登錄中指定的伺服器資料庫名稱錯誤。 發生這種錯誤時,會傳回 SQLCODE -30061 給應用程式。

請檢查 DB2 節點、資料庫及 DCS 目錄登錄 DCS 目錄登錄中的目標資料庫名稱欄位,必須根據平台與其資料庫名稱相對應。 例如,若是 DB2 Universal Database for OS/390 資料庫, 則要使用的名稱應該與 Boot Strap Data Set (BSDS) "LOCATION=locname" 欄位中所使用的名稱相同 (在啟動「分散式資料機能」(DDF) 時在 DSNL004I 訊息 (LOCATION=location) 中也有提供)。

DB2 Connect 快速入門一書包含如何更新 DB2 目錄的範例。 請參閱每一章中說明 SNA 架構的「更新 DB2 目錄」段落, 或者參閱「架構 DB2 Connect 的主電腦及 AS/400 資料庫」一章及「架構 TCP/IP 連接」一節。

APPC 或 APPN 節點的正確命令如下:

   db2 catalog appc node <node_name> remote <sym_dest_name> security program
   db2 catalog dcs database <local_name> as <real_db_name>
   db2 catalog database <local_name> as <alias> at node <node_name> 
                authentication dcs

TCP/IP 節點的正確命令如下:

   db2 catalog tcpip node <node_name> remote <host_name_or_address>
                server <port_no_or_service_name>
   db2 catalog dcs database <local_name> as <real_db_name> 
   db2 catalog database <local_name> as <alias> at node <node_name>
                authentication dcs

若要連到資料庫,請發出:

   db2 connect to <alias> user <user_name> using <password>

CONNECT 期間,發生有回覆碼 119C 的 SQL30073

症狀

訊息 SQL30073 發出時, 附帶回覆碼 119C。這項錯誤會發生在目標伺服器資料庫不支援 DB2 client 在透過 DB2 Connect 連接時所使用的字碼頁。該字碼頁是從執行 DB2 client 的作業環境架構中衍生出來的。

如需進一步的資訊,請參閱 Administration Guide

解決方案

通常,您只要在目標伺服器資料庫系統上安裝修正程式,即可解決這個問題。 請連絡適當的服務組織, 取得並引用可解決此問題的修正程式。

另有暫時解決方案,亦即使用者可以設定 DB2CODEPAGE 環境變數, 置換預設的字碼頁。 請檢查語言環境,或請設定 DB2CODEPAGE=850。

在 UNIX 平台上,使用者可以設定 LANG 環境變數為別的值,切換到別的字碼頁上。

SQL30081N,有回覆碼 1

症狀

症狀為下列訊息及 SNA 感應碼:

  db2 connect to <database name> user <userid>
  請輸入 <userid> 的通行碼:
   SQL30081N  偵測到通信錯誤。
   使用的通訊協定:"APPC"。  使用的通信 API:"CPI-C"。
   偵測到錯誤的位置:""。 偵測到錯誤的通信功能:
  "cmallc"。  通訊協定特定的錯誤碼:"1", "*",
  "0x10030021".
   SQLSTATE=08001

解決方案

在這個範例中,感應碼是 10030021。

與此錯誤訊息相關的最常見感應碼,以及每一種情況的建議解決方案如下:

  1. SQL30081N 有回覆碼 1 及感應碼 0877002C
    

    所指定的網路名稱錯誤。

  2. SQL30081N 有回覆碼 1 及 SNA 感應碼 ffff0003
    

    指定了錯誤的 MAC 位址,或 SNA 鏈結不在作用中。

  3. SQL30081N 有回覆碼 1 及 SNA 感應碼 10030021
    

    LU 類型不符。

  4. SQL30081N 有回覆碼 1 及 SNA 感應碼 084B6031
    

    DSNZPARM 中的 MAXDBAT (在 DB2 for MVS 或 DB2 for OS/390 主電腦上) 設定為 0。

其它建議:

  1. 建立本端 LU 設定檔時,請將 LU 定義為預設的 LU。 例如,在 CM2 的「SNA 特性」列示畫面中,請執行下列作業之一:
  2. 檢查 DB2 Connect 閘道上的 SNA 是否已啟動。
  3. 如果您是使用 DB2 for MVS 或 DB2 for OS/390, 請檢查「分散式資料機能」(DDF) 位址空間是否已經啟動,而且 DB2 是否正在執行中。

SQL30081N,有回覆碼 2

症狀

收到訊息 SQL30081N,有回覆碼 2 及 SNA 感應碼 08120022。

解決方案

NCP (鏈結的主電腦端) 的 NUMILU 參數可能設定為預設值 (0)。請檢查是否有此種情形。 必要時, 請修改 NCP 定義,並在變更生效之後,重試此作業。

SQL30081N,有回覆碼 9

症狀

症狀是如下的訊息 (在此情況下不需要 SNA 感應碼):

   db2 connect to <database> user <userid>
   SQL30081N  偵測到通信錯誤。
   使用的通訊協定:"APPC"。  使用的通信 API:"CPI-C"。
   偵測到錯誤的位置:""。 偵測到錯誤的通信功能:
   "cmsend"。通訊協定特定的錯誤碼:"9", "*",
   "0x10086021"。
   SQLSTATE=08001

解決方案

問題是未正確定義 DB2 Connect 系統上的「異動程式」名稱 (TPNAME)。 例如,您可能已經更新 SNA 架構,但卻未在 DB2 Connect 閘道上加以驗證。如需進一步的詳細資訊, 請參閱 DB2 Connect Enterprise Edition for OS/2 與 Windows NT 快速入門DB2 Connect Personal Edition 快速入門

SQL30081N,有回覆碼 10

症狀

症狀是如下的訊息 (不需要 SNA 感應碼):

   SQL30081N  偵測到通信錯誤。
   使用的通訊協定:"APPC"。  使用的通信 API:"CPI-C"。
   偵測到錯誤的位置:""。 偵測到錯誤的通信功能:
   "cmrcv"。 通訊協定特定錯誤碼:"10", "*", "*"。
   SQLSTATE=08001

解決方案

請檢查確實已正確安裝 DB2。

使用 DB2 Connect for OS/2 閘道時,如果未正確定義 TP 名稱的話, 則您會看到下列訊息:

   通訊協定特定的錯誤碼:"10", "*", "0x084C0000"。
   SQLSTATE=08001

例如,若 CM/2 中發生這個情況的話,您應該如下定義:

   異動程式名稱          = 'tpname'    (使用者定義)
   OS/2 程式路徑及檔名   = notused

以及 (在下一個 CM/2 架構畫面上)

   呈現類型 - 背景
   作業類型 - 已在佇列中、已預載運算子

SQL30081N,有回覆碼 20

症狀

   SQL30081N  偵測到通信錯誤。
   使用的通訊協定:"APPC"。  使用的通信 API:"CPI-C"。
   偵測到錯誤的位置:""。 偵測到錯誤的通信功能:
   "xcstp"。通訊協定特定的錯誤碼:"20", "*", "*"。
   SQLSTATE=08001

解決方案

請確定 DB2 Connect 系統上的 SNA 子系統確實已經啟動。

SQL30081N,有回覆碼 27

症狀

收到訊息 SQL30081N,有回覆碼 27 及 SNA 感應碼 800Axxxx。

解決方案

「VTAM 路徑資訊單元」(PIU) 太長。

SQL30081N,有回覆碼 79

症狀

   SQL30081N  偵測到通信錯誤。
   使用的通訊協定:"TCP/IP"。使用的通信 API:"SOCKETS"。
   偵測到錯誤的位置:""。 偵測到錯誤的通信功能:
   "connect"。通訊協定特定的錯誤碼:"79", "*", "*"。
   SQLSTATE=08001

解決方案

這個錯誤會發生在遠端從屬站無法連接 DB2 Connect 閘道的情況下。 它也會發生在從 DB2 Connect 閘道連接到主電腦時。

  1. DB2 Connect 閘道上的 DB2COMM 設定檔變數可能設定錯誤。 請檢查是否有此種情形。 例如,當 DB2 Extended Enterprise Edition 在 AIX 上執行時,命令 db2set db2comm=tcpip 應該出現在 sqllib/db2profile 中。
  2. 可能是 DB2 從屬站及 DB2 Connect 閘道之間的 TCP/IP 服務程式名稱與/或埠號設定不符。 請驗證這兩部機器上的 TCP/IP 服務程式檔案中的登錄。
  3. 請檢查 DB2 Connect 閘道上的 DB2 確實已經啟動。請使用下列命令, 將資料庫管理程式架構 diaglevel 設定為 4:
       db2 update dbm cfg using diaglevel 4
    
    停止並重新啟動 DB2 之後, 請查閱 db2diag.log 檔案,檢查是否已經啟動 DB2 TCP/IP 通信 您應該會看到類似下面的輸出:
       1998-02-03-12.41.04.861119   Instance:svtdbm2   Node:00
       PID:86496(db2sysc)   Appid:none
       common_communication  sqlcctcp_start_listen   Probe:80
       DIA3000I "TCPIP" 已順利啟動通訊協定支援。
    

SQL30081N,有通訊協定特定的錯誤碼 10032

症狀

   SQL30081N  偵測到通信錯誤。
   使用的通訊協定:"TCP/IP"。使用的通信 API:"SOCKETS"。
   偵測到錯誤的位置:"9.21.85.159"。  偵測錯誤的通信函數: "send"。
   通訊協定特定的錯誤碼: "10032", "*", "*"。
   SQLSTATE=08001

解決方案

在試圖切斷與 TCP/IP 通信已經失敗之機器的連接時,可能會收到這個錯誤訊息。 請使用 TCP/IP 子系統更正問題。

在大部份的機器上,只要重新啟動機器的 TCP/IP 通訊協定就可以更正問題。 偶而,可能也需要重新啟動整部機器。


[ 頁面頂端 | 前一頁 | 下一頁 | 目錄 | 索引 ]