整理一下之前工作中記錄過的一些東西——informix的一些命令

也不知道當時是在什麼地方找到的了,這麼長一串應該是從哪裏摘錄下來的。先放到這裏,方便以後需要的時候查看了。

 

oninit        將系統從off-line模式變爲on-line模式

oninit -iy   初始化數據庫刪除所有dbspacechunk

oninit -s    脫機-->靜態

 

onmode -ky   offline

onmode -s    graceful shutdown-->quiescent聯機到靜態讓用戶處理完成

onmode -u    immediate shutdown-->quiescent聯機到靜態所有用戶立即終止

onmode -m    quiescent--->online

onmode -z sid  刪除某session

 

onmode -l   將當前正在使用的邏輯日誌下移

onmode -c   強制執行檢查點操作 即onmonitor->force ckpt

 

onstat -     查看服務器狀態

onstat -d    查看dbspace和chunk情況

onstat -l    查看邏輯日誌

onstat -F    查看寫入磁盤的頁刷新和類型情況,從共享內存緩衝區向磁盤寫入頁面有三種方式(fg:前臺寫 LRU:隊列寫 chunk:塊寫)

onstat -R    打印LRU隊列

onstat -p    顯示系統的基本I/O與性能配置文件

onstat -c    查看onconfig文件

onstat -m    查看消息日誌

onstat -f    查看受DATASKIP影響的dbspace

onstat -x    查看事務

onstat -k    顯示所有活動的鎖

 

onstat -g sub_option 運行多線索選項

onstat -g ses/sql

onstat -r <value> 每隔<value>秒後重複選項

onstat -g act 顯示系統中所有的活動線索

onstat -g ath -r 2 每隔兩秒顯示系統中所有的活動的線索

 

onstat -i     交互方式

>sql

>sql sid

 

 

ipcs         查看共享內存情況

ipcrm        刪除某個共享內存

ipcrm -m id

ipcrm -s id

 

 

Ontape命令:

1)零級(一級或二級)備份

$>ontape -s

$>ontape -s -L 0

$>ontape -s -L 1

$>ontape -s -L 2

 

自動備份邏輯日誌文件

$>ontape -a

 

3)連續邏輯日誌備份(日誌文件寫滿一個,online系統自動備份一個,你可以插盤磁帶到磁帶機上,讓IDS自動備份。要佔用磁帶機)

$>ontape -c

 

4)備份恢復(對應零級備份或一級備份或二級備份)

$>ontape -r (詳細過程見ontape恢復文擋)

 

5)備份恢復幾個DBSPACE(一定要存在邏輯日誌備份,否則物理恢復完後,還是不能用)

$>ontape -r -D dbs1 dbs2 。。。

 

6)配置HDR時使用的物理恢復

$>ontape -p

 

7)修改數據庫日誌模式

$>ontape -s -B db_name   修改爲buffer_log   即緩衝日誌模式

$>ontape -s -U db_name   修改爲unbuffer_log 即非緩衝日誌模式

$>ontape -s -N db_name   修改爲無日誌模式   數據庫不含日誌,即不支持事務,對數據庫的任何修改都不會記錄到邏輯日誌中去

$>ontape -s -A db_name   修改爲ansi logging模式,從這個模式無法改到其它模式,因此一般不要用該項。

 

 

oncheck 命令

 

oncheck -pe       extend

oncheck -ce

oncheck -cr       reserved pages

oncheck -cd       TBLspace data rows including bitmap

oncheck -ci       table indexes databases

 

對邏輯日誌的操作

informix用戶登錄

 

         $ onmode -uy (Online切換到Quiescent狀態,所有用戶立即中止)

           onmode -m  (切換到Online)

 

         $ onparams -a -d logdbs -s 100000

 

         其中logdbsdbspaces -s 100000 表示增加了100M空間。

 

       再連續執行4遍上述命令,這樣新的邏輯日誌空間總共爲500M,可以用

         onstat -l 查看邏輯日誌情況,接下來就要刪除前面3箇舊邏輯日誌,

         刪除前做一個0級備份

 

         # ontape -s -L 0

           執行該命令做0級備份,建議: 如果允許可以每天在業務系統結束工作

           後做一次0級備份,做完備份後管理好備份磁帶,做好標記。

 

         $ onparams -d -l logid

 

         logid 爲邏輯日誌id號,可以用onstat -l 查看,然後就可根據id號刪

         除3箇舊邏輯日誌。

 

        將當前正在使用的邏輯日誌下移

        $onmode -l

 

 

