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 系統的應用系統移植過程,讀者亦可以參考具體的移植過程,將其應用於其它平台之上。
http://www.bkjia.com/PHPjc/508262.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/508262.htmlTechArticle5.處理資料庫表中的自增欄位 對於需要載入的含有自增欄位的表,即該表的 ixf 資料檔案中有自增列的值, 可以在 load 命令中加入如下參...