5.处理数据库表中的自增字段
对于需要加载的含有自增字段的表,即该表的 ixf 数据文件中有自增列的值, 可以在 load 命令中加入如下参数控制自增字段值:
1). modified by identityignore :加载的数据文件中有自增字段值,load 时忽略数据文件中自增字段值 ;
2). modified by identitymissing :加载的数据文件中没有自增字段值,load 时自动生成自增字段值 ;
3). modified by identityoverride :加载的数据文件中有自增字段值,load 时使用数据文件中的自增字段值 。
为了使目标数据库中含有自增字段的表中数据与源数据库中的数据保持一致,本文实例中选择使用 modified by identityoverride 参数,在导入数据时使用数据文件中的自增字段值。读者可以根据不同情况选择适当的控制参数。
首先,在 srcdb1_tables.ddl 文件中查找所有包自增字段的表名 ( 含有 GENERATED ALWAYS AS IDENTITY 字段的表 ),然后在 srcdb1_load.sql 中将 modified by identityoverride 语句片段插入到这些含有自增字段的表所对应的 load 命令行中。
清单8. load 脚本中自增字段处理
db2 load from test.ixf of ixf modified by identityoverride insert into TEST;
6.执行导出脚本
执行导出脚本,导出所有表的数据 。
# db2 -tvf srcdb1_export.sql
导出的表数据以 ixf 格式存放于当前路径下。
7.保存脚本和数据文件
将所有 DDL 脚本以及数据文件 *.ixf 复制到目标系统所在站点。
LINUX 系统上的操作
1.通过命令行处理器(CLP)创建实例 SRCDB1:
# db2icrt SRCDB1
2.使用 CREATE DATABASE 命令创建数据库 SRCDB1,创建必要的表空间及配置必要的数据库参数。
# db2 create database SRCDB1
3.连接到数据库 SRCDB1,执行 srcdb1_tables.ddl 脚本创建缓冲池,表空间,UDF,表以及 Index,Sequence,视图等数据库对象。
# db2 connect to srcdb1
# db2 -tvf srcdb1_tables.ddl
4.进入到放置 .ixf 数据文件的目录,执行下面的命令导入表数据。
# db2 -tvf srcdb1_load.sql
5.使用 srcdb1_foriegnkeys.ddl,srcdb1_triggers.ddl ,srcdb1_procedures.ddl 脚本文件创建外键约束,触发器和存储过程。
# db2 -tvf srcdb1_foriegnkeys.ddl
# db2 -tvf srcdb1_triggers.ddl
# db2 -tvf srcdb1_procedures.ddl
成功完成上述步骤后,数据库的迁移工作基本完成。
Apache 服务器与 php 的安装和配置
Apache 服务器的安装和配置
Apache HTTP 服务器是一个模块化的软件,管理员可以通过选择服务器中包含的模块进行功能增减。模块可以在编译时被静态包含进httpd二进制文件,也可以编译成独立于httpd二进制文件的动态共享对象 (DSO)。DSO 模块可以与服务器一起编译,也可以用 Apache 扩展工具 (apxs) 单独编译。动态加载的方式相比静态加载具有更高的灵活性。使用动态载入特性,Apache 服务器必须以动态共享对象(DSO,Dynamic Shared Object)的方式编译。Apache 对 DSO 的支持,是基于一个叫 mod_so 的模块来实现的,为支持动态加载方式,这个模块必须预先被静态编译到内核中。因此可以通过 mod_so 模块检测已安装的 Apache 是否支持 DSO:
清单9. mod_so 模块检测
# $APACHEHOME/bin/httpd –l Compiled in modules: core.c prefork.c http_core.c mod_so.c |
如果在列出的模块名中有 mod_so.c,则说明安装的 Apache 已经支持 DSO,否则需要重新编译 Apache。Apache 的安装和配置过程十分简单,如下所示:
1.下载 httpd-2.0.54.tar.gz(http://httpd.apache.org/),并将其解压到制定目录
# tar zxvf httpd-2.0.54.tar.gz && cd httpd-2.0.54
2.编译安装 apache
# ./configure –prefix=/usr/local/apache2 –enable-module=so
— prefix 指定 apache 的安装路径
–enable-module=so 将 so 模块(mod_so)静态编译进 apache 服务器的内核,以支持 DSO 模式
# make && make install
3. 启动 apache
# ln -s /usr/local/apache2/bin/apachectl /sbin/apachectl
# apachectl start
php 的安装和配置
在 php 的安装和配置过程中,有两个方面需要注意,首先是 php 与 apache http server 的结合,其次是 php 与 db2 数据源的连接。
在 Apache 环境下安装 PHP 的时候,有三种安装模式可供选择:静态模块、动态模块(DSO)和 CGI。建议以 DSO 模式安装,这种模式的维护和升级都相对简单,可以在无需重新编译 Apache 的条件下,根据需求动态增加新功能模块。当然,这样做也会带来一些运行效率上的下降,Apache 服务器在启动时会慢约 20%。
PHP 连接 DB2 数据源同样有三种方式 : unified ODBC driver、IBM_DB2 和 PDO(php data object)。
◆unified ODBC driver 是最早的 PHP 访问数据库的扩展模块之一。从 DB2 v7.2 开始,unified ODBC driver 就支持对其的访问。对所有支持 ODBC 的数据库,unified ODBC driver 提供了统一的数据访问接口。为了保证接口的一般性,unified ODBC driver 并未对不同类型的数据库做特定的优化。
◆IBM_DB2 是由 IBM 开发和维护的与 DB2 数据源交互的扩展模块,它遵守开源协议。对基于 DB2 UDB 和 php 4.x 的应用来说,IBM_DB2 是最优的选择,因为它针对 DB2 UDB 进行了优化,同时避免了一些使用 unified ODBC driver 时可能存在的兼容性问题。不过,IBM_DB2 只支持 DB2 v8.2.2 或更高版本。
◆PDO 则是 php 5.x 中即将支持的新的数据库访问方式。本文中,由于源数据库与目标数据库的版本均为 DB2 v8.1,并且源环境中采用 unified ODBC driver 的方式,为了保持环境配置的一致性,仍然选择 unified ODBC driver 作为 php 与数据源的访问接口。
PHP的安装与配置过程具体如下:
1.下载并解压 php-4.4.4.tar.gz(http://www.php.net/)
# tar zxvf php-4.4.4.tar.gz # cd php-4.4.4 |
2.配置编译 php 源代码
# ./configure –prefix=/usr/local/php –with-apxs2=/usr/sbin/apxs –without-mysql –with-ibm-db2=/home/reportdb/sqllib
–prefix 指定 php 的安装路径
–with-apxs2 指定 apxs 程序的路径 (apxs 是一个 perl 脚本,它可以脱离 apache 的源码将 php 模块编译成 DSO 文件 )
–with-ibm-db2 指定 unified ODBC driver 作为 php 与数据源的访问接口,并指定 DB2 的实例安装目录。
–without-mysql 忽略 mysql 数据库缺省的安装配置
#cp php.ini-dist /usr/local/lib
将 php 安装文件中的 php.ini-dist 拷贝到 /usr/local/lib 下作为 php 的配置文件。
# make && make install
# cp php.ini-dist /usr/local/lib/php.ini
3.编辑 /usr/local/apache2/conf/httpd.conf 文件,做如下修改:
设置 html 文件主目录:用于存放网站所需 web 文件的主目录
DocumentRoot “/home/web/www/” |
设置 apache 的默认文件名的次序: apache将按照由前至后的顺序在当前路径下查找其所支持的默认主页文件
DirectoryIndex index.php index.html.var index.cgi index.html |
添加 php 解释文件后缀:对于所有需要被 PHP 解释的文件类型,需要将后缀添加至 AddType 配置项
AddType application/x-httpd-php .php .inc |
加载 PHP 模块:加载模块目录 modules 下的库 libphp4.so,并将模块结构名 php4_module 添加到活动模块列表中
LoadModule php4_module modules/libphp4.so |
4.编辑配置文件 /usr/local/apache2/bin/apachectl :
为保证与 DB2 数据库的连通,启动 Apache 服务时,需要同时初始化 DB2 客户机实例环境。创建 DB2 实例时,DB2 会自动生成 shell 脚本用于初始化所需的 DB2 实例环境,只需直接调用即可:
if test -f /home/reportdb/sqllib/db2profile; then . /home/reportdb/sqllib/db2profile fi |
5.然后,重新启动 Apache 服务器以继承上面的配置更改。
# apachectl restart |
6.编写 PHP 的测试文件 test.php,内容如下:
echo phpinfo(); ?> |
将其存放在 apache 的 html 文件主目录 /home/web/www 下,通过浏览器访问该网页,若能正常访问(如下图所示),则配置工作全部完成。
结束语
本文主要涵盖了一个基于 php 和 DB2 UDB 的应用系统的跨平台移植过程,详细介绍了 DB2 数据库系统的跨平台迁移以及 Apache 服务器与 php 应用系统的安装和配置过程。基于实践经验,为 DB2 数据库系统的跨平台迁移问题提供了一个可行的解决方案。对于移植过程中可能出现的问题,本文也给予详细的描述并提供相应的解决方案。虽然本文所涉及的只是从 AIX 系统到 LINUX 系统的应用系统移植过程,读者亦可以参考具体的移植过程,将其应用于其它平台之上。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
听说你要迁移到云端数据库?且慢
随着越来越多的公司迁转向云端技术,在完成向云端的迁移前,DBA需要对Oracle云数据库管理系统的利弊有充分的了解,这一点非常重要。
-
数据库产品巡礼:IBM DB2概览
IBM DB2关系型数据库管理系统提供了支持多平台系统的关键技术,它具备较高的可用性和良好的性能。
-
企业大数据全攻略:从数据迁移到数据仓库升级
大数据应用现在在大型组织中已经非常普遍。它们通常一开始作为一个信息技术(IT)项目的组成部分
-
如何进行分布式大数据应用调优
分布式环境通常是与数据库服务器相分离的。而DBA的工作就是监视这些环境并配置和优化数据库服务器以满足多种需求。大数据的出现加剧了DBA的问题。