DB2 訪問表時SQL1477N報錯的原因及處理

2021-07-27 13:58:06 字數 1056 閱讀 2344

db2中,對錶進行訪問時,有時會遇到以下報錯:

sql1477n  for table "" an object "" in table

space "" cannot be accessed.

可能的原因如下:

1.)開啟了不記日誌的操作之後,若顯示地發出了rollback命令,或者sql因為意外情況失敗(比如鎖超時、記憶體不足等)導致事務回滾,則該錶將不能訪問,示例:

$ db2 +c "alter table t1 activate not logged initially"

db20000i the sql command completed successfully.

$ db2 +c "insert into t1 select * from t1"

db20000i the sql command completed successfully.

$ db2 "rollback"

db20000i the sql command completed successfully.

$ db2 "select * from t1"

birthdate

----------

sql1477n for table "miaoqingsong.t1" an object "5" in table space "2" cannot

be accessed. sqlstate=55019

2.) hadr的環境,如果主機上有不記日誌的操作或者load的時候指定了nonrecoverable選項,則備機上對應的表就不可訪問了,若備機可讀或者takeover以後,訪問時就會遇到sql1477n。

3.)使用了db2dart命令顯示地將表標記為無效,我們知道,db2dart的 /mi 選項可以將索引標記為無效。其實也有相應的選項將表標記為無效,這個需要ibm的服務密碼,具體方法請質詢ibm技術支援團隊。

----分割線---

具體的處理方法:

沒有辦法使該錶變得可以重新訪問,只能刪掉並重建。如果需要裡面的資料,可以使用db2dart工具匯出。

DB2建立臨時表時的錯誤

db2cmd下執行下面建立臨時表 declare global temporary table results recid varchar 32 xxly varchar 100 lxdh varchar 32 fkrq date on commit preserve rows with repla...

db2 使用nickname 訪問其它庫的表

create nickname 語句 db2 包裝器的示例 此主題提供了乙個示例來說明如何使用 create nickname 語句來為您想訪問的 db2 表或檢視註冊暱稱。以下示例顯示了乙個 create nickname 語句 create nickname db2sales for db2se...

DB2跨資料庫訪問表的方法

本文說明的是在同乙個資料庫例項中,在源資料庫dbsrc中訪問目標庫dbtarget的表table1的方法。使用者名稱 usr,密碼 pwd db2 版本 udb for aix 8.2.2 技術領域 db2 聯合資料庫 進入命令列 1 db2 2.db2 update dbm cfg using f...