色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

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

瀏覽:5日期:2023-11-09 12:52:29
本文將引領(lǐng)您完成 Siebel 7 數(shù)據(jù)庫(kù)環(huán)境從 DB2® UDB Version 8 到 DB2 9 的升級(jí)。您將了解一些必要的步驟以及完成遷移過(guò)程所需的工具和命令。

本文首先介紹了 DB2 9 中的一些新特性,并展示了 Siebel 應(yīng)用程序如何利用這些特性。本文詳述了 UNIX® 和 Windows® 操作系統(tǒng)在預(yù)遷移和實(shí)際遷移過(guò)程中的工作,最后介紹完成遷移后需要執(zhí)行的步驟。

DB2 9中的新特性

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

◆自動(dòng)化管理特性:自動(dòng)化管理特性將簡(jiǎn)化 Siebel/DB2 DBA 的管理任務(wù)。它包括自調(diào)優(yōu)內(nèi)存管理(Self Tuning Memory Management,STMM)。STMM 通過(guò)持續(xù)更新配置參數(shù)(數(shù)據(jù)庫(kù)參數(shù)和數(shù)據(jù)庫(kù)管理器參數(shù))、調(diào)整緩沖池大小以及動(dòng)態(tài)確定數(shù)據(jù)庫(kù)使用的內(nèi)存總量,從而減少或消除配置 DB2 服務(wù)器的工作。

增強(qiáng)了數(shù)據(jù)庫(kù)安全性:基于標(biāo)簽的訪問(wèn)控制(Label Based Access Control,LBAC)是一種新的安全特性,它使您可以在行和列的級(jí)別上控制數(shù)據(jù)訪問(wèn)。為此,添加了一種新的安全管理員(SECADM)授權(quán)級(jí)別,它將收集一些與安全相關(guān)的權(quán)限。根據(jù)列表或組的結(jié)構(gòu)、位置或從屬關(guān)系,LBAC 可用于增強(qiáng)對(duì)用戶可見(jiàn)記錄的 Siebel 訪問(wèn)控制。

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

能夠重新開(kāi)始中斷的恢復(fù)操作,這些操作能夠在進(jìn)行數(shù)據(jù)庫(kù)恢復(fù)時(shí)節(jié)省寶貴的時(shí)間和工作。

支持使用從已有備份映像中自動(dòng)生成的腳本執(zhí)行重定向恢復(fù)操作。

能夠從表空間備份映像中重新構(gòu)建數(shù)據(jù)庫(kù)。

◆更多附加的有用特性:很多特性對(duì) Siebel 應(yīng)用程序都非常有用。其中一些特性與性能和可伸縮性有關(guān),例如數(shù)據(jù)行壓縮,而另外一些則與可管理性有關(guān),例如復(fù)制數(shù)據(jù)庫(kù)模式的功能,以及 ALTER TABLE 語(yǔ)句增強(qiáng)。

本文將展示如何啟用 DB2 9 的一些特性,例如自調(diào)優(yōu)內(nèi)存管理和壓縮,這些都是完成遷移后的工作。

預(yù)遷移步驟

預(yù)遷移步驟非常重要,是實(shí)現(xiàn)成功遷移的關(guān)鍵。在本節(jié)中,實(shí)際上將執(zhí)行三項(xiàng)任務(wù):

1.在開(kāi)始遷移之前,搜集有關(guān)當(dāng)前數(shù)據(jù)庫(kù)和環(huán)境的最重要信息(給出了一些有用的腳本和示例)。這樣一來(lái),如果在遷移過(guò)程中出現(xiàn)了問(wèn)題,您可以很輕易地恢復(fù)到遷移前的狀態(tài)。同樣,如果您需要使用這些信息并且這些參數(shù)值在遷移后還有用的話,您還可以應(yīng)用它們。

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

3.停止 DB2 服務(wù)器,準(zhǔn)備進(jìn)行遷移。

下面給出了這些任務(wù)的細(xì)節(jié):

1.運(yùn)行數(shù)據(jù)庫(kù)的脫機(jī)備份。 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.將數(shù)據(jù)庫(kù)配置信息保存為 db cfg、dbm cfg 和數(shù)據(jù)行計(jì)數(shù)。

對(duì)數(shù)據(jù)庫(kù)中的所有表格進(jìn)行行計(jì)數(shù)并保存結(jié)果。下面的腳本將幫助實(shí)現(xiàn)此操作。

對(duì)數(shù)據(jù)庫(kù)運(yùn)行 db2 get db cfg for dbname 并保存結(jié)果。

運(yùn)行 db2 get dbm cfg 并保存結(jié)果。

運(yùn)行 db2set -all 并保存結(jié)果。

對(duì)數(shù)據(jù)庫(kù)運(yùn)行 db2 list tablespaces show detail 和 db2 list packages for all show detail 并保存結(jié)果。

運(yùn)行 db2look -d $dbname -e -a -m -o $outputfilename。

運(yùn)行 db2dart dbname /DB /V Y /RPT . /RPTF E 并保存結(jié)果。運(yùn)行這個(gè)命令將占用一些時(shí)間。

清單 1. 在 UNIX 平臺(tái)上實(shí)現(xiàn)表行計(jì)數(shù)的示例。腳本名: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,則應(yīng)該對(duì)腳本和循環(huán)中的第一個(gè)查詢做出相應(yīng)地修改。

清單 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

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

SQLSPCS.1 和 SQLSPCS.2 文件包含表空間信息,并且在遷移過(guò)程中會(huì)增長(zhǎng)為初始大小的四倍。如果這兩個(gè)文件的總大小是 512KB,那您至少需要 2MB 的自由空間。

確保系統(tǒng)目錄和系統(tǒng)臨時(shí)表空間中具有足夠的自由空間。然而,磁盤空間會(huì)發(fā)生變化,建議您應(yīng)用下面的原則。將 SYSCATSPACE 和 TEMPSPACE1(這里是默認(rèn)名稱,可以改變)的總大小增加為目前的兩倍。對(duì)于 SMS 表空間,增加容器文件的大小,而對(duì)于 DMS,則要增加額外的容器文件(這將使數(shù)據(jù)重新進(jìn)行平衡)。只有進(jìn)行遷移操作時(shí)才需要額外的空間,因此成功完成遷移后可以減少表空間的大小。以下的示例基于 AIX 和 Siebel 77 DB2 數(shù)據(jù)庫(kù),展示了如何確定 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 的值增加為當(dāng)前大小的兩倍。遷移在單個(gè)事務(wù)中改變系統(tǒng)目錄對(duì)象,并且這些更改需要足夠的日志空間來(lái)包含該事務(wù)。如果空間不夠的話,該事務(wù)將回滾并且也不能成功實(shí)現(xiàn)遷移。更多詳細(xì)信息,請(qǐng)參考 “Increasing table space and log file sizes before migration”。

只針對(duì) Linux:將裸設(shè)備(raw device)改為塊設(shè)備(block device)。更多詳細(xì)信息,請(qǐng)參考 “Changing raw devices to block devices (Linux)”。

發(fā)出以下命令停止 DB2 服務(wù)器:

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 之前,要確保您的機(jī)器是兼容的,并且已經(jīng)安裝好了所有的修正程序和補(bǔ)丁。更多詳細(xì)信息,請(qǐng)參考 “System requirements for DB2 9 for Linux UNIX and Windows”。

遷移步驟

本節(jié)將介紹更多關(guān)于遷移任務(wù)本身的詳細(xì)信息。遷移過(guò)程包括兩大主要步驟,實(shí)例遷移和數(shù)據(jù)庫(kù)遷移。這一節(jié)將介紹遷移的這兩個(gè)部分,首先介紹在 Windows 平臺(tái)上的遷移,然后介紹在 UNIX 平臺(tái)上的遷移。

在 Windows 上進(jìn)行遷移:對(duì)于 Windows 平臺(tái)上的 DB2 9,有兩種方法可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)的遷移。

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

在安裝 DB2 9 時(shí),將檢測(cè)到之前的版本,并且安裝向?qū)@示一個(gè)遷移實(shí)例的按鈕(參見(jiàn)圖 1 下面的部分)。

圖1. 安裝向?qū)?

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

選擇'migrate'按鈕將安裝 DB2 9 并且自動(dòng)進(jìn)行實(shí)例遷移。稍后您只需要調(diào)用 CLP 并發(fā)出以下命令就可完成數(shù)據(jù)庫(kù)遷移:

db2start

db2 migrate db dbname

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

在安裝向?qū)е羞x擇'install new'按鈕,將 DB2 安裝在一個(gè)不同的文件夾。

安裝完成后,導(dǎo)航到新的 DB2_9Directory/bin。

打開(kāi) DB2 CLP 窗口(db2cmd.exe)并發(fā)出以下命令進(jìn)行實(shí)例遷移:db2imigr v8InstanceName /u:userid,password。

關(guān)閉 CLP 并重新打開(kāi)它,以使操作生效。

發(fā)出 db2ilist 命令。將顯示所有實(shí)例。

發(fā)出 db2 list directory 命令。將引入在下一步驟中遷移的數(shù)據(jù)庫(kù)。

發(fā)出 db2start 命令。

發(fā)出 db2 migrate db dbname 命令,進(jìn)行數(shù)據(jù)庫(kù)遷移。

在 UNIX 上進(jìn)行遷移:在 UNIX 平臺(tái)上,需要執(zhí)行以下步驟安裝 DB2 9、完成實(shí)例遷移和數(shù)據(jù)庫(kù)遷移:

安裝 DB2 9,但不需要卸載 DB2 UDB Version 8,也不需要?jiǎng)h除或重命名 SQLLIB 目錄。

要添加許可,運(yùn)行 DB2_9_Directory/adm/db2licm -a filename.lic 命令作為根。

例如,如果從 /db2_9_installimage 目錄中開(kāi)始安裝 DB2 9 ESE,并選擇了默認(rèn)的安裝位置,那么應(yīng)該運(yùn)行

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

檢查根環(huán)境并確保 LIBPATH 或 PATH 環(huán)境變量中不存在 DB2 路徑或?qū)嵗?SQLLIB。同時(shí)檢查 .profile 和 .kshrc 文件。這些文件在使用 db2imigr 命令時(shí)將生成錯(cuò)誤,阻止進(jìn)行實(shí)例遷移。

遷移實(shí)例。在 DB2_Installation_Path/instance 下運(yùn)行 db2imigr 命令作為根。

例如,db2imigr -u db2fenc1 db2inst1 。

在成功的遷移過(guò)程中,舊的 SQLLIB 被重命名為 SQLLIB_V81。

作為被遷移的實(shí)例的所有者登錄,并發(fā)出 db2start 命令。

以實(shí)例所有者的身份,通過(guò)運(yùn)行 db2 migrate db dbname 命令進(jìn)行數(shù)據(jù)庫(kù)遷移。

此時(shí),您已經(jīng)完成了遷移任務(wù)。下一節(jié)將向您展示如何調(diào)整一些參數(shù)并啟用 DB2 的一些特性來(lái)開(kāi)始使用 Siebel 7 和 DB2 9。

完成遷移后需要進(jìn)行的步驟

這一節(jié)將介紹使用 DB2 9 和 Siebel 7 的準(zhǔn)備步驟。還將啟用 DB2 9 的一些新特性。

調(diào)整日志空間大?。╨ogfilsiz、logprimary 和 logsecond 數(shù)據(jù)庫(kù)配置參數(shù))。如果您改變了這些參數(shù)(如預(yù)遷移步驟中建議的那樣),您可以使用預(yù)遷移步驟 3 中保存的值將這些參數(shù)值恢復(fù)為原來(lái)的值。

安裝 Siebel 存儲(chǔ)過(guò)程。將正確的 Siebel 存儲(chǔ)過(guò)程代碼(在 UNIX 上為 siebproc 而在 Windows 上為 siebproc.dll)復(fù)制到 SQLLIB 下的 FUNCTION 目錄。更改文件的權(quán)限。UNIX 的 siebproc 權(quán)限應(yīng)該修改為所有者具有讀寫權(quán)限,組用戶只具有讀權(quán)限,而所有其他人既不具有讀權(quán)限,也不具有寫權(quán)限。

將 Siebel 存儲(chǔ)過(guò)程和用戶定義函數(shù)的執(zhí)行權(quán)限授權(quán)給 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

完成遷移后,運(yùn)行下面的命令激活數(shù)據(jù)庫(kù):

db2 activate db dbname

查看注冊(cè)表變量、數(shù)據(jù)庫(kù)配置和數(shù)據(jù)庫(kù)管理器配置的值。使用 db2set -g 命令設(shè)置全局注冊(cè)表變量。這些類型的變量沒(méi)有被遷移。

重新綁定所有的包,因?yàn)樵谶w移過(guò)程中,這些包被設(shè)置為無(wú)效。推薦運(yùn)行下面的命令重新綁定所有的包:

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 表,運(yùn)行下面的命令:

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

通過(guò)運(yùn)行 預(yù)遷移 一節(jié)的步驟 2 中的相同命令收集所有數(shù)據(jù)庫(kù)信息。

如果希望對(duì)所有或部分表進(jìn)行壓縮,需要對(duì)表進(jìn)行更改并對(duì)表啟用壓縮功能,然后使用 RESETDICTIONARY 選項(xiàng)發(fā)出 reorg 命令,如下所示:

db2 'alter table tablename compress yes'

db2 'reorg table tablename resetdictionary'

您可以通過(guò)更改表并禁用壓縮功能(compress no)來(lái)停用壓縮,然后發(fā)出相同的 reorg 命令。

更新所有 Siebel 數(shù)據(jù)庫(kù)表上的統(tǒng)計(jì)信息,要在所有 Siebel 表上運(yùn)行 runstats,您可以修改 清單 1 中的 get_table_count.sh 腳本。為此,通過(guò)執(zhí)行下面的代碼替換掉 do 和 done 循環(huán)之間的所有的指令和命令:

do

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

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

echo

done < y

遷移完成后,對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份。

將連接的客戶機(jī)遷移到服務(wù)器中。

執(zhí)行一些步驟設(shè)置 STMM,使其具有更好的性能:

在數(shù)據(jù)庫(kù)配置級(jí)別中,將 SELF_TUNING_MEM 設(shè)置為 ON 并對(duì) AUTOMATIC 設(shè)置下面的內(nèi)容:

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

在數(shù)據(jù)庫(kù)管理器配置級(jí)別中,設(shè)置如下參數(shù):

將 SHEAPTHRES 設(shè)置為 0 (zero)

將 INSTANCE_MEMORY、FCM_NUM_BUFFERS 和 FCM_NUM_CHANNELS 設(shè)置為 AUTOMATIC

將所有數(shù)據(jù)庫(kù)緩沖池的大小設(shè)置為 AUTOMATIC。

可以在 UNIX 平臺(tái)上運(yùn)行下面的腳本來(lái)啟用 DB2 9 的這個(gè)新功能。

清單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

標(biāo)簽: DB2 數(shù)據(jù)庫(kù)
主站蜘蛛池模板: 精品国产不卡一区二区三区 | 亚洲精品国产成人一区二区 | 国产a网站 | 中美日韩在线网免费毛片视频 | 亚洲性爰视频 | 国产片18在线观看 | 伊人久久国产免费观看视频 | 精品国产三级 | 一个人看的www日本高清视频 | 国产高清一区二区 | 九九精品免费观看在线 | 亚洲gogo人体大胆西西安徽 | 91亚洲精品 | 国产精品免费一区二区三区四区 | 亚洲一区二区免费视频 | 国产超清在线观看 | 亚洲毛片在线观看 | 国产精品自拍合集 | 中国性猛交xxxxx免费看 | 欧美日韩视频一区二区三区 | 欧美成人综合 | 国产高清在线精品免费 | 国产午夜一级淫片 | 日韩一级欧美一级毛片在线 | 亚洲精品男人天堂 | 成人欧美精品久久久久影院 | 国产成人精品视频频 | 国产高清美女一级毛片久久 | 亚洲男人的天堂久久精品 | 国产在线精品一区二区不卡 | 国产精品青草久久福利不卡 | 亚洲视频一区在线观看 | 国产成人成人一区二区 | 最新国产美女一区二区三区 | 国产亚洲女在线精品 | 999国内精品永久免费视频 | 经典国产乱子伦精品视频 | 日韩亚洲欧美理论片 | 中文字幕欧美在线观看 | 成人毛片在线播放 | 亚洲图片国产日韩欧美 |