Linux下informix安裝及數據庫遷移

今天碰到informix環境,使用onstat、oninit報錯,發現由於是新部署的環境,很多配置沒有更改,現仍未解決。

=====以下內容來源網上,但通過自己實踐,並重新整理過了==
1.創建informix用戶和組。
useradd informix
2. informix用戶登錄,並設置一些環境變量
在~.bashrc裏追加如下內容:
INFORMIXDIR=/home/informix
INFORMIXSERVER=pdc //主機名
INFORMIXTERM=terminfo
DBPATH=$INFORMIXDIR
TERMCAP=$INFORMIXDIR/etc/termcap
PATH=$INFORMIXDIR/bin:$HOME/bin:$PATH
ONCONFIG=onconfig.std
DB_LOCALE=zh_cn.gb
CLIENT_LOCALE=zh_cn.gb
DB_LANG=zh_cn.gb
DBDATE=MDY4/
export INFORMIXDIR PATH ONCONFIG DB_LANG DB_LOCALE CLIENT_LOCALE DBDATE INFORMIXSERVER
SQLEXEC=$INFORMIXDIRblexec
3.source .bashrc使上面生效。
4.tar xvf iif.11.50.UC3DE.Linux-RHEL4.tar
5.切換到root用戶下執行ids_install這個腳本,按照提示進行安裝。
6.安裝完成後進入etc目錄,cp onconfig.std onconfig ====並且需要進入onconfgi.std配置 DBSERVERNAME pdc
7.修改sqlhost文件加入:pdc onsoctcp 192.168.0.145 sqlexec
8.修改/etcrvices文件加入內容如下:sqlexec 1526/tcp #informix DBMS
9.初始化數據庫:oninit –ivy,提示“INFORMIXSERVER does not match DBSERVERNAME or any of the DBSERVERALIASES.FAILED”錯誤,這時參看你的主機名和環境變量裏設置的是否一樣。
分別查看:三個地方的文件,.bashrc; sqlhost; onconfig.std
報錯信息“oninit: Fatal error in shared memory initialization
WARNING: server initialization failed, or possibly timed out (if -w was used).
Check the message log, online.log, for errors.”這時查看tmp/online.log日誌。
解決辦法:touch tmp/
cd tmp/
touch demo_on.rootdbs;
chmod 660 demo_on.rootdbs
再執行:oninit –ivy
===注意啦,平時啓動時=======oninit,不能帶i,不然會把數據庫刪除掉。
10.結束oninit進程:onmode –ky,啓動:oninit。
ps –e可以看到oninit進程。netstat -na|grep 1526
11.執行命令:onmonitor
Termcap entry too long
Too many tc= indirections
第2 / 5頁
Program stopped at "tb4_main.4gl", line number 82.
FORMS statement error number -1170.
The type of your terminal is unknown to the system.
以上錯誤解決方法:export TERMINFO=/home/informix/etcpetab
export TERMCAP=$INFORMIXDIR/etc/termcap
但是執行onmonitor後不能用鍵盤右鍵操作,這時修改.bashrc文件加入: export TERMINFO=/home/informix/etcpetab
12.創建數據庫:
Mkdir data
cd data
touch db1
chmod 660 db1
dbaccess
=====================================
1. create database dbname with log創建數據庫狀態是U
2. create database dbname with buffered log創建數據庫狀態是B
===========數據庫遷移常用命令===================
dbschema 常用命令
1)導出數據庫中所有的表結構到文件db.sql
$>dbschema -d your_database -t all db.sql
第3 / 5頁
2)導出數據庫中所有的存儲過程到文件db.sql
$>dbschema -d your_database -f all db.sql
3)導出數據庫中的所有對象(包含表,存儲過程,觸發器。。。)到文件db.sql $>dbschema -d your_database db.sql
4)導出數據庫中一個表的結構到文件db.sql
$>dbschema -d your_database_name -t your_table_name db.sql
5)導出一個存儲過程定義到文件db.sql
$>dbschema -d your_database_name -f your_procedure_name db.sql
6)如果導出更多的表的信息(EXTENT...)
$>dbschema -d your_database_name -ss db.sql
7)導出數據庫中對用戶或角色的授權信息
$>dbschema -d your_database_name -p all
$>dbschema -d your_database_name -r all
8)導出數據庫中的同義詞
$>dbschema -d your_database_name -s all
========
導進去用:
dbaccess dbname db.sql
======
1. dbexport
將數據庫以ASCII方式下載。該命令常用於遷移數據庫。
如:命令dbexport -o /informix_export stores7,將數據庫 stores7 下載到/informix_export/stores7.exp 目錄下。
數據庫模式文件存放在/informix_export/stores7.exp/stores7.sql 下。
2. dbimport
與dbexport 配合使用,根據dbexport 的輸出創建數據庫。
第4 / 5頁
根據上例中輸出結果創建數據庫。
dbimport -i /home/informix_export dbname -c -l buffered -----------------
update statistics ;
===============
如庫 dbname 被鎖,網上查了久久沒找到解決辦法, 偶使用 "ondblog cancel dbname "解決。 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章