GB | BIG5
|
| 首頁 > 數據庫 > Informix > 正文 |
 |
| Informix Online 數據庫維護技巧 |
| 本文出自: http://go3.163.com/~axiom999/ (2001-06-18 16:10:00) |
一、 數據庫查詢用戶的建立
銀行Informix_on_line數據庫由存儲了儲戶的大量重要信息,為了數據庫的安全性必需要對數據的操作有嚴格的規定,如進入on_line數據庫要履行嚴格的手續,這在某些時候又給查找問題帶來不便,因此有必要專門建立一個動態查詢用戶,該用戶僅有對數據庫的可讀權限。
具體做法是:
1.建立查詢用戶,該查詢用戶應具有數據庫使用的環境
2.將查詢用戶與數據庫作連接(work用戶為例)
ln-s/homel/work/homel/read(將查詢用戶read與數據庫用戶作連接);
3.由work用戶使用數據庫,將connect權限賦予read用戶
grant connect to read;
4.對數據庫中每一張表放select權給read用戶
grant select on abc to read.(將select權限賦給read用戶)
這樣,以read用戶注冊,對數據庫擁有了可讀操作,給查找問題等帶來方便。
二、 數據庫一致性檢查
a.以informix登錄
b.將數據庫狀態置為off_line
onmode-ky
用onstat-檢查數據庫狀態為off_line
c.將數據庫狀態置為單用戶模式
onmode -s
用onstat-檢查數據庫狀態為quiesent
d.檢查數據庫保留頁狀態
oncheck-cr 1>/tmp/oncheck.cr 2>&1
e.檢查數據庫目錄頁一致性
oncheck-cc 1 >/tmp/oncheck.cc 2>&1
f.檢查數據庫數據的一致性
oncheck-cD workdb 1>/tmp/oncheck.cd 2>&1
g.檢查數據庫索引的一致性
oncheck-cI workdb 1>/tmp/oncheck.ci 2>&1
h.檢查/tmp下oncheck.cr,oncheck.cc,oncheck.cd,oncheck.ci文件,查看有無錯誤信息,如沒有,則數據庫狀態正常,反之亦然。
i.將數據庫狀態置為online
onmode-m
用onstat-檢查數據庫狀態為online
三、 數據庫的備份與恢復
1.dbexport備份與dbexport恢復
dbexport備份是一文體文件備份,該備份將數據庫中信息以文本文件方式保存,要注意的是,在備份時必須保証沒有對數據庫有訪問者,否則做dbexport不會成功,dbexport備份的一般格式為(以數據庫workdb為例)
dbexport workdb-d -s workdbs /path
2.dbimport恢復是將用dbexport備份的文件恢復到數據庫中
a.停止一切數據庫操作→刪除數據庫;
b.dbimport workdb-d workdbs -i/path;
c.用工具onmonitor將參數TAPEDEV改為/dev/null;
d.ontap -s -u workdb.
e.檢查workdb是否改為U狀態.
f.將TAPEDEV值改回原先的值.
需要指出的是在dbimport恢復過程中,有大量的信息要寫在邏輯日志文件中,採用上述方式,可避免寫邏輯日志文件,加快dbimport的速度。
3.數據庫的零級備份
數據庫零級備份是重要的備份手段,日常一般用磁帶備份,經常用做重大操作之前的備份,數據往往需要恢復,而磁帶上的零級備份數據由數據量大,恢復起來花費時間較長,因此,可採用在硬盤上做零級備份的辦法。
a.在硬盤上劃一個足夠大的空間,用備份文件的存放。
b.用onmonitor將參數TAPEDEV改定指向零級備份文件。
如把/cs2000在作為零級備份文件oback的存放空間,可將參數改為TAPEDEV=/cs2000/oback,這樣可做硬盤零級備份,備份恢復時間只是磁帶機的1/6。在恢復過程中應該用tail -f online.log監控。恢復過程,一直到數據庫狀態變為online..
c.將參數TAPEDEV=/cs2000/oback改為TAREDEV=/dev/rmt/0m;
四、 數據庫常見故障處理
檢查:用onstat_-1檢查邏輯日志的使用情況,是否中止進程,根據finder col.數據庫故障的一般檢查,首先要檢查數據庫狀態,經常用onstat_de查找可能出現的錯誤,同時檢查online.log是否報錯。
2.數據庫表的跟蹤:遇到在對數據庫表作大規模操作時,有時我們不知道對該表的操作是否得以在繼續進行,因為isql進入,操作該表,數據庫報“該表已被鎖”信息,這時可用查詢語句:
首先:set retrieved to drity read
然:select count(*)from abc,
通過不斷對abc表進入統計,如統計數在不斷增加,則對該表的操作仍在進行,否則,以停止了對該表的操作。還有,當批量執行SQL命令,如update,……insert等時如不能成功執行,可採用增加判斷條件,縮小范圍的方法去執行,往往可以獲得成功,遇有些語句涉及的記錄在處理過程中被鎖定,直到處理過程結束可能超過系統關同時鎖定界限,遇這種錯誤,可以在開始處理時鎖定該表。
3.故障排除舉例:
故障現象:在銀行批量結息向結息數據表插入記錄時出現informix sqlcode錯誤號為-239。
故障檢查:經查,從現象看,似乎有重復記錄插入表中,但經核查數據,可以肯定數據絕無重復記錄,考慮到表文件長期使用,表文件的相關信息受到某種破壞,為此,做以下操作:
a.unload to “/tmp/abc.txt”select*from abc.卸出abc中全部數據;
b.drop table abc.(刪除表文件abc);
c.create tabk abc
(abc_swo mteger;
abc_ano smallint)
…
);建立數據庫表文件abc.
d.load form“tmp/abc.txt”insert into abc.
(將原數據裝入表文件abc中)。
e.重新執行結息操作,新產生的結息數據順利裝入表文件abc中,故障得以排除。
作為計算機技術人員,熟悉數據庫的操作,掌握一些操作技巧和方法對我們解決工作中遇到的問題,查找錯誤,是十分有幫助的。
(http://www.fanqiang.com)
進入【UNIX論壇】
|
|
| 相關文章 |
|
|
|
|
 |
★ 樊強制作 歡迎分享 ★ |