ホームページ >バックエンド開発 >PHPチュートリアル >DB2 および PHP に基づくアプリケーション システムのクロスプラットフォーム移行の詳細な手順 (2)_PHP チュートリアル

DB2 および PHP に基づくアプリケーション システムのクロスプラットフォーム移行の詳細な手順 (2)_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:35:511040ブラウズ

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 の 3 つのインストール モードから選択できます。 DSO モードでインストールすることをお勧めします。このモードのメンテナンスとアップグレードは、Apache を再コンパイルすることなく、必要に応じて動的に追加できます。もちろん、これにより、Apache サーバーの起動速度が約 20% 低下します。

PHP には、統合 ODBC ドライバー、IBM_DB2、および PDO (php データ オブジェクト) という DB2 データ ソースに接続する 3 つの方法もあります。

◆統合 ODBC ドライバーは、PHP がデータベースにアクセスするための最も初期の拡張モジュールの 1 つです。 DB2 v7.2 以降、統合 ODBC ドライバーは、DB2 へのアクセスをサポートします。統合 ODBC ドライバーは、ODBC をサポートするすべてのデータベースに統合データ アクセス インターフェイスを提供します。インターフェイスの汎用性を確保するために、統合 ODBC ドライバーは、さまざまな種類のデータベースに対して特定の最適化を行いません。

◆IBM_DB2 は、DB2 データ ソースと対話するために IBM によって開発および保守されている拡張モジュールであり、オープン ソース ライセンスに準拠しています。 DB2 UDB および PHP 4.x に基づくアプリケーションの場合、IBM_DB2 が最適な選択です。これは、IBM_DB2 が DB2 UDB 用に最適化されており、統合 ODBC ドライバーの使用時に発生する可能性のある互換性の問題を回避できるためです。ただし、IBM_DB2 は DB2 v8.2.2 以降のみをサポートします。

◆PDOはphp 5.xでサポートされる新しいデータベースアクセス方法です。この記事では、ソース データベースとターゲット データベースのバージョンが両方とも DB2 v8.1 であり、ソース環境では統合 ODBC ドライバーが使用されているため、環境構成の一貫性を維持するために、引き続き統合 ODBC ドライバーが選択されています。 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

--プレフィックスはphp

のインストールパスを指定します

--with-apxs2 は、apxs プログラムのパスを指定します (apxs は、Apache ソース コードを使用せずに PHP モジュールを DSO ファイルにコンパイルできる Perl スクリプトです)

--with-ibm-db2 は、php とデータ ソース間のアクセス インターフェイスとして統合 ODBC ドライバーを指定し、DB2 インスタンスのインストール ディレクトリを指定します。

--without-mysql は、mysql データベースのデフォルトのインストール構成を無視します

#cp php.ini-dist /usr/local/lib

PHP インストールファイル内の php.ini-dist を PHP 設定ファイルとして /usr/local/lib にコピーします。

# 作成 && インストールを行う

# cp php.ini-dist /usr/local/lib/php.ini

3. /usr/local/apache2/conf/httpd.conf ファイルを編集し、次の変更を加えます:

HTML ファイルのホーム ディレクトリを設定します: Web サイトに必要な Web ファイルを保存するために使用されるホーム ディレクトリ

ドキュメントルート「/home/web/www/」

Apache のデフォルトのファイル名の順序を設定します。Apache は、現在のパスでサポートされているデフォルトのホームページ ファイルを前から後ろの順序で検索します

DirectoryIndexindex.phpindex.html.varindex.cgiindex.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 は必要な DB2 インスタンス環境を初期化するシェル スクリプトを自動的に生成します。それを直接呼び出すだけです。

if test -f /home/reportdb/sqllib/db2profile then

./home/reportdb/sqllib/db2profile

フィ

5.次に、Apache サーバーを再起動して、上記の設定変更を継承します。

#apachectl 再起動

6.次の内容の PHP テスト ファイル test.php を作成します:

echo phpinfo();

?>

ApacheのHTMLファイルのメインディレクトリ/home/web/wwwに保存し、ブラウザからWebページにアクセスできれば(下図のように)設定作業は完了です。

結論

この記事では主に、php と DB2 UDB に基づくアプリケーション システムのクロスプラットフォーム移行プロセスについて説明し、DB2 データベース システムのクロスプラットフォーム移行と、Apache サーバーと php アプリケーション システムのインストールと構成のプロセスについて詳しく説明します。実際の経験に基づいて、DB2 データベース システムのクロスプラットフォーム移行問題に対する実現可能な解決策が提供されます。この記事では、移植プロセス中に発生する可能性のある問題の詳細な説明と対応する解決策も提供します。この記事では、AIX システムから LINUX システムへのアプリケーション システムの移植プロセスのみを説明しますが、読者は具体的な移植プロセスを参照して、それを他のプラットフォームに適用することもできます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/508262.html技術記事 5.データベース テーブルの自動インクリメント フィールドの処理 自動インクリメント フィールドを使用してロードする必要があるテーブル、つまりテーブルの ixf データ ファイルに自動インクリメント列値がある場合は、ロード コマンドに次のパラメータを追加できます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。