自informix5.x以后,INFORMIX公司推出新一代數(shù)據(jù)庫(kù)引擎 ONLINE DYNAMIC SERVER動(dòng)態(tài)服務(wù),一般我們簡(jiǎn)稱ONLINE7.X, ONLINE是一個(gè)關(guān)系數(shù)據(jù)管理(RDBMS), 它的任務(wù)是提供一個(gè)存 儲(chǔ)、檢索、修改和刪除數(shù)據(jù)的環(huán)境, 它的目標(biāo)就是使具有多個(gè) 物理CPU 和大容量?jī)?nèi)存的計(jì)算機(jī)創(chuàng)建高性能和高穩(wěn)定性的操作 環(huán)境,所以O(shè)NLINE7.X廣泛運(yùn)用于銀行、保險(xiǎn)、電信、郵政等對(duì) 于速度和安全性較高的部門。
INFORMIX-ONLINE 7.3在SCO OpenServer 5.0.X 系統(tǒng)上的 安裝和配置。
一.Informix7.30的安裝
1.建立infomix組和informix用戶
1) 以 root用戶登錄
2) 使用scoadmin系統(tǒng)管理程序里面的Account Manager建 立一個(gè)組名為"informix", 用戶名為"infomix"的用戶,其 "Home Directory"缺省為"/usr/informix",不必修改。
2. 產(chǎn)品的安裝
1) 以informix用戶登錄系統(tǒng),編輯.profile所需的環(huán)境變 量:
INFORMIXDIR=/usr/informix
INFORMIXSERVER=服務(wù)器名(例如post)
LD_LIBRARY=$INFORMIXDIR/lib:$INFORMIXDIR/lib/esql
TERMCAP=$INFORMIXDIR/etc/termcap
CLIENT_LOCALE=zh_cn.gb
DB_LOCALE=zh_cn.gb
SERVER_LOCALE=zh_cn.gb
PATH=$INFORMIX/bin:$INFORMIX/lib:$PATH
export INFORMIXDIR INFORMIXSERVER LD_LIBRARY TERMCAP
export CLIENT_LOCALE DB_LOCALE SERVER_LOCALE PATH
2) 退出informix用戶重新登錄,使上述設(shè)置的環(huán)境變量生效。
3) 安裝INFORMIX-SQL、INFORMIX-4GL、INFORMIX-IDS7.3, 請(qǐng)嚴(yán)格按以上步驟安裝(否則ONLINE啟動(dòng)不了,而且報(bào)錯(cuò)也是莫名 其妙,"CAN'T FIND MESSAGE FILE AND DBLANG")。
4) 以root用戶登錄并插入SQL光盤
# mount -o lower /dev/cd0 /mnt
# cd /usr/informix
# tar xvf /mnt/sql.tar
# ./installsql
輸入許可證提供的序列號(hào),如:INF#Xxxxxxx
輸入許可證提供的KEY:如AAABBB
注意必須是大寫字母
# unmount /mnt
插入4GL光盤
# mount -o lower /dev/cd0 /mnt
# tar xvf /mnt/4gl.tar
# ./install4gl
輸入許可證提供的序列號(hào),如:INF#Xxxxxxx
輸入許可證提供的KEY:如AAABBB
注意必須是大寫字母
# unmount /mnt
插入IDS7.30光盤
# mount -o lower /dev/cd0 /mnt
# cpio -icvdumBI # ./installserver
輸入許可證提供的序列號(hào),如:INF#Xxxxxxx
輸入許可證提供的KEY:如AAABBB
注意必須是大寫字母
# unmount /mnt
至此安裝完畢。
3.準(zhǔn)備Informix初始化環(huán)境。
1) 編輯/etc/hosts文件,登記網(wǎng)絡(luò)各機(jī)器的名字及網(wǎng)絡(luò)地址
例如:
IP地址 主機(jī)名
142.73.111.1(本機(jī)) informix_server1
142.73.111.49 informix_client1
2) 修改 /etc/services,增加informix服務(wù)端口名
例如:
online_service 8000/tcp #informix
其中,online_service是informix服務(wù)名,8000為端口號(hào),tcp 為傳輸協(xié)議,該端口號(hào)必須唯一,如果和其它端口號(hào)有沖突, 可以修改。
3) 編輯$INFORMIXDIR/etc/sqlhosts文件
post onipcshm informix_server1 sqlexec
tcp ontlitcp informix_server1 online_service
第一行post為INFORMIX-ONLINE的server名,onlipcshm是共享 內(nèi)存方式連接(只限本地), informix_server1是本地主機(jī) 名(hostname),sqlexec 是服務(wù)名。
第二行tcp是增加的一個(gè)數(shù)據(jù)庫(kù)服務(wù)器別名, ontlitcp是使用 傳輸層TCP/IP(本地或遠(yuǎn)程)訪問數(shù)據(jù)庫(kù),online_service是 第2)步/etc/services中的online_service。
4.準(zhǔn)備數(shù)據(jù)庫(kù)空間
online允許使用兩種不同的磁盤空間類型:原始的(生設(shè)備) 磁盤空間和處理過的(熟設(shè)備)文件系統(tǒng),使用處理過的文件 做dbspace,其性能不如原始空間。 使用處理過的文件不能利 用DMA功能(既直接內(nèi)存訪問), 將數(shù)據(jù)從共享內(nèi)存直接傳遞 到磁盤,所以,為了充分發(fā)揮ONLINE的能力,建議使用原始空間。
1)使用原始磁盤空間做dbspaces
原始磁盤空間的分配必須在安裝SCO OpenServer 5操作系統(tǒng) 時(shí)完成。具體做法是:安裝操作系統(tǒng)劃分磁盤空間時(shí),首先 計(jì)算出UNIX系統(tǒng)所需要的磁盤空間,然后剩余的空間全部用 作INFORMIX數(shù)據(jù)庫(kù)原始空間,將這部分作一個(gè)或多個(gè)磁盤分 區(qū),如果磁盤空間有多個(gè)磁盤,建議做多個(gè),可以單獨(dú)分配 空間給物理日志空間、 邏輯日志空間及tmp空間以提高系統(tǒng) 的性能。
具體做法如: 分區(qū)名為dbs(在安裝系統(tǒng)時(shí)分的磁盤分區(qū)),將該分區(qū)設(shè)置 為裸設(shè)備(NON FS),在/dev可以找到dbs的設(shè)備名/dev/dbs, 將dbs的屬主和屬組改為“infomix”,權(quán)限改為"660", 該分 區(qū)即為online要求的原始空間, 有關(guān)Online原始磁盤空間的 信息可用命令# divvy /dev/dbs查看,同理, 用此方法可以 建立dbs1、dbs2等原始磁盤空間。
2)使用處理過的文件做dbspaces
由于在安裝系統(tǒng)時(shí)沒有分多個(gè)磁盤分區(qū),可以用現(xiàn)有的磁盤空 間的文件系統(tǒng).
下面在/dev/root文件系統(tǒng)下創(chuàng)建3個(gè)dbspaces,分別為workdbs (業(yè)務(wù)數(shù)據(jù)庫(kù))、logdbs(邏輯日志、物理日志)、tmpdbs(tmp數(shù) 據(jù)庫(kù))
# cd
# >workdbs logdbs tmpdbs #建立文件
# chown informix:informix workdbs #改變屬主和屬組
# chown informix:informix logdbs
# chown informix:informix tmpdbs
# chmod 660 workdbs #將權(quán)限改為660
# chmod 660 logdbs
# chmod 660 tmpdbs
5.修改SCOUNIX5.05 內(nèi)核參數(shù)
對(duì)于SCO OpenServer 5平臺(tái),INFORMIX-ONLINE7.30需要調(diào)整下列 核心參數(shù)值:(參照/usr/informix/release/en_us/0333下的IDS_7.3文件)
SHMMAX:409600000
SHMALL:512
SHMMNI:8192
SHMSEG:6
SEMMNI:8192
SEMMNS:8192
SEMMAP:8292
SEMMNU:100
SEMMSL:25
具體做法:從root注冊(cè)登錄,運(yùn)行scoadmin在菜單中逐層選擇 Hardware/Kernel Manager,然后選擇Tune Parameters,根據(jù) 以上值設(shè)置核心參數(shù),也可以直接修改/etc/conf/cf.d/mtune 這個(gè)文件,注意修改前做一個(gè)拷貝,設(shè)置完重連核心,退出并重 新啟動(dòng)UNIX。 二.初始化informix
方法一:配置ONCONFIG文件(onconfig)
$ cd /usr/informix/etc(配置文件所在目錄)
$ cp onconfig.std onconfig(從標(biāo)準(zhǔn)配置文件中拷貝一份, 作為配置自己系統(tǒng)的基礎(chǔ))。
用vi 編輯器修改onconfig文件中的值,由于文件中的參數(shù)多, 所以主要把重要的參數(shù)進(jìn)行說明:
ROOTNAME=rootdbs #這里取缺省rootdbs
ROOTPATH=/dev/dbs # rootdbs的第一個(gè)chunk所在原始設(shè)備全路徑名,dbs為我們?cè)?br> 前面配置的原始dbspaces。
ROOTSIZE=1000000 (K) # root dbspace 第一個(gè)Chunk的大小,這些空間初始創(chuàng)建邏輯日志、物理日志、 和sysmaster數(shù)據(jù)庫(kù),當(dāng)初始完畢后, 就應(yīng)盡快將日志和臨時(shí) 表從rootdbs中移到其它原始的dbspaces或處理過的文件中。
DBSERVER NAME(server name)=post # Online 實(shí)例必須具有的唯一名, 這個(gè)名字也是環(huán)境變量 $INFORMIXSERVER的值,還應(yīng)當(dāng)作為$INFORMIXDIR/etc/sqlhosts 中的第一個(gè)字段。
DBSERVERALIASES(server aliases)=tcp #Online實(shí)例的別名,在網(wǎng)上是要唯一的,它是網(wǎng)絡(luò)訪問數(shù)據(jù)庫(kù) 必須的,在前面配置$INFORMIXDIR/etc/sqlhosts中要用到它。
RESIDENT(Forced Residency)=1 #該參數(shù)決定Online實(shí)例共享內(nèi)存的常駐區(qū)是否允許從操作系統(tǒng) 的共享內(nèi)存中交換出來,如果服務(wù)器的物理內(nèi)存足夠大(512MB 以上),建議設(shè)置為1(Y),否則為0(N)。
LOCKS(Max of Locks)=100000 #該參數(shù)對(duì)共享內(nèi)存的大小有影響,通常對(duì)于較忙的實(shí)例我們將它 設(shè)置為100000。
BUFFERS(Max of buffers)=100000 #這些緩沖區(qū)是共享內(nèi)存常駐區(qū)唯一的最大消耗者,對(duì)實(shí)例共享內(nèi) 存的影響最大。
MULTIPROCESSOR=1 #該參數(shù)打開或關(guān)閉多處理器封鎖機(jī)制,如果系統(tǒng)是三個(gè)CPU以上, 將它設(shè)為1(Y),如果是單CPU或雙CUP建議設(shè)為0(N)。
NETTYPE=ipcshm,1,80,CUP #共享內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器通訊方式
NETTYPE=tlitcp,1,80,NET #tcp數(shù)據(jù)庫(kù)服務(wù)器通訊方式
配置ONLINE的參數(shù)很多,以上是只是其中最重要的一部分。
方法二:圖形界面
以informix用戶登錄,運(yùn)行onmonitor命令,依次選擇Parameters, Initialize進(jìn)入磁盤初始化菜單,配置的參數(shù)和方法一相同,建議第 一次配置ONLINE的用戶用此方法。
配置完ONLINE的參數(shù),現(xiàn)在可以啟動(dòng)并初始化磁盤空間,以informix 用戶登錄,執(zhí)行 $ oninit -iy 注意:執(zhí)行此命令后,所有在Online磁 盤空間上的數(shù)據(jù)將被破壞, 也可用圖形界面onmonitor命令初始化, 總之,這兩種命令只能在第一次初始化ONLINE磁盤空間使用,提醒各 位讀者謹(jǐn)慎使用,以后在啟動(dòng)數(shù)據(jù)庫(kù)只需用 oninit 命令即可, 執(zhí)行 $ onstat - 命令可以簡(jiǎn)單查看online是否正常啟動(dòng),如果正常則顯示 如下類似的提示信息:
Informix Dynamic Server Version 7.30.UC2 -- On-Line -- Up 2 days 21:14:58 -- 163840 Kbytes。
三.Informix-online7.30的日常管理及維護(hù)
1. 自動(dòng)啟動(dòng)關(guān)閉Informix-online數(shù)據(jù)庫(kù)
啟動(dòng)ONLINE的命令是:oninit
但為了便于系統(tǒng)管理員的管理,將啟動(dòng)命令建立在 /etc/rc2.d目錄下,名字為S90informix,
就象DOS中的批處理文件一樣,當(dāng)啟動(dòng)SCO OpenServer 5 操作系統(tǒng)時(shí),online隨之啟動(dòng)。
在/etc/rc2.d/創(chuàng)建文件S90informix,內(nèi)容如下:
INFORMIXDIR=/usr/informix
INFORMIXSERVER=post
export INFORMIXDIR INFORMIXSERVER
$INFORMIXDIR/bin/oninit
修改文件屬性使它用執(zhí)行權(quán)利: # chmod +x /etc/rc2.d/S90informix
自動(dòng)關(guān)閉INFORMIX-ONLINE
關(guān)閉ONLINE的命令為: onmode –ky
將關(guān)閉命令建立在/etc/rc0.d目錄下,編輯文件名為 K01informix,內(nèi)容如下:
INFORMIXDIR=/usr/informix
INFORMIXSERVER=post
export INFORMIXDIR INFORMIXSERVER
$INFORMIXDIR/bin/onmode -ky
修改文件屬性使它用執(zhí)行權(quán)利: #chmod +x /etc/rc2.d/K01informix
2. INFORMIX ONLINE 的常見工作模式
Off-line: 實(shí)例沒有運(yùn)行,沒有分配或初始化共享內(nèi)存。
Quiescent: 實(shí)例已經(jīng)完全啟動(dòng),但不允許用戶訪問數(shù)據(jù) 庫(kù),有些管理任務(wù),像增加刪除dbspaces、邏輯日志, 必須在實(shí)例處于Quiescent狀態(tài)時(shí)才能完成。
On-line: 實(shí)例完全啟動(dòng),并且對(duì)所有有權(quán)訪問它的用戶 都是可用的。
Shutdown: 當(dāng)實(shí)例從On-line狀態(tài)到Quiescent時(shí)的一種過 渡狀態(tài),所有用戶線索仍然可以繼續(xù)完成他們的工作直到 正常結(jié)束,但這時(shí)所有新的數(shù)據(jù)庫(kù)連接都會(huì)被拒絕。
下面介紹各個(gè)模式相互轉(zhuǎn)換的命令:
oninit(將一個(gè)配置好的實(shí)例從Off-line狀態(tài)一直變?yōu)?br> On-line狀態(tài))
oninit -s(將一個(gè)配置好的實(shí)例從Off-line狀態(tài)一直變 為Quiescent狀態(tài),現(xiàn)有的用戶線索可以繼續(xù)直到正常結(jié) 束,但所有新的數(shù)據(jù)庫(kù)請(qǐng)求連接將被拒絕)
onmode –sy(將實(shí)例從On-line狀態(tài)經(jīng)過shutdown)
onmode –uy(立即終止現(xiàn)有的實(shí)例,使之成為Quiescent, 所有的用戶線索和數(shù)據(jù)庫(kù)請(qǐng)求都將被中斷)
onmode –ky(實(shí)例從on-line或Quiescent變?yōu)閛ff-line狀態(tài))
介紹完ONLINE的幾種常用工作模式后,下面就可以為online增 加工作區(qū)、邏輯日志、物理日志、臨時(shí)文件數(shù)據(jù)庫(kù)空間了。 3.管理Informix Online磁盤空間
Online初始化時(shí),自動(dòng)建立了一個(gè)名為rootdbs的dbspace。 該rootdbs存儲(chǔ)Online的管理信息,包括物理日志、邏輯日 志等。當(dāng)你建立一個(gè)數(shù)據(jù)庫(kù)時(shí),如果不指定dbspace,作為 缺省,該庫(kù)建立在rootdbs中。所以,如果你想將庫(kù)建立在 某個(gè)dbspace中,則必須指定dbspace,例如: dbimport 數(shù)據(jù)庫(kù)名 -d dbspace名
注意:在建dbspace時(shí),要指定原始磁盤設(shè)備名路徑,所需 磁盤空間大小, 以及該塊磁盤空間在原始磁盤設(shè)備中的偏 移量,偏移量非常關(guān)鍵,要小心設(shè)置,否則容易造成chunk 塊之間空間上的重疊與覆蓋。
1) 用onspaces 命令建立dbspace
onspaces -c -d dbspaces名 -p 磁盤設(shè)備 -o 偏移量 -s 空間大小
其中: -c 表示建立新的dbspace
-d dbspace 名字
-p 原始磁盤設(shè)備全路徑名,如/dev/dbs
-o 偏移量,以K字節(jié)為單位
-s dbspace中第一個(gè)chunk的尺寸,以K字節(jié)為單位
例如: 假設(shè)原始磁盤設(shè)備/dev/dbs有1000M空間,其中rootdbs占100M, tmpdbs 占100M,workdbs占800M。
$ onspaces -c -d tmpdbs -p /dev/dbs -o 100000 -s 100000
$ onspaces -c -d workdbs -p /dev/dbs -o 200000 -s 8000000
2)用onspaces 命令建立物理日志、邏輯日志空間
物理日志保存數(shù)據(jù)被修改前的映象,物理日志的位置和大小可以改變, 使用 onparams 命令可以改變?nèi)罩镜奈恢煤痛笮。?nbsp;必須在ONLINDE的 Quiescent(靜態(tài)方式)后執(zhí)行。
$ onparams -p -s 大小 -d dbspace名
大小是以K為單位,建議物理日志大小為100M。
邏輯日志是保存數(shù)據(jù)在修改后的映象,ONLINE初始化時(shí),邏輯日志個(gè)數(shù) 最少為3個(gè),所以在初始化前可以給邏輯日志個(gè)數(shù)為3,大小可以少一點(diǎn) 例如1000K,等初始化完后,在添加新的邏輯日志,最后再將前面的3個(gè) 邏輯日志刪除,總邏輯日志最好在500M左右。具體做法如下:
以informix用戶登錄,
$ onmode -uy (由Online切換到Quiescent狀態(tài))
$ onparams -a -d logdbs -s 100000
其中l(wèi)ogdbs為dbspaces 名 ,-s 100000 表示增加了100M空間。
再連續(xù)執(zhí)行4遍上述命令,這樣新的邏輯日志空間總共為500M,可以用 onstat -l 查看邏輯日志情況,接下來就要?jiǎng)h除前面3個(gè)舊邏輯日志, 刪除前做一個(gè)0級(jí)備份
# ontape -s -L 0
$ onparams -d -l logid
logid 為邏輯日志id號(hào),可以用onstat -l 查看,然后就可根據(jù)id號(hào)刪 除3個(gè)舊邏輯日志。
四.Informix Online數(shù)據(jù)庫(kù)備份及恢復(fù)。
1. 使用ontape 工具備份
1.)ontape 有三個(gè)備份級(jí)別
0級(jí) 實(shí)例中所用的頁(yè)都被寫到磁帶上
1級(jí) 備份從0級(jí)備份以后發(fā)生變化的數(shù)據(jù)
2級(jí) 備份從1級(jí)備份以后發(fā)生變化的數(shù)據(jù)
$ ontape -s -L 0
執(zhí)行該命令做0級(jí)備份,建議: 如果允許可以每天在業(yè)務(wù)系統(tǒng)結(jié)束工作 后做一次0級(jí)備份,做完備份后管理好備份磁帶,做好標(biāo)記。
2.) 邏輯日志的備份
僅僅做0級(jí)備份還不夠,還要做邏輯日志備份才能完整的恢復(fù)數(shù)據(jù), 建議每天業(yè)務(wù)開始時(shí),執(zhí)行連續(xù)備份邏輯日志(ontape -c),業(yè)務(wù)結(jié) 束前停止ontape -c ,換磁帶,做一次0級(jí)備份(ontape -s -L 0),換 磁帶再執(zhí)行ontape -c
3)系統(tǒng)恢復(fù)
當(dāng)系統(tǒng)出現(xiàn)錯(cuò)誤,或你想把系統(tǒng)恢復(fù)到某一時(shí)間點(diǎn)的數(shù)據(jù)時(shí),必須利 用0(1,2)備份帶和邏輯日志備份來恢復(fù)系統(tǒng),命令如下:
# ontape -r
2. 使用dbexport 命令備份數(shù)據(jù)
盡管ontape是一個(gè)安全性很高的備份工具,但操作比較煩瑣,必須每天 要手動(dòng)備份及換磁帶,所以編寫一個(gè)自動(dòng)備份程序,這樣大大解放了系 統(tǒng)管理員的工作。
具體實(shí)現(xiàn)方法如下:
在/usr/backup目錄下用vi編寫backup.sh文件,將文件的權(quán)限改為"664", 內(nèi)容如下:
INFORMIXDIR=/usr/informix (設(shè)置online路徑)
PATH=$PATH:/usr/informix/bin
INFORMIXSERVER=post
export INFORMIXDIR INFORMIXSERVER PATH
wk=`date +20%y%m%d` #設(shè)置變量wk代表當(dāng)天日期例如 20010101
dir=/usr/backup/$wk #設(shè)置數(shù)據(jù)存放目錄
if test ! -d $dir #檢驗(yàn)?zāi)夸浭欠翊嬖?br> then
mkdir $dir
else
rm -r $dir/*
fi
#由于使用dbexport命令時(shí),所有正在使用數(shù)據(jù)庫(kù)操作的用戶必須退出, 所以用fuser -k 命令先將所有用戶的進(jìn)程殺掉,然后再重新啟動(dòng)Online.
fuser -k 用戶注冊(cè)目錄(例如/u/motor)
sleep 10
onmode –uy #關(guān)閉online
sleep 10
onmode –m #啟動(dòng)online
sleep 10
cd /usr/backup
dbexport 數(shù)據(jù)庫(kù)名1 -o $dir #將數(shù)據(jù)庫(kù)卸到當(dāng)天目錄中
dbexport 數(shù)據(jù)庫(kù)名2 -o $dir
…
rm sjbf*
tar cvf sjbf.tar $dir #將目錄打包
compress -H sjbf.tar #壓縮打包文件
#為了保證數(shù)據(jù)的安全性,將數(shù)據(jù)傳送到另一臺(tái)主機(jī)
da=`date +%m%d` #創(chuàng)建傳送文件名
da1=`date +%H`
da=$da.$da1.Z
ftp -nv 142.73.111.10< user backup backup #10主機(jī)上建立用戶backup口令是backup
put sjbf.tar.Z $da
quit
!
rm -r $dir/*
cd /usr/backup
mv sjbf.tar.Z $dir #將壓縮文件移到目錄中
編輯backup.cron文件,內(nèi)容如下
30 1 * * 1-6 /usr/backup/backup.sh
在root用戶下執(zhí)行 crontab backup.cron ,就可以讓系統(tǒng)自動(dòng), 由于白天業(yè)務(wù)比較忙,所以將備份時(shí)間定在每星期一到六凌晨1:30, 具體crontab命令的用法請(qǐng)參考SCO OpenServer用戶手冊(cè)。 | | |