三、DBSPACE及數據庫導入導出

 

1.增加一個新的dbspace:(datadbs,15M, 偏移爲0)

onspaces -c -d datadbs -p /home/informix/datadbs -o 0 -s 15000

 

2.datadbs這一個dbspace中增加一個chunkdatadbs_chunk1)

onspaces -a datadbs -p /home/informix/datadbs_chunk1 -o 0 -s 15000

 

3.將上述chunk刪除

onspaces -d datadbs -p /home/informix/datadbs_chunk1 -o 0

 

4.刪除dbspace僅當要刪除的dbspace空間沒有數據時纔可刪除

onspace -d datadbs

 

導出數據庫

          dbexport工具將數據卸成文本並裝載到其它服務器上。

(1)        卸載文本的步驟如下:

        用informix用戶註冊

        dbexport cleardb -o WORKDIR -ss

        當系統提示dbexport completed!數據卸載完畢。

其中:

   -ss 確保數據庫的建庫信息或建表信息被保留如日誌模式、初始extent尺寸、lock mode、表所在dbspace等。

   -o  指定存放卸載數據的目錄數據存放在目錄cleardb.exp目錄下,其中包含cleardb.sql和形如*.unl的文件,

       提示信息存放在dbexport.out文件中。

(2)        裝載文本的步驟如下:

        用informix用戶註冊確保數據庫處於On_Line狀態,服務器上沒有同名數據庫。

        dbimport cleardb -i WORKDIR

        當系統dbimport completed!提示數據裝載完畢。

其中:

   -i      指定從何處裝載。

 

如何在不破壞庫本身信息情況下(如行級鎖等)將數據庫卸載到磁帶設備,並裝載在其它服務器上?

1)        卸載的步驟如下:

        用DBA用戶註冊

        將存放數據的磁帶插入磁帶機,確認磁帶及磁帶機完好可用。

        dbexport cleardb -t /dev/rmt/0m -b 512k -s 2048000k -ss

當系統提示dbexport completed數據卸載完畢。

其中

     -ss   確保數據庫的建庫信息或建表信息被保留如日誌模式初始extent尺寸lockmode表所在dbspace

     -t    磁帶設備/dev/rmt/0m

     -s    磁帶容量2G

     -b    塊大小512KB

     提示信息存放在dbexport.out文件中

2)        裝載的步驟如下:

        用DBA用戶註冊

        將存放卸載數據的磁帶放在磁帶機上,確認磁帶機正常,確認數據庫系統處於On_Line狀態,服務器上沒有同名數據庫。

        $ dbimport cleardb -t /dev/rmt/0m -b 512k -s 2048000k

        當系統dbimport completed 提示數據裝載完畢提示信息存放在dbimport.out 文件中。

 

 

重建表格

 

1 dbschema -d dbname -t tabname -ss tabname.sql /*將表格結構放進tabname.sql*/

編輯此文件並在create table語句末尾增加新的區域長度

暫時將生成表格索引的tabname.sql部分標爲說明語句,即在索引句前後加上“{}”,例如:

{ create index xl on customer(last_name); create index x2 on customer(cust_nbr);}

最好在後面生成索引,因爲這樣表格能快速裝入,索引能在連續磁盤空間生成,使其更加有效。

 

2)鎖定表格

lock table tabname in exclusive mode;

 

3)用SQL UNLOAD 將表格卸載到磁盤或磁帶中

unload to file_or_tape_path select * from tabname

unload to "/usr/data/unload/customer.unl" select * from customer;

 

檢查表中的行數(用SQL中的Table/Info命令),驗證卸載是否成功。比較這個數與裝入完成後SQL顯示的消息。

用此驗證file_or_tape_path中的行數:

wc -l file_or_tape_path

 

4)刪除表格

 

5)用dbacess生產表格並運行tabname.sql。這時不要生成索引

 

6)用SQL的LOAD FROM 或用 dbload重新裝入表格

load from file_or_tape_path insert into tabname;

load form "/usr/data/unload/customer.unl" insert into customer;

對於日誌數據庫上面的裝入語句可能產生長事務或to many lock錯誤。這時建議用dbload之類的實用程序

將數據插入表中。dbload -n 選項強制在插入一定行後進行commit work建議選1000

檢查表中的行數(用SQL中的Table/Info命令),驗證裝入是否成功。

 

7)如要生產索引,運行第一步中標爲說明語句的tabname.sql部分。

 

8)更新表格統計信息

update statistics on tabname;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章