使用db2 load from時導致DB的tablespace置成backup pending狀態

yurunping發表於2009-07-27
使用db2 load from時導致DB的tablespace置成backup pending狀態 我在往表裡面更新或者插入新的資料有報錯,有報SQL0290N這個錯誤,Table space access is not allowed. SQLSTATE=55039 但是這個時候可以往裡面load資料,我的命令是這樣寫的 $db2 load from /worktmp/temp.del of del replace into SCHEMA.TABLENAME 於是搜了很多東西,有人告訴我使用下面命令看看State的值是什麼 $db2 list tablespaces show detail Tablespace ID = 4 Name = TBS4K Type = Database managed space Contents = Any data State = 0x0020 Detailed explanation: Backup pending Total pages = 8388608 Useable pages = 8388096 Used pages = 340864 Free pages = 8047232 High water mark (pages) = 340864 Page size (bytes) = 4096 Extent size (pages) = 128 Prefetch size (pages) = 384 Number of containers = 4 Minimum recovery time = 2008-10-14-05.51.17.000000 Tablespace ID = 5 Name = TBS4KM Type = Database managed space Contents = Any data State = 0x0000 Detailed explanation: Normal Total pages = 8388608 Useable pages = 8388096 Used pages = 4224 Free pages = 8383872 High water mark (pages) = 4224 Page size (bytes) = 4096 Extent size (pages) = 128 Prefetch size (pages) = 384 Number of containers = 4 Minimum recovery time = 2008-10-23-07.30.01.000000 於是再搜,看看tablespace backup pending是怎麼回事!便找到下面這個,連結: http://www.ibm.com/developerworks/cn/db2/library/techarticles/dm-0407melnyk/index.html#bp 表 2. 受支援的表空間狀態 狀態 十六進位制狀態值 描述 示例 Backup Pending 0x20 在執行指定時間點的(point-in-time)表空間前滾操作之後,或者在執行指定了 COPY NO 選項的 LOAD 操作(針對可恢復的資料庫)之後,表空間處於這種狀態。在使用該表空間之前,必須備份該表空間(或者是整個資料庫)。如果沒有備份這個表空間,那麼只能對其中包含的表進行查詢,而無法更新它們。注意:在啟用資料庫進行前滾恢復之後,還必須立即對該資料庫進行備份。如果 logretain資料庫配置引數被設為 RECOVERY,或者 userexit資料庫配置引數被設為 YES,那麼該資料庫是可恢復的。直到對這樣的資料庫進行了備份,您才可以連線它。備份後, backup_pending資料庫配置引數會被設為 NO。 1. 已知載入的輸入檔案 staff_data.del 具有以下內容: 11,"Melnyk",20,"Sales",10,70000,15000: update db cfg for sample using logretain recovery; backup db sample; connect to sample; load from staff_data.del of del messages load.msg insert into staff copy no; update staff set salary = 69000 where id = 11; 2.update db cfg for sample using logretain recovery; connect to sample; 上面提到“在使用該表空間之前,必須備份該表空間(或者是整個資料庫)” 於是我先把整個資料庫備份了一下,再檢視tablespace狀態時,都是Normal的,再次更新或者往表裡面插入資料時一切正常。 這個時候我想起我下的db2 load的命令,以往都是在最後面加了NONRECOVERABLE這個引數,這次沒有,問題肯定在這裡。 便又順藤摸瓜看到了下面的解釋, 如果要對可恢復資料庫執行一系列裝入操作,那麼與每次呼叫裝入操作時都指定 COPY YES 選項相比,指定每個裝入操作都不可恢復並在裝入序列結束時進行備份的速度更快。可以使用 NONRECOVERABLE 選項來指定將裝入事務標記為不可恢復,這樣,以後不可能透過前滾操作恢復該事務。Rollforward 實用程式將跳過該事務,並將把裝入資料的表標記為“無效”。該實用程式還將忽略該對錶執行的任何後續事務。在前滾操作完成後,只能刪除這樣的表(請參閱圖 2)。如果指定了此選項,在裝入操作完成後就不會將表空間置於備份暫掛狀態,並且在裝入操作執行期間不必建立所裝入資料的副本。 連結: [@more@]

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

相關文章