首頁 後端開發 php教程 基于DB2及PHP的应用系统跨平台迁移详细步骤(二)_PHP教程

基于DB2及PHP的应用系统跨平台迁移详细步骤(二)_PHP教程

Jul 13, 2016 pm 05:35 PM
db2 php 基於 處理 欄位 應用系統 資料庫 步驟 自增 詳細 跨平台 遷移 需要

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 系统的应用系统移植过程,读者亦可以参考具体的移植过程,将其应用于其它平台之上。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/508262.htmlTechArticle5.处理数据库表中的自增字段 对于需要加载的含有自增字段的表,即该表的 ixf 数据文件中有自增列的值, 可以在 load 命令中加入如下参...
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

我後悔之前不知道的 7 個 PHP 函數 我後悔之前不知道的 7 個 PHP 函數 Nov 13, 2024 am 09:42 AM

如果您是經驗豐富的PHP 開發人員,您可能會感覺您已經在那裡並且已經完成了。操作

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? 什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

See all articles