1. 程式人生 > >Linux下informix安裝及資料庫遷移

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 "解決。