一、常用指令
oninit 将系統從off-line模式變為on-line模式
oninit -iy (初始化資料庫,删除所有dbspace和chunk)
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
其中logdbs為dbspaces 名 ,-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中增加一個chunk:(datadbs_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;