新聞中心
本文將為您介紹DB2數(shù)據(jù)庫中避免目標數(shù)據(jù)庫中的配置文件不被映像文件中的所覆蓋的方法。 供您參考,希望對您有所幫助。

在將DB2 用BACKUP 命令方式創(chuàng)建的數(shù)據(jù)庫備份映像文件由RESTORE命令復原到一個不同名的目標數(shù)據(jù)庫中時,DB2 將把源數(shù)據(jù)庫中的配置文件復制到復原的目標數(shù)據(jù)庫中,從而覆蓋了該數(shù)據(jù)庫原有的各配置參數(shù)的設(shè)置。在此提供一種避免目標數(shù)據(jù)庫中的配置文件不被映像文件中的所覆蓋的方法。
一. 數(shù)據(jù)庫種子值的概念:
在介紹這一方法之前,首先要介紹一下數(shù)據(jù)庫種子值(seed)的概念,它是數(shù)據(jù)庫的唯一標識,在數(shù)據(jù)庫的整個生命周期中,這個值都將始終保持不變。種子值是在數(shù)據(jù)庫創(chuàng)建時由數(shù)據(jù)庫管理器指定的,而在復原操作中,DB2 始終使用的是備份映像中的種子值。為獲取備份映像中的種子值,可通過 DB2ckbkp 命令從輸出中查詢。
將一個DB2 數(shù)據(jù)庫的全備份映像復原到一個已存在的數(shù)據(jù)庫中時,兩個數(shù)據(jù)庫的別名,數(shù)據(jù)庫名,及種子值都可能不相同,復原實用程序?qū)υ摂?shù)據(jù)庫進行一系列的操作,其中包括的一項操作就是比較源和目標數(shù)據(jù)庫的兩個種子值,如果種子值不同,則將備份映像中的數(shù)據(jù)庫配置文件復制到目標數(shù)據(jù)庫中,以覆蓋其原有的各配置參數(shù);如果兩個值相同,則保留目標數(shù)據(jù)庫中的配置文件。
二. 結(jié)合實例說明實現(xiàn)的步驟:
下面我們舉例說明避免復原DB2 數(shù)據(jù)庫備份映像至不同名數(shù)據(jù)庫時,目標數(shù)據(jù)庫的配置文件被映像中的所覆蓋的方法,這里源數(shù)據(jù)庫名SAMPLE,目標數(shù)據(jù)庫名為TEST,以對數(shù)據(jù)庫參數(shù)UTIL_HEAP_SZ 的修改來舉例:
·源數(shù)據(jù)庫種子值的獲?。?/p>
1. 查看源數(shù)據(jù)庫中 UTIL_HEAP_SZ 的值:
DB2 get db cfg for sample |find /i "util_"
實用程序堆大小(4KB) (UTIL_HEAP_SZ) = 5000
2. 脫機全備份源數(shù)據(jù)庫:#p#
DB2 backup db sample
備份成功。此備份映像的時間戳記是:20050117162957
3. 查找源數(shù)據(jù)庫的種子值:
DB2ckbkp -H SAMPLE.0DB2NODE0000CATN00000501172957.001
=====================
MEDIA HEADER REACHED:
=====================
Server Database Name -- SAMPLE
Server Database Alias -- SAMPLE
Client Database Alias -- SAMPLE
Timestamp -- 20050117162957
Database Partition Number -- 0
Instance -- DB2
Sequence Number -- 1
Release ID -- A00
Database Seed -- 423AD856
:
:
從輸出中可知 SAMPLE 數(shù)據(jù)庫的種子值為 423AD856。
·目標數(shù)據(jù)庫種子值的獲?。?p#
4. 創(chuàng)建目標數(shù)據(jù)庫:
DB2 create db test
5. 查看目標數(shù)據(jù)庫中 UTIL_HEAP_SZ 的值:
DB2 get db cfg for test |find /i "util_"
實用程序堆大?。?KB) (UTIL_HEAP_SZ) = 5000
6. 更改目標數(shù)據(jù)庫中參數(shù)值,并確認已與源數(shù)據(jù)庫的值不同:
DB2 update db cfg for test using util_heap_sz 10000
DB2 get db cfg for test |find /i "util_"
實用程序堆大?。?KB) (UTIL_HEAP_SZ) = 10000
7. 脫機全備份目標數(shù)據(jù)庫:
DB2 backup db test
備份成功。此備份映像的時間戳記是:20050126144943
8. 查找目標數(shù)據(jù)庫的種子值:
DB2ckbkp -H TEST.0DB2NODE0000CATN00000501264943.001
=====================
MEDIA HEADER REACHED:
=====================#p#
Server Database Name -- TEST
Server Database Alias -- TEST
Client Database Alias -- TEST
Timestamp -- 20050126144943
Database Partition Number -- 0
Instance -- DB2
Sequence Number -- 1
Release ID -- A00
Database Seed -- 41F7C3EA
:
:
從輸出中可知 TEST 數(shù)據(jù)庫的種子值為 423AD856,也就是說,源和目標數(shù)據(jù)庫庫的種子值是互不相同的,它們分別唯一標識了源數(shù)據(jù)庫 SAMPLE 和目標數(shù)據(jù)庫 TEST。
·第一次復原操作(種子值不相同時):
9. 將源數(shù)據(jù)庫的映像文件復原到目標數(shù)據(jù)庫中:
DB2 restore db sample into test
SQL2528W 警告!復原到與備份映像數(shù)據(jù)庫相同的現(xiàn)有數(shù)據(jù)庫,但是現(xiàn)有數(shù)據(jù)庫的別名 "TEST" 與備份映像的別名 "SAMPLE" 不匹配,并且現(xiàn)有數(shù)據(jù)庫的數(shù)據(jù)庫名 "TEST" 與備份映像
的數(shù)據(jù)庫名 "SAMPLE" 不匹配。目標數(shù)據(jù)庫將被備份版本覆蓋。
想要繼續(xù)嗎?(y/n)y
10.復原操作完成后,再次查看目標數(shù)據(jù)庫中 UTIL_HEAP_SZ 的值:#p#
DB2 get db cfg for test |find /i "util_"
實用程序堆大?。?KB) (UTIL_HEAP_SZ) = 5000
可以看到盡管在進行復原操作之前,TEST 庫中的 UTIL_HEAP_SZ 已被修改為 10000,但完成了復原操作之后,這一參數(shù)又被改回 5000,這就是由于源和目標庫的種子值不同,復原操作會將備份映像配置文件復制到目標數(shù)據(jù)庫中,從而覆蓋了原來目標數(shù)據(jù)庫的配置所導致的,所以 UTIL_HEAP_SZ 參數(shù)的值由原來的 10000 覆蓋回備份映像中的 5000。
·第一次復原操作后檢查目標庫的種子值變化:
11.復原操作完成后,再次脫機備份目標數(shù)據(jù)庫:
DB2 backup db test
備份成功。此備份映像的時間戳記是:20050126145640
12.利用新的備份映像再次查找目標數(shù)據(jù)庫的種子值:
DB2ckbkp -H 145640.001
=====================
MEDIA HEADER REACHED:
=====================
Server Database Name -- TEST#p#
Server Database Alias -- TEST
Client Database Alias -- TEST
Timestamp -- 20050126145640
Database Partition Number -- 0
Instance -- DB2
Sequence Number -- 1
Release ID -- A00
Database Seed -- 423AD856
:
:
可以發(fā)現(xiàn),復原操作之后目標數(shù)據(jù)庫 TEST 的種子值已和源數(shù)據(jù)庫 SAMPLE 的相同,均為 423AD856 了!這說明目標數(shù)據(jù)庫在復原操作的過程中獲取了備份映像中種子值,覆蓋了原種子值。
·第二次復原操作(種子值相同時):
13.再次更改目標數(shù)據(jù)庫中參數(shù)值,并確認更改已生效:
DB2 update db cfg for test using util_heap_sz 15000
DB2 get db cfg for test |find /i "util_"
實用程序堆大?。?KB) (UTIL_HEAP_SZ) = 15000
14.再次將源數(shù)據(jù)庫的映像文件復原到目標數(shù)據(jù)庫中:
DB2 restore db sample into test
15.復原操作完成后,再對目標數(shù)據(jù)庫中 UTIL_HEAP_SZ 的值進行查看:
DB2 get db cfg for test |find /i "util_"
實用程序堆大?。?KB) (UTIL_HEAP_SZ) = 15000
可以看到,這次對目標數(shù)據(jù)庫參數(shù)的修改未被剛完成的復原操作所使用的源數(shù)據(jù)庫映象所覆蓋,其原因就在于在這一復原操作之前,目標數(shù)據(jù)庫的種子值已因第一次的復原操作而與源數(shù)據(jù)庫的相同,從而未觸發(fā)覆蓋目標數(shù)據(jù)庫配置文件的操作,這樣就最終實現(xiàn)了避免復原 DB2 數(shù)據(jù)庫備份映像文件至不同名數(shù)據(jù)庫時,目標數(shù)據(jù)庫的配置文件被映像中的所覆蓋的情況。
本文題目:DB2中配置文件不被映像文件覆蓋的方法
新聞來源:http://m.fisionsoft.com.cn/article/cddpsgo.html


咨詢
建站咨詢
