| 導購 | 订阅 | 在线投稿
分享
 
 
 

如何將Siebel 7從DB2 UDB V8遷移到DB2 9

來源:互聯網  2008-07-01 06:56:54  評論

本文將引領您完成 Siebel 7 數據庫環境從 DB2® UDB Version 8 到 DB2 9 的升級。您將了解一些必要的步驟以及完成遷移過程所需的工具和命令。

本文首先介紹了 DB2 9 中的一些新特性,並展示了 Siebel 應用程序如何利用這些特性。本文詳述了 UNIX® 和 Windows® 操作系統在預遷移和實際遷移過程中的工作,最後介紹完成遷移後需要執行的步驟。

DB2 9中的新特性

◆pureXM™L:DB2 9 天生就支持 xml 數據存儲。這使得可以將格式良好的 XML 文檔以其自身固有的分層格式存儲在 Siebel 表列中。XML 數據存儲爲 XML 類型而不是將其存儲爲文本。因此,您可以使用 XQuery、SQL 或者結合使用二者來有效地搜索和檢索 XML 數據。

◆自動化管理特性:自動化管理特性將簡化 Siebel/DB2 DBA 的管理任務。它包括自調優內存管理(Self Tuning Memory Management,STMM)。STMM 通過持續更新配置參數(數據庫參數和數據庫管理器參數)、調整緩沖池大小以及動態確定數據庫使用的內存總量,從而減少或消除配置 DB2 服務器的工作。

增強了數據庫安全性:基于標簽的訪問控制(Label Based access Control,LBAC)是一種新的安全特性,它使您可以在行和列的級別上控制數據訪問。爲此,添加了一種新的安全管理員(SECADM)授權級別,它將收集一些與安全相關的權限。根據列表或組的結構、位置或從屬關系,LBAC 可用于增強對用戶可見記錄的 Siebel 訪問控制。

◆彈性增強:Siebel/DB2 DBA 可以立即使用 DB2 9 中的一些增強來添加彈性。其中一些特性包括:

能夠重新開始中斷的恢複操作,這些操作能夠在進行數據庫恢複時節省寶貴的時間和工作。

支持使用從已有備份映像中自動生成的腳本執行重定向恢複操作。

能夠從表空間備份映像中重新構建數據庫。

◆更多附加的有用特性:很多特性對 Siebel 應用程序都非常有用。其中一些特性與性能和可伸縮性有關,例如數據行壓縮,而另外一些則與可管理性有關,例如複制數據庫模式的功能,以及 ALTER TABLE 語句增強。

本文將展示如何啓用 DB2 9 的一些特性,例如自調優內存管理和壓縮,這些都是完成遷移後的工作。

預遷移步驟

預遷移步驟非常重要,是實現成功遷移的關鍵。在本節中,實際上將執行三項任務:

1.在開始遷移之前,搜集有關當前數據庫和環境的最重要信息(給出了一些有用的腳本和示例)。這樣一來,如果在遷移過程中出現了問題,您可以很輕易地恢複到遷移前的狀態。同樣,如果您需要使用這些信息並且這些參數值在遷移後還有用的話,您還可以應用它們。

2.查看您的機器是否兼容以及是否能夠安全地安裝和使用 DB2 9。

3.停止 DB2 服務器,准備進行遷移。

下面給出了這些任務的細節:

1.運行數據庫的脫機備份。 Check if there is any application or user connected to the database by issuing

db2 list application

Disconnect any user or application before issuing the offline backup by running

db2 force application all

Issue a backup either to TSM, to a directory or a device

db2 backup database dbname use TSM To TSM

db2 backup database dbname to directory/device To a directory or to a device

2.將數據庫配置信息保存爲 db cfg、dbm cfg 和數據行計數。

對數據庫中的所有表格進行行計數並保存結果。下面的腳本將幫助實現此操作。

對數據庫運行 db2 get db cfg for dbname 並保存結果。

運行 db2 get dbm cfg 並保存結果。

運行 db2set -all 並保存結果。

對數據庫運行 db2 list tablespaces show detail 和 db2 list packages for all show detail 並保存結果。

運行 db2look -d $dbname -e -a -m -o $outputfilename。

運行 db2dart dbname /DB /V Y /RPT . /RPTF E 並保存結果。運行這個命令將占用一些時間。

清單 1. 在 UNIX 平台上實現表行計數的示例。腳本名:get_table_count.sh

