| 導購 | 订阅 | 在线投稿
分享
 
 
當前位置: 王朝網路 >> php >> 基于DB2及PHP的應用系統跨平台遷移詳細步驟(二)
 

基于DB2及PHP的應用系統跨平台遷移詳細步驟(二)

2008-12-22 08:07:41  編輯來源:互聯網  简体版  手機版  評論  字體: ||
 
 
  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 系統的應用系統移植過程,讀者亦可以參考具體的移植過程,將其應用于其它平台之上。
 
 
 
上一篇《基于DB2及PHP的應用系統跨平台遷移詳細步驟(一)》
下一篇《PHP服務器變量設置的方法介紹》
 
 
 
日版寵物情人插曲《Winding Road》歌詞

日版寵物情人2017的插曲,很帶節奏感,日語的,女生唱的。 最後聽見是在第8集的時候女主手割傷了,然後男主用嘴幫她吸了一下,插曲就出來了。 歌手:Def...

兄弟共妻,我成了他們夜裏的美食

老鍾家的兩個兒子很特別,就是跟其他的人不太一樣,魔一般的執著。兄弟倆都到了要結婚的年齡了,不管自家老爹怎麽磨破嘴皮子,兄弟倆說不娶就不娶,老父母爲兄弟兩操碎了心...

如何磨出破洞牛仔褲?牛仔褲怎麽剪破洞?

把牛仔褲磨出有線的破洞 1、具體工具就是磨腳石,下面墊一個硬物,然後用磨腳石一直磨一直磨,到把那塊磨薄了,用手撕開就好了。出來的洞啊很自然的。需要貓須的話調幾...

我就是掃描下圖得到了敬業福和愛國福

先來看下敬業福和愛國福 今年春節,支付寶再次推出了“五福紅包”活動,表示要“把欠大家的敬業福都還給大家”。 今天該活動正式啓動,和去年一樣,需要收集“五福”...

冰箱異味産生的原因和臭味去除的方法

有時候我們打開冰箱就會聞到一股異味,冰箱裏的這種異味是因爲一些物質發出的氣味的混合體,聞起來讓人惡心。 産生這些異味的主要原因有以下幾點。 1、很多人有這種習...

《極品家丁》1-31集大結局分集劇情介紹

簡介 《極品家丁》講述了現代白領林晚榮無意回到古代金陵,並追隨蕭二小姐化名“林三”進入蕭府,不料卻陰差陽錯上演了一出低級家丁拼搏上位的“林三升職記”。...

李溪芮《極品家丁》片尾曲《你就是我最愛的寶寶》歌詞

你就是我最愛的寶寶 - 李溪芮 (電視劇《極品家丁》片尾曲) 作詞:常馨內 作曲:常馨內 你的眉 又鬼馬的挑 你的嘴 又壞壞的笑 上一秒吵鬧 下...

烏梅的功效與作用以及烏梅的食用禁忌有哪些?

烏梅,又稱春梅,中醫認爲,烏梅味酸,性溫,無毒,具有安心、除熱、下氣、祛痰、止渴調中、殺蟲的功效,治肢體痛、肺痨病。烏梅泡水喝能治傷寒煩熱、止吐瀉,與幹姜一起制...

什麽是脂肪粒?如何消除臉部脂肪粒?

什麽是脂肪粒 在我們的臉上總會長一個個像脂肪的小顆粒,弄也弄不掉,而且顔色還是白白的。它既不是粉刺也不是其他的任何痘痘,它就是脂肪粒。 脂肪粒雖然也是由油脂...

網絡安全治理:國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰受害者

來源:中國青年報 新的攻擊方法不斷湧現,黑客幾乎永遠占據網絡攻擊的上風,我們不可能通過技術手段杜絕網絡攻擊。國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰...

 
 
 
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([url=http://httpd.apache.org/]http://httpd.apache.org/[/url]),並將其解壓到制定目錄 # 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([url=http://www.php.net/]http://www.php.net/[/url]) # 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 系統的應用系統移植過程,讀者亦可以參考具體的移植過程,將其應用于其它平台之上。
󰈣󰈤
 
 
 
  免責聲明:本文僅代表作者個人觀點,與王朝網路無關。王朝網路登載此文出於傳遞更多信息之目的,並不意味著贊同其觀點或證實其描述,其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,並請自行核實相關內容。
 
 
夏末午後的美麗女生
天生麗質_唯美動人
清新素雅的靓麗女生
完美絕倫_秀色可餐
芙蓉古鎮(一)
就是不一樣的街燈&#;
百態
荷一組(三張)
 
>>返回首頁<<
 
 熱帖排行
 
 
 
 
© 2005- 王朝網路 版權所有