日期:2014-05-16  浏览次数:20528 次

如何将Siebel 7从DB2 UDB V8迁移到DB2 9
本文将引领您完成 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