if [ $# -lt 1 ]; then

echo "This script need a database name as a parameter "

echo

echo "Example $0 dbname "

exit 1

fi

db2 "connect to $1 "

if [ $? -ne 0 ]; then

echo "ERROR connecting to the database $1"

echo;echo

exit 1

fi

db2 "select tabname from syscat.tables where tabschema = 'SIEBEL' order by 1" > x

export rownums=`cat x | wc -l`

export headrows=$(($rownums-3))

export tailrows=$(($headrows-3))

cat x | head -$headrows | tail -$tailrows > y

echo; echo

while read tabname

do

db2 "select count(*) from siebel.$tabname " > x1

rownums=`cat x1 | wc -l`

if [ $rownums -gt 3 ]; then

headrows=$(($rownums-3))

tailrows=$(($headrows-3))

cat x1 | head -$headrows | tail -$tailrows > y1

nb=$(cat y1)

else

nb=0

fi

echo "--------------- Number of rows in table ... $tabname $nb"

echo

done < y

rm x y x1 y1

db2 terminate

如果 Siebel 模式名不是 SIEBEL,則應該對腳本和循環中的第一個查詢做出相應地修改。

清單 2. 在遷移前獲得所有 db 信息的腳本。腳本名:get_db_info.sh

if [ $# -lt 1 ]; then

echo "This script need a database name as a parameter "

echo

echo "Example $0 dbname "

echo;echo

exit 1

fi

export db_name=$1

date

echo;echo "-------------- Table counts"

nohup get_table_count.sh $db_name | tee table_count.log

db2 connect to $db_name

echo;echo "-------------- Tablespace lists with detail"

db2 list tablespaces show detail | tee tbspace_detail.log

echo;echo "-------------- Package lists with detail"

db2 list packages show detail | tee package_detail.log

echo;echo "-------------- DBM CFG"

db2 get dbm cfg | tee dbmcfg.log

echo;echo "-------------- DB CFG"

db2 get db cfg for $db_name | tee dbcfg.log

echo;echo "-------------- DB2 SET"

db2set -all | tee db2set.log

echo;echo "-------------- db2look for all db objects"

db2look -d $db_name -e -a -m -o db2look.log

db2 terminate

echo;echo "-------------- db2dart on all database. This will take time"

db2 force application all

db2dart $db_name /DB /V Y /RPT . /RPTF E

date

查看磁盤空間需求。數據庫遷移需要額外的磁盤空間,如下所示:

SQLSPCS.1 和 SQLSPCS.2 文件包含表空間信息,並且在遷移過程中會增長爲初始大小的四倍。如果這兩個文件的總大小是 512KB,那您至少需要 2MB 的自由空間。

確保系統目錄和系統臨時表空間中具有足夠的自由空間。然而,磁盤空間會發生變化,建議您應用下面的原則。將 SYSCATSPACE 和 TEMPSPACE1(這裏是默認名稱,可以改變)的總大小增加爲目前的兩倍。對于 SMS 表空間,增加容器文件的大小,而對于 DMS,則要增加額外的容器文件(這將使數據重新進行平衡)。只有進行遷移操作時才需要額外的空間,因此成功完成遷移後可以減少表空間的大小。以下的示例基于 AIX 和 Siebel 77 DB2 數據庫,展示了如何確定 SYSCATSPACE 所占的空間大小。

$ db2 list tablespaces show detail

Tablespaces for Current Database

Tablespace ID = 0

Name = SYSCATSPACE

Type = System managed space

Contents = All permanent data. Regular table space.

State = 0x0000

Detailed explanation:

Normal

Total pages = 229882

Useable pages = 229882

Used pages = 229882

Free pages = Not applicable

High water mark (pages) = Not applicable

Page size (bytes) = 4096

Extent size (pages) = 32

PRefetch size (pages) = 32

Number of containers = 1

229882 pages x 4096 bytes per page which is about 898 MB.

Next, you need to find out where the containers for this tablespace are located.

$ db2 list tablespace containers for 0

Tablespace Containers for Tablespace 0

Container ID = 0

Name = /V9_FS/sia77u_v9/catalog

Type = Path

You now need to find out if the free space is at least twice of the used space.

$ df -k /V9_FS

Filesystem 1024-blocks Free %Used Iused %Iused Mounted on

/dev/V9_LV 70909952 67149124 6% 704 1% /V9_FS

You can see that you have 67GB free space in this file system, which is enough

將 logfilsiz、logprimary 和 logsecond 的值增加爲當前大小的兩倍。遷移在單個事務中改變系統目錄對象,並且這些更改需要足夠的日志空間來包含該事務。如果空間不夠的話,該事務將回滾並且也不能成功實現遷移。更多詳細信息,請參考 「Increasing table space and log file sizes before migration」。

只針對 linux:將裸設備(raw device)改爲塊設備(block device)。更多詳細信息,請參考 「Changing raw devices to block devices (Linux)」。

發出以下命令停止 DB2 服務器:

db2licd -end

db2 force application all

check if there is any application still connecting by issuing db2 list applications

db2stop (to be issued for each instance)

db2admin stop (to be issued as the DAS user)

db2_kill

ps -eaf | grep db2 (make sure there are no DB2 processes up)

在安裝 DB2 9 之前,要確保您的機器是兼容的,並且已經安裝好了所有的修正程序和補丁。更多詳細信息,請參考 「System requirements for DB2 9 for Linux UNIX and Windows」。

遷移步驟

本節將介紹更多關于遷移任務本身的詳細信息。遷移過程包括兩大主要步驟,實例遷移和數據庫遷移。這一節將介紹遷移的這兩個部分,首先介紹在 Windows 平台上的遷移,然後介紹在 UNIX 平台上的遷移。

在 Windows 上進行遷移:對于 Windows 平台上的 DB2 9,有兩種方法可以實現數據庫的遷移。

第一種方法:如果使用該方法,在安裝 DB2 9 的過程中將自動完成實例遷移。(我們推薦使用該方法)

在安裝 DB2 9 時,將檢測到之前的版本,並且安裝向導將顯示一個遷移實例的按鈕(參見圖 1 下面的部分)。

圖1. 安裝向導

如何將Siebel 7從DB2 UDB V8遷移到DB2 9

選擇"migrate"按鈕將安裝 DB2 9 並且自動進行實例遷移。稍後您只需要調用 CLP 並發出以下命令就可完成數據庫遷移:

db2start

db2 migrate db dbname

第二種方法:選擇這種方法,要將 DB2 安裝在與前一版本不同的安裝目錄。要完成實例遷移和數據庫遷移,請執行以下步驟:

在安裝向導中選擇"install new"按鈕,將 DB2 安裝在一個不同的文件夾。

安裝完成後,導航到新的 DB2_9Directory/bin。

打開 DB2 CLP 窗口(db2cmd.exe)並發出以下命令進行實例遷移:db2imigr v8InstanceName /u:userid,passWord。

關閉 CLP 並重新打開它,以使操作生效。

發出 db2ilist 命令。將顯示所有實例。

發出 db2 list directory 命令。將引入在下一步驟中遷移的數據庫。

發出 db2start 命令。

發出 db2 migrate db dbname 命令,進行數據庫遷移。

在 UNIX 上進行遷移:在 UNIX 平台上,需要執行以下步驟安裝 DB2 9、完成實例遷移和數據庫遷移:

安裝 DB2 9,但不需要卸載 DB2 UDB Version 8,也不需要刪除或重命名 SQLLIB 目錄。

要添加許可,運行 DB2_9_Directory/adm/db2licm -a filename.lic 命令作爲根。

例如,如果從 /db2_9_installimage 目錄中開始安裝 DB2 9 ESE,並選擇了默認的安裝位置,那麽應該運行

/opt/IBM/db2/V9.1/adm/db2licm -a /db2_9_installimage/ese/disk1/db2/license/db2ese.lic。

檢查根環境並確保 LIBPATH 或 PATH 環境變量中不存在 DB2 路徑或實例的 SQLLIB。同時檢查 .profile 和 .kshrc 文件。這些文件在使用 db2imigr 命令時將生成錯誤,阻止進行實例遷移。

遷移實例。在 DB2_Installation_Path/instance 下運行 db2imigr 命令作爲根。

例如,db2imigr -u db2fenc1 db2inst1 。

在成功的遷移過程中,舊的 SQLLIB 被重命名爲 SQLLIB_V81。

作爲被遷移的實例的所有者登錄,並發出 db2start 命令。

以實例所有者的身份,通過運行 db2 migrate db dbname 命令進行數據庫遷移。

此時,您已經完成了遷移任務。下一節將向您展示如何調整一些參數並啓用 DB2 的一些特性來開始使用 Siebel 7 和 DB2 9。

完成遷移後需要進行的步驟

這一節將介紹使用 DB2 9 和 Siebel 7 的准備步驟。還將啓用 DB2 9 的一些新特性。

調整日志空間大小(logfilsiz、logprimary 和 logsecond 數據庫配置參數)。如果您改變了這些參數(如預遷移步驟中建議的那樣),您可以使用預遷移步驟 3 中保存的值將這些參數值恢複爲原來的值。

安裝 Siebel 存儲過程。將正確的 Siebel 存儲過程代碼(在 UNIX 上爲 siebproc 而在 Windows 上爲 siebproc.dll)複制到 SQLLIB 下的 FUNCTION 目錄。更改文件的權限。UNIX 的 siebproc 權限應該修改爲所有者具有讀寫權限,組用戶只具有讀權限,而所有其他人既不具有讀權限,也不具有寫權限。

將 Siebel 存儲過程和用戶定義函數的執行權限授權給 PUBLIC。

db2 grant execute on procedure siebstat to public

db2 grant execute on procedure siebtrun to public

db2 grant execute on procedure siebdbx to public

db2 grant execute on procedure nextseq to public

db2 grant execute on procedure siebtrim to public

完成遷移後,運行下面的命令激活數據庫:

db2 activate db dbname

查看注冊表變量、數據庫配置和數據庫管理器配置的值。使用 db2set -g 命令設置全局注冊表變量。這些類型的變量沒有被遷移。

重新綁定所有的包,因爲在遷移過程中,這些包被設置爲無效。推薦運行下面的命令重新綁定所有的包:

db2rbind dbname -l output_filename all

You can also bind CLI packages. Go under sqllib/bnd and issue the following

db2 bind @db2cli.lst blocking all grant public clipkg 6

如果需要的話,遷移 db2 explain 表,運行下面的命令:

db2exmig -d dbname -e explain_schema [ -u userid password ]

通過運行 預遷移 一節的步驟 2 中的相同命令收集所有數據庫信息。

如果希望對所有或部分表進行壓縮,需要對表進行更改並對表啓用壓縮功能,然後使用 RESETDICTIONARY 選項發出 reorg 命令,如下所示:

db2 "alter table tablename compress yes"

db2 "reorg table tablename resetdictionary"

您可以通過更改表並禁用壓縮功能(compress no)來停用壓縮,然後發出相同的 reorg 命令。

更新所有 Siebel 數據庫表上的統計信息,要在所有 Siebel 表上運行 runstats,您可以修改 清單 1 中的 get_table_count.sh 腳本。爲此,通過執行下面的代碼替換掉 do 和 done 循環之間的所有的指令和命令:

do

echo "-------- Runstats on table $tabname ..."

db2 "runstats on table $tabname with distribution and detailed indexes all shrlevel change"

echo

done < y

遷移完成後,對數據庫進行備份。

將連接的客戶機遷移到服務器中。

執行一些步驟設置 STMM,使其具有更好的性能:

在數據庫配置級別中,將 SELF_TUNING_MEM 設置爲 ON 並對 AUTOMATIC 設置下面的內容:

DATABASE_MEMORY, LOCKLIST, MAXLOCKS, PCKCACHESZ, SHEAPTHRES_SHR, SORTHEAP, SHEAPTHRES_SHR, NUM_IOCLEANERS, NUM_IOSERVERS, DFT_PREFETCH_SZ, MAXAPPLS

在數據庫管理器配置級別中,設置如下參數:

將 SHEAPTHRES 設置爲 0 (zero)

將 INSTANCE_MEMORY、FCM_NUM_BUFFERS 和 FCM_NUM_CHANNELS 設置爲 AUTOMATIC

將所有數據庫緩沖池的大小設置爲 AUTOMATIC。

可以在 UNIX 平台上運行下面的腳本來啓用 DB2 9 的這個新功能。

清單3. 啓用 STMM。腳本名:enable_stmm.sh

if [ $# -lt 1 ]; then

echo "This script need database name as a parameter : "

echo

echo " Example : $0 database_name"

echo;echo

exit 1

fi

export db_name=$1

db2start

db2 -v connect to $db_name

echo "db cfg level"

db2 -v update db cfg for $db_name using self_tuning_mem on

db2 -v update db cfg for $db_name using database_memory automatic

db2 -v update db cfg for $db_name using locklist automatic maxlocks automatic

db2 -v update db cfg for $db_name using pckcachesz automatic

db2 -v update db cfg for $db_name using sortheap automatic sheapthres_shr automatic

db2 -v update db cfg for $db_name using num_iocleaners automatic

db2 -v update db cfg for $db_name using num_ioservers automatic

db2 -v update db cfg for $db_name using dft_prefetch_sz automatic

db2 -v update db cfg for $db_name using maxappls automatic

echo "dbm cfg level"

db2 -v update dbm cfg using sheapthres 0

db2 -v update dbm cfg using instance_memory automatic

echo "bufferpool level"

db2 "select bpname from syscat.bufferpools" > x

export rownums=$(cat x | wc -l)

headrows=$(($rownums-3))

tailrows=$(($headrows-3))

cat x | head -$headrows | tail -$tailrows > y

while read bp_name; do

db2 -v alter bufferpool $bp_name size automatic

done < y

rm x y

db2 connect reset

db2 terminate

db2 force application all

db2stop force

db2start

本文將引領您完成 Siebel 7 數據庫環境從 DB2® UDB Version 8 到 DB2 9 的升級。您將了解一些必要的步驟以及完成遷移過程所需的工具和命令。 本文首先介紹了 DB2 9 中的一些新特性,並展示了 Siebel 應用程序如何利用這些特性。本文詳述了 UNIX® 和 Windows® 操作系統在預遷移和實際遷移過程中的工作,最後介紹完成遷移後需要執行的步驟。 DB2 9中的新特性 ◆pureXM™L:DB2 9 天生就支持 xml 數據存儲。這使得可以將格式良好的 XML 文檔以其自身固有的分層格式存儲在 Siebel 表列中。XML 數據存儲爲 XML 類型而不是將其存儲爲文本。因此,您可以使用 XQuery、SQL 或者結合使用二者來有效地搜索和檢索 XML 數據。 ◆自動化管理特性:自動化管理特性將簡化 Siebel/DB2 DBA 的管理任務。它包括自調優內存管理(Self Tuning Memory Management,STMM)。STMM 通過持續更新配置參數(數據庫參數和數據庫管理器參數)、調整緩沖池大小以及動態確定數據庫使用的內存總量,從而減少或消除配置 DB2 服務器的工作。 增強了數據庫安全性:基于標簽的訪問控制(Label Based access Control,LBAC)是一種新的安全特性,它使您可以在行和列的級別上控制數據訪問。爲此,添加了一種新的安全管理員(SECADM)授權級別,它將收集一些與安全相關的權限。根據列表或組的結構、位置或從屬關系,LBAC 可用于增強對用戶可見記錄的 Siebel 訪問控制。 ◆彈性增強:Siebel/DB2 DBA 可以立即使用 DB2 9 中的一些增強來添加彈性。其中一些特性包括: 能夠重新開始中斷的恢複操作,這些操作能夠在進行數據庫恢複時節省寶貴的時間和工作。 支持使用從已有備份映像中自動生成的腳本執行重定向恢複操作。 能夠從表空間備份映像中重新構建數據庫。 ◆更多附加的有用特性:很多特性對 Siebel 應用程序都非常有用。其中一些特性與性能和可伸縮性有關,例如數據行壓縮,而另外一些則與可管理性有關,例如複制數據庫模式的功能,以及 ALTER TABLE 語句增強。 本文將展示如何啓用 DB2 9 的一些特性,例如自調優內存管理和壓縮,這些都是完成遷移後的工作。 預遷移步驟 預遷移步驟非常重要,是實現成功遷移的關鍵。在本節中,實際上將執行三項任務: 1.在開始遷移之前,搜集有關當前數據庫和環境的最重要信息(給出了一些有用的腳本和示例)。這樣一來,如果在遷移過程中出現了問題,您可以很輕易地恢複到遷移前的狀態。同樣,如果您需要使用這些信息並且這些參數值在遷移後還有用的話,您還可以應用它們。 2.查看您的機器是否兼容以及是否能夠安全地安裝和使用 DB2 9。 3.停止 DB2 服務器,准備進行遷移。 下面給出了這些任務的細節: 1.運行數據庫的脫機備份。 Check if there is any application or user connected to the database by issuing db2 list application Disconnect any user or application before issuing the offline backup by running db2 force application all Issue a backup either to TSM, to a directory or a device db2 backup database dbname use TSM To TSM db2 backup database dbname to directory/device To a directory or to a device 2.將數據庫配置信息保存爲 db cfg、dbm cfg 和數據行計數。 對數據庫中的所有表格進行行計數並保存結果。下面的腳本將幫助實現此操作。 對數據庫運行 db2 get db cfg for dbname 並保存結果。 運行 db2 get dbm cfg 並保存結果。 運行 db2set -all 並保存結果。 對數據庫運行 db2 list tablespaces show detail 和 db2 list packages for all show detail 並保存結果。 運行 db2look -d $dbname -e -a -m -o $outputfilename。 運行 db2dart dbname /DB /V Y /RPT . /RPTF E 並保存結果。運行這個命令將占用一些時間。 清單 1. 在 UNIX 平台上實現表行計數的示例。腳本名:get_table_count.sh if [ $# -lt 1 ]; then echo "This script need a database name as a parameter " echo echo "Example $0 dbname " exit 1 fi db2 "connect to $1 " if [ $? -ne 0 ]; then echo "ERROR connecting to the database $1" echo;echo exit 1 fi db2 "select tabname from syscat.tables where tabschema = 'SIEBEL' order by 1" > x export rownums=`cat x | wc -l` export headrows=$(($rownums-3)) export tailrows=$(($headrows-3)) cat x | head -$headrows | tail -$tailrows > y echo; echo while read tabname do db2 "select count(*) from siebel.$tabname " > x1 rownums=`cat x1 | wc -l` if [ $rownums -gt 3 ]; then headrows=$(($rownums-3)) tailrows=$(($headrows-3)) cat x1 | head -$headrows | tail -$tailrows > y1 nb=$(cat y1) else nb=0 fi echo "--------------- Number of rows in table ... $tabname $nb" echo done < y rm x y x1 y1 db2 terminate 如果 Siebel 模式名不是 SIEBEL,則應該對腳本和循環中的第一個查詢做出相應地修改。 清單 2. 在遷移前獲得所有 db 信息的腳本。腳本名:get_db_info.sh if [ $# -lt 1 ]; then echo "This script need a database name as a parameter " echo echo "Example $0 dbname " echo;echo exit 1 fi export db_name=$1 date echo;echo "-------------- Table counts" nohup get_table_count.sh $db_name | tee table_count.log db2 connect to $db_name echo;echo "-------------- Tablespace lists with detail" db2 list tablespaces show detail | tee tbspace_detail.log echo;echo "-------------- Package lists with detail" db2 list packages show detail | tee package_detail.log echo;echo "-------------- DBM CFG" db2 get dbm cfg | tee dbmcfg.log echo;echo "-------------- DB CFG" db2 get db cfg for $db_name | tee dbcfg.log echo;echo "-------------- DB2 SET" db2set -all | tee db2set.log echo;echo "-------------- db2look for all db objects" db2look -d $db_name -e -a -m -o db2look.log db2 terminate echo;echo "-------------- db2dart on all database. This will take time" db2 force application all db2dart $db_name /DB /V Y /RPT . /RPTF E date 查看磁盤空間需求。數據庫遷移需要額外的磁盤空間,如下所示: SQLSPCS.1 和 SQLSPCS.2 文件包含表空間信息,並且在遷移過程中會增長爲初始大小的四倍。如果這兩個文件的總大小是 512KB,那您至少需要 2MB 的自由空間。 確保系統目錄和系統臨時表空間中具有足夠的自由空間。然而,磁盤空間會發生變化,建議您應用下面的原則。將 SYSCATSPACE 和 TEMPSPACE1(這裏是默認名稱,可以改變)的總大小增加爲目前的兩倍。對于 SMS 表空間,增加容器文件的大小,而對于 DMS,則要增加額外的容器文件(這將使數據重新進行平衡)。只有進行遷移操作時才需要額外的空間,因此成功完成遷移後可以減少表空間的大小。以下的示例基于 AIX 和 Siebel 77 DB2 數據庫,展示了如何確定 SYSCATSPACE 所占的空間大小。 $ db2 list tablespaces show detail Tablespaces for Current Database Tablespace ID = 0 Name = SYSCATSPACE Type = System managed space Contents = All permanent data. Regular table space. State = 0x0000 Detailed explanation: Normal Total pages = 229882 Useable pages = 229882 Used pages = 229882 Free pages = Not applicable High water mark (pages) = Not applicable Page size (bytes) = 4096 Extent size (pages) = 32 PRefetch size (pages) = 32 Number of containers = 1 229882 pages x 4096 bytes per page which is about 898 MB. Next, you need to find out where the containers for this tablespace are located. $ db2 list tablespace containers for 0 Tablespace Containers for Tablespace 0 Container ID = 0 Name = /V9_FS/sia77u_v9/catalog Type = Path You now need to find out if the free space is at least twice of the used space. $ df -k /V9_FS Filesystem 1024-blocks Free %Used Iused %Iused Mounted on /dev/V9_LV 70909952 67149124 6% 704 1% /V9_FS You can see that you have 67GB free space in this file system, which is enough 將 logfilsiz、logprimary 和 logsecond 的值增加爲當前大小的兩倍。遷移在單個事務中改變系統目錄對象,並且這些更改需要足夠的日志空間來包含該事務。如果空間不夠的話,該事務將回滾並且也不能成功實現遷移。更多詳細信息,請參考 「Increasing table space and log file sizes before migration」。 只針對 linux:將裸設備(raw device)改爲塊設備(block device)。更多詳細信息,請參考 「Changing raw devices to block devices (Linux)」。 發出以下命令停止 DB2 服務器: db2licd -end db2 force application all check if there is any application still connecting by issuing db2 list applications db2stop (to be issued for each instance) db2admin stop (to be issued as the DAS user) db2_kill ps -eaf | grep db2 (make sure there are no DB2 processes up) 在安裝 DB2 9 之前,要確保您的機器是兼容的,並且已經安裝好了所有的修正程序和補丁。更多詳細信息,請參考 「System requirements for DB2 9 for Linux UNIX and Windows」。 遷移步驟 本節將介紹更多關于遷移任務本身的詳細信息。遷移過程包括兩大主要步驟,實例遷移和數據庫遷移。這一節將介紹遷移的這兩個部分,首先介紹在 Windows 平台上的遷移,然後介紹在 UNIX 平台上的遷移。 在 Windows 上進行遷移:對于 Windows 平台上的 DB2 9,有兩種方法可以實現數據庫的遷移。 第一種方法:如果使用該方法,在安裝 DB2 9 的過程中將自動完成實例遷移。(我們推薦使用該方法) 在安裝 DB2 9 時,將檢測到之前的版本,並且安裝向導將顯示一個遷移實例的按鈕(參見圖 1 下面的部分)。 圖1. 安裝向導 [url=/bbs/detail_1795856.html][img]http://image.wangchao.net.cn/it/1323409736006.jpg[/img][/url] 選擇"migrate"按鈕將安裝 DB2 9 並且自動進行實例遷移。稍後您只需要調用 CLP 並發出以下命令就可完成數據庫遷移: db2start db2 migrate db dbname 第二種方法:選擇這種方法,要將 DB2 安裝在與前一版本不同的安裝目錄。要完成實例遷移和數據庫遷移,請執行以下步驟: 在安裝向導中選擇"install new"按鈕,將 DB2 安裝在一個不同的文件夾。 安裝完成後,導航到新的 DB2_9Directory/bin。 打開 DB2 CLP 窗口(db2cmd.exe)並發出以下命令進行實例遷移:db2imigr v8InstanceName /u:userid,passWord。 關閉 CLP 並重新打開它,以使操作生效。 發出 db2ilist 命令。將顯示所有實例。 發出 db2 list directory 命令。將引入在下一步驟中遷移的數據庫。 發出 db2start 命令。 發出 db2 migrate db dbname 命令,進行數據庫遷移。 在 UNIX 上進行遷移:在 UNIX 平台上,需要執行以下步驟安裝 DB2 9、完成實例遷移和數據庫遷移: 安裝 DB2 9,但不需要卸載 DB2 UDB Version 8,也不需要刪除或重命名 SQLLIB 目錄。 要添加許可,運行 DB2_9_Directory/adm/db2licm -a filename.lic 命令作爲根。 例如,如果從 /db2_9_installimage 目錄中開始安裝 DB2 9 ESE,並選擇了默認的安裝位置,那麽應該運行 /opt/IBM/db2/V9.1/adm/db2licm -a /db2_9_installimage/ese/disk1/db2/license/db2ese.lic。 檢查根環境並確保 LIBPATH 或 PATH 環境變量中不存在 DB2 路徑或實例的 SQLLIB。同時檢查 .profile 和 .kshrc 文件。這些文件在使用 db2imigr 命令時將生成錯誤,阻止進行實例遷移。 遷移實例。在 DB2_Installation_Path/instance 下運行 db2imigr 命令作爲根。 例如,db2imigr -u db2fenc1 db2inst1 。 在成功的遷移過程中,舊的 SQLLIB 被重命名爲 SQLLIB_V81。 作爲被遷移的實例的所有者登錄,並發出 db2start 命令。 以實例所有者的身份,通過運行 db2 migrate db dbname 命令進行數據庫遷移。 此時,您已經完成了遷移任務。下一節將向您展示如何調整一些參數並啓用 DB2 的一些特性來開始使用 Siebel 7 和 DB2 9。 完成遷移後需要進行的步驟 這一節將介紹使用 DB2 9 和 Siebel 7 的准備步驟。還將啓用 DB2 9 的一些新特性。 調整日志空間大小(logfilsiz、logprimary 和 logsecond 數據庫配置參數)。如果您改變了這些參數(如預遷移步驟中建議的那樣),您可以使用預遷移步驟 3 中保存的值將這些參數值恢複爲原來的值。 安裝 Siebel 存儲過程。將正確的 Siebel 存儲過程代碼(在 UNIX 上爲 siebproc 而在 Windows 上爲 siebproc.dll)複制到 SQLLIB 下的 FUNCTION 目錄。更改文件的權限。UNIX 的 siebproc 權限應該修改爲所有者具有讀寫權限,組用戶只具有讀權限,而所有其他人既不具有讀權限,也不具有寫權限。 將 Siebel 存儲過程和用戶定義函數的執行權限授權給 PUBLIC。 db2 grant execute on procedure siebstat to public db2 grant execute on procedure siebtrun to public db2 grant execute on procedure siebdbx to public db2 grant execute on procedure nextseq to public db2 grant execute on procedure siebtrim to public 完成遷移後,運行下面的命令激活數據庫: db2 activate db dbname 查看注冊表變量、數據庫配置和數據庫管理器配置的值。使用 db2set -g 命令設置全局注冊表變量。這些類型的變量沒有被遷移。 重新綁定所有的包,因爲在遷移過程中,這些包被設置爲無效。推薦運行下面的命令重新綁定所有的包: db2rbind dbname -l output_filename all You can also bind CLI packages. Go under sqllib/bnd and issue the following db2 bind @db2cli.lst blocking all grant public clipkg 6 如果需要的話,遷移 db2 explain 表,運行下面的命令: db2exmig -d dbname -e explain_schema [ -u userid password ] 通過運行 預遷移 一節的步驟 2 中的相同命令收集所有數據庫信息。 如果希望對所有或部分表進行壓縮,需要對表進行更改並對表啓用壓縮功能,然後使用 RESETDICTIONARY 選項發出 reorg 命令,如下所示: db2 "alter table tablename compress yes" db2 "reorg table tablename resetdictionary" 您可以通過更改表並禁用壓縮功能(compress no)來停用壓縮,然後發出相同的 reorg 命令。 更新所有 Siebel 數據庫表上的統計信息,要在所有 Siebel 表上運行 runstats,您可以修改 清單 1 中的 get_table_count.sh 腳本。爲此,通過執行下面的代碼替換掉 do 和 done 循環之間的所有的指令和命令: do echo "-------- Runstats on table $tabname ..." db2 "runstats on table $tabname with distribution and detailed indexes all shrlevel change" echo done < y 遷移完成後,對數據庫進行備份。 將連接的客戶機遷移到服務器中。 執行一些步驟設置 STMM,使其具有更好的性能: 在數據庫配置級別中,將 SELF_TUNING_MEM 設置爲 ON 並對 AUTOMATIC 設置下面的內容: DATABASE_MEMORY, LOCKLIST, MAXLOCKS, PCKCACHESZ, SHEAPTHRES_SHR, SORTHEAP, SHEAPTHRES_SHR, NUM_IOCLEANERS, NUM_IOSERVERS, DFT_PREFETCH_SZ, MAXAPPLS 在數據庫管理器配置級別中,設置如下參數: 將 SHEAPTHRES 設置爲 0 (zero) 將 INSTANCE_MEMORY、FCM_NUM_BUFFERS 和 FCM_NUM_CHANNELS 設置爲 AUTOMATIC 將所有數據庫緩沖池的大小設置爲 AUTOMATIC。 可以在 UNIX 平台上運行下面的腳本來啓用 DB2 9 的這個新功能。 清單3. 啓用 STMM。腳本名:enable_stmm.sh if [ $# -lt 1 ]; then echo "This script need database name as a parameter : " echo echo " Example : $0 database_name" echo;echo exit 1 fi export db_name=$1 db2start db2 -v connect to $db_name echo "db cfg level" db2 -v update db cfg for $db_name using self_tuning_mem on db2 -v update db cfg for $db_name using database_memory automatic db2 -v update db cfg for $db_name using locklist automatic maxlocks automatic db2 -v update db cfg for $db_name using pckcachesz automatic db2 -v update db cfg for $db_name using sortheap automatic sheapthres_shr automatic db2 -v update db cfg for $db_name using num_iocleaners automatic db2 -v update db cfg for $db_name using num_ioservers automatic db2 -v update db cfg for $db_name using dft_prefetch_sz automatic db2 -v update db cfg for $db_name using maxappls automatic echo "dbm cfg level" db2 -v update dbm cfg using sheapthres 0 db2 -v update dbm cfg using instance_memory automatic echo "bufferpool level" db2 "select bpname from syscat.bufferpools" > x export rownums=$(cat x | wc -l) headrows=$(($rownums-3)) tailrows=$(($headrows-3)) cat x | head -$headrows | tail -$tailrows > y while read bp_name; do db2 -v alter bufferpool $bp_name size automatic done < y rm x y db2 connect reset db2 terminate db2 force application all db2stop force db2start
󰈣󰈤
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有