程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DB2 LOAD命令所提供的選項及注冊表變量大全(2)

DB2 LOAD命令所提供的選項及注冊表變量大全(2)

編輯:DB2教程

3. 關於 COPY YES:

在 LOAD 操作結束時,DB2 自動對表所在的表空間進行一次備份操作,因而 LOAD 結束後,表所在的表空間不會再處於“備份暫掛”狀態,而為“正常”狀態。但由於要進行備份操作,所以這種 LOAD 操作的時間會較沒有備份的長。如: E:\TEST>db2 connect to sample

E:\TEST>db2 load from staff.del of del insert into staff copy yes to .

E:\TEST>db2 list tablespaces

:

表空間標識 = 2

名稱 = USERSPACE1

類型 = 系統管理空間

內容 = 任何數據

狀態 = 0x0000

詳細解釋:

正常

:

E:\TEST>db2 select count(*) from staff

1

-----------

105

1 條記錄已選擇。

此時可在當前目錄下看到一個 SAMPLE.4 的子目錄,表明產生的是一個由 LOAD 操作生成的備份,而這份備份將在數據庫進行前滾恢復操作時用於重新創建 LOAD 操作對數據庫的修改。如:

E:\TEST>DB2 restore db sample taken at 20051230174105

DB20000I RESTORE DATABASE 命令成功完成。

E:\TEST>db2 rollforward db sample to end of logs and stop

前滾狀態

輸入數據庫別名 = sample

節點數已返回狀態 = 1

節點號 = 0

前滾狀態 = 未暫掛

下一個要讀取的日志文件 =

已處理的日志文件 = S0000002.LOG - S0000003.LOG

上次落實的事務 = 2005-12-30-11.48.26.000000

DB20000I ROLLFORWARD 命令成功完成。

E:\TEST>db2 connect to sample

E:\TEST>db2 list tablespaces

:

表空間標識 = 2

名稱 = USERSPACE1

類型 = 系統管理空間

內容 = 任何數據

狀態 = 0x0000

詳細解釋:

正常

:

E:\TEST>db2 select count(*) from staff

1

-----------

105

1 條記錄已選擇。

這表明在 SAMPLE.4 下的備份被用於了前滾恢復操作,而重新創建了 LOAD 操作對數據庫插入的記錄。

4. 關於 NONRECOVERABLE:

該選項會將 LOAD 操作標志為不可恢復,即數據庫不能通過後續的前滾操作而被恢復。LOAD 操作結束後,數據庫既不會處於“備份暫掛”狀態,也不會產生任何的備份。 E:\TEST>db2 connect to sample

E:\TEST>db2 load from staff.del of del insert into staff nonrecoverable

E:\TEST>db2 list tablespaces

:

表空間標識 = 2

名稱 = USERSPACE1

類型 = 系統管理空間

內容 = 任何數據

狀態 = 0x0000

詳細解釋:

正常

:

雖然 LOAD 之後表空間和表的狀態都正常,但如果今後需要執行前滾命令恢復數據庫時,前滾操作將跳過 LOAD 事務的處 理,而將 LOAD 的表標記為無效,是對表的任何操作都不能進行。如: E:\TEST>db2 restore db sample taken at 20051230174105

DB20000I RESTORE DATABASE 命令成功完成。

E:\TEST>db2 rollforward db sample to end of logs and stop

前滾狀態

輸入數據庫別名 = sample

節點數已返回狀態 = 1

節點號 = 0

前滾狀態 = 未暫掛

下一個要讀取的日志文件 =

已處理的日志文件 = S0000002.LOG - S0000003.LOG

上次落實的事務 = 2005-12-30-12.19.55.000000

DB20000I ROLLFORWARD 命令成功完成。

E:\>db2 connect to sample

E:\TEST>db2 list tablespaces

:

表空間標識 = 2

名稱 = USERSPACE1

類型 = 系統管理空間

內容 = 任何數據

狀態 = 0x0000

詳細解釋:

正常

:

E:\>db2 select * from staff

ID NAME DEPT JOB YEARS SALARY COMM

------ --------- ------ ----- ------ --------- ---------

SQL1477N 不能存取表 "LIWENLI.STAFF"。 SQLSTATE=55019

這表明該表已不可操作,此時只有將表刪除,重新構建,或使用 LOAD 操作時間點之後所做的數據庫全備份或表空間備份來恢復該表。

5. 關於注冊表變量 DB2_LOAD_COPY_NO_OVERRIDE 的介紹:

另外 DB2 還提供了一個注冊表變量:DB2_LOAD_COPY_NO_OVERRIDE,可將 LOAD 的缺省選項 COPY NO 設置為 NONRECOVERABLE 或 COPY YES。具體使用方法舉例為:

設置為 COPY YES 的方法: E:\TEST>db2set DB2_LOAD_COPY_NO_OVERRIDE="COPY YES TO E:\TEST"

E:\TEST>db2 terminate

E:\TEST>db2set

DB2_LOAD_COPY_NO_OVERRIDE=COPY YES TO E:\TEST

:

E:\TEST>db2 load from staff.del of del insert into staff

SQL27966W DB2_LOAD_COPY_NO_OVERRIDE 注冊表變量值 "COPY YES TO E:\TEST" 將覆蓋在 Load 中指定的 COPY NO 參數。

:

:

設置為 NONRECOVERABLE 的方法: E:\TEST>db2set DB2_LOAD_COPY_NO_OVERRIDE=NONRECOVERABLE

E:\TEST>db2 terminate

E:\TEST>db2set

DB2_LOAD_COPY_NO_OVERRIDE=NONRECOVERABLE

E:\TEST>db2 load from staff.del of del insert into staff

SQL27966W DB2_LOAD_COPY_NO_OVERRIDE 注冊表變量值 "NONRECOVERABLE" 將覆蓋在Load 中指定的 COPY NO 參數。

通過上述對 LOAD 的 COPY NO,COPY YES 和 NONRECOVERABLE 參數,以及 DB2 注冊表變量 DB2_LOAD_COPY_NO_OVERRIDE 的詳細和舉例說明,到此我們已經掌握了它們的功能和使用方法。由於 LOAD 操作幾乎不記日志的特性,在對啟用了前滾恢復的數據庫實現 LOAD 操作時應注意從中選擇適當的選項,以保證執行了 LOAD 操作的表的可用性。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved