这一节将介绍使用 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