使用db2 load from時導致DB的tablespace置成backup pending狀態(tài)
使用db2 load from時導致DB的tablespace置成backup pending狀態(tài) 我在往表里面更新或者插入新的數(shù)據(jù)有報錯,有報SQL0290N這個錯誤,Table space access is not allowed. SQLSTATE=55039 但是這個時候可以往里面load數(shù)據(jù),我的命令是這樣寫的 $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是怎么回事!便找到下面這個,
2. 受支持的表空間狀態(tài) 狀態(tài) 十六進制狀態(tài)值 描述 示例 Backup Pending 0x20 在執(zhí)行指定時間點的(point-in-time)表空間前滾操作之后,或者在執(zhí)行指定了 COPY NO 選項的 LOAD 操作(針對可恢復的數(shù)據(jù)庫)之后,表空間處于這種狀態(tài)。在使用該表空間之前,必須備份該表空間(或者是整個數(shù)據(jù)庫)。如果沒有備份這個表空間,那么只能對其中包含的表進行查詢,而無法更新它們。注意:在啟用數(shù)據(jù)庫進行前滾恢復之后,還必須立即對該數(shù)據(jù)庫進行備份。如果 logretain數(shù)據(jù)庫配置參數(shù)被設為 RECOVERY,或者 userexit數(shù)據(jù)庫配置參數(shù)被設為 YES,那么該數(shù)據(jù)庫是可恢復的。直到對這樣的數(shù)據(jù)庫進行了備份,您才可以連接它。備份后, backup_pending數(shù)據(jù)庫配置參數(shù)會被設為 NO。
1. 已知載入的輸入文件 staff_data.del 具有以下內(nèi)容: 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; 上面提到“在使用該表空間之前,必須備份該表空間(或者是整個數(shù)據(jù)庫)” 于是我先把整個數(shù)據(jù)庫備份了一下,再查看tablespace狀態(tài)時,都是Normal的,再次更新或者往表里面插入數(shù)據(jù)時一切正常。 這個時候我想起我下的db2 load的命令,以往都是在最后面加了NONRECOVERABLE這個參數(shù),這次沒有,問題肯定在這里。
便又順藤摸瓜看到了下面的解釋, 如果要對可恢復數(shù)據(jù)庫執(zhí)行一系列裝入操作,那么與每次調(diào)用裝入操作時都指定 COPY YES 選項相比,指定每個裝入操作都不可恢復并在裝入序列結(jié)束時進行備份的速度更快。可以使用 NONRECOVERABLE 選項來指定將裝入事務標記為不可恢復,這樣,以后不可能通過前滾操作恢復該事務。
Rollforward 實用程序?qū)⑻^該事務,并將把裝入數(shù)據(jù)的表標記為“無效”。
該實用程序還將忽略該對表執(zhí)行的任何后續(xù)事務。在前滾操作完成后,只能刪除這樣的表(請參閱圖 2)。如果指定了此選項,在裝入操作完成后就不會將表空間置于備份暫掛狀態(tài),并且在裝入操作執(zhí)行期間不必創(chuàng)建所裝入數(shù)據(jù)的副本。
本文來自[Svn中文網(wǎng)]轉(zhuǎn)發(fā)請保留本站地址:http://www.svn8.com/sql/Db2/2009111212779.html