使用自動存儲管理
接下來我們通過例子來具體看一下如何使用自動存儲管理,具體步驟如下:
1. 創建一個使用自動存儲器的數據庫DB2TEST1修改其數據庫配置參數,使其使用歸檔日志,然後對數據庫做一次全備。
2. 分別創建使用自動存儲器功能的常規表空間TABLESPACE1和不使用自動存儲器功能的大型表空間TABLESPACE2。
3. 對測試數據庫DB2TEST1做一次全備,以便將來可以恢復到此時的狀態。
4. 創建示例表 "DB2INST1"."EMPLOYEE"。
5. 對測試數據庫DB2TEST1再做一次全備,以便將來可以恢復到此時的狀態。
6. 利用全量備份還原測試數據庫DB2TEST1。
7. 非增量定向還原測試數據庫DB2TEST1。
創建測試數據庫
我們首先創建使用自動存儲功能的測試數據庫DB2TEST1,打開 DB2 命令窗口,發出CREATE DATABASE語句,創建數據庫,如 清單 1所示:
--清單 1. 創建自動存儲器DB2數據庫
CREATE DATABASE DB2TEST1 on /db2/databases/db2test1/auto_storage
DBPATH ON /db2/databases/db2test1
這樣我們創建了一個自動存儲器數據庫DB2TEST1,其數據庫路徑是/db2/databases/db2test1,自動存儲路徑是/db2/databases/db2test1/auto_storage,默認創建了3個表空間:SYSCATSPACE、TEMPSPACE1、USERSPACE1,都是使用自動存儲管理。創建好數據庫後,連接數據庫DB2TEST1,我們需要把數據庫的日志管理模式改為歸檔,具體如清單2所示。
--清單 2. 更改數據庫參數
UPDATE DATABASE CONFIGURATION USING LOGARCHMETH1 LOGRETAIN IMMEDIATE
建議大家使用LOGARCHMETH1,此參數指定已歸檔日志的主要目標的介質類型,不要繼續使用LOGRETAIN或USEREXIT參數。LOGARCHMETH1參數缺省值為OFF,取值范圍可以是 LOGRETAIN、 USEREXIT、 DISK、TSM或VENDOR,各自的含義如下:
l OFF
指定不使用日志歸檔方法。如果 logarchmeth1 和 logarchmeth2 都設置為 OFF,那麼認為數據庫正在使用循環日志記錄,且不可前滾恢復。這是缺省值。
l LOGRETAIN
此值僅可用於 logarchmeth1,且等價於將 logretain 配置參數設置為 RECOVERY。 如果指定此值,將自動更新 logretain 配置參數。
l USEREXIT
此值僅對 logarchmeth1 有效,且等價於將 userexit 配置參數設置為 ON。如果指定此值,將自動更新 userexit 配置參數。
l DISK
此值後必須緊跟冒號(:),然後是現有標准路徑名,日志文件將在其中歸檔。例如,如果將 logarchmeth1 設置為 DISK:/u/dbuser/archived_logs,那麼將歸檔日志文件放入名為 /u/dbuser/archived_logs 的目錄。
注: 如果正在歸檔至磁帶,可以使用 db2tapemgr 實用程序來存儲和檢索日志文件。
l TSM
如果指定不帶任何附加配置參數,此值指示應該使用缺省管理類,將日志文件歸檔在本地 TSM 服務器上。如果此值後緊跟冒號(:)和 TSM 管理類,那麼使用指定的管理類來歸檔日志文件。
l VENDOR
指定將使用供應商庫來歸檔日志文件。此值後必須緊跟冒號(:)和庫的名稱。庫中提供的 API 必須使用備份並復原供應商產品的 API。
注: 如果將 logarchmeth1 或 logarchmeth2 設置為 OFF 以外的值,那麼必須配置數據庫以進行前滾恢復。
如果更新 userexit 或 logretain 配置參數,將自動更新 logarchmeth1,反之亦然。然而,如果您要使用 userexit 或 logretain, 必須將 logarchmeth2 設置為 OFF。
更改成功後,此時你執行如下命令:
FORCE APPLICATIONS ALL
命令成功後,用LIST APPLICATIONS看所有應用程序是否都斷開了,如果沒有斷開,再重復執行FORCE APPLICATIONS ALL,保證斷開後,把數據庫做一次全備,如清單3所示。
--清單 3.備份數據庫
BACKUP DATABASE DB2TEST1 TO /db2/databases/backup/
完全備份成功後,連接上數據庫,現在您可以創建示例表空間了。這樣我們就創建了一個測試庫DB2TEST1,其使用歸檔日志,不允許增量備份。
創建示例表空間
創建表空間既可以在服務器或本地執行命令創建,也可以在本地Windows環境上使用圖形化界面的方式創建,為了使用圖形化界面,我們首先來編目遠程的數據庫服務器,如清單4所示。
--清單 4. 編目遠程數據庫
CATALOG ADMIN TCPIP NODE 192.168.0.1 REMOTE 192.168.0.1
CATALOG TCPIP NODE db2inst1 REMOTE 192.168.0.1 SERVER 50000
CATALOG DATABASE DB2TEST1 AS MYDB AT NODE db2inst1
把IP地址是192.168.0.1,端口號是50000的數據庫服務器在本地編目為節點db2inst1,並把數據庫DB2TEST1在本地編目為MYDB。
接下來我們創建使用自動存儲器功能的表空間TABLESPACE1,連接上數據庫DB2TEST1後,發出CREATE TABLESPACE命令,如清單5所示。
--清單 5. 創建常規表空間TABLESPACE1,使用自動存儲
CREATE REGULAR TABLESPACE TABLESPACE1 PAGESIZE 4 K MANAGED BY AUTOMATIC STORAGE BUFFERPOOL IBMDEFAULTBP
注意,我們在MANAGED BY後面跟的是AUTOMATIC STORAGE,表示新創建的表空間將使用自動存儲。查看表空間可以使用LIST TABLESPACES命令,在DB2 命令行中輸入下列命令,如清單6所示。
--清單 6. 查看表空間
LIST TABLESPACES SHOW DETAIL
你可以看到TABLESPACE1已經創建成功,其空間管理類型是數據庫管理空間,具體如清單7所示。
--清單 7. 查看表空間結果
表空間標識 = 3
名稱 = TABLESPACE1
類型 = 數據庫管理空間
內容 = 所有持久數據。常規表空間。
狀態 = 0x0000
詳細解釋:
正常
總計頁數 = 8192
可用頁數 = 8160
已用頁數 = 96
可用頁數 = 8064
高水位標記(頁) = 96
頁大小(以字節計) = 4096
擴展數據塊大小(頁) = 32
預取大小(頁) = 32
容器數 = 1
最小恢復時間 = 2007-09-11-09.18.46.000000
還可以通過在本地(Windows環境下)控制中心,對遠程實例和數據庫連接後,對MYDB數據庫進行操作,右鍵單擊“表空間”文件夾,選創建,打開創建表空間向導,如圖1所示。
圖1:創建常規表空間TABLESPACE1,使用自動存儲
在名稱中輸入表空間名TABLESPACE1,選中“讓DB2管理存儲器(自動存儲器)(L)”,這樣將創建使用自動存儲器的表空間,你一定注意到了,當你選中“讓DB2管理存儲器(自動存儲器)(L)”時向導比選中“我想手工管理存儲器(I)”,少了空間管理和容器兩部分功能,這是因為使用自動存儲的表空間容器和空間管理是自動完成的。
接著我們要創建一個使用非自動存儲的大型表空間TABLESPACE2,其使用32K頁大小,因此在創建之前我們需要先創建一個32K頁大小的緩沖池,如清單8所示。
--清單8. 創建緩沖池
CREATE BUFFERPOOL BUFFERPOOL_32K IMMEDIATE SIZE 250 AUTOMATIC PAGESIZE 32 K
注意,在DB2 V9中引入了自動自調整內存機制,默認情況下啟動,我們在創建緩沖池BUFFERPOOL_32K加了一個選項AUTOMATIC,表示可以對緩沖池的內存啟用自調整。
命令成功完成後,我們接下來創建32K頁大小的使用非自動存儲的大型表空間TABLESPACE2,如清單9所示。
--清單 9. 創建大型表空間
CREATE LARGE TABLESPACE TABLESPACE2 PAGESIZE 32 K MANAGED BY DATABASE USING ( FILE /db2/databases/tablespaces/tablespace_32k 640 ) EXTENTSIZE 16 OVERHEAD 10.5 PREFETCHSIZE 16 TRANSFERRATE 0.14 BUFFERPOOL BUFFERPOOL_32K
注意,此時我們在MANAGED BY後面跟的是DATABASE,表示空間管理是數據庫管理(DMS),此時容器也需要自己定義。IT168