[ 永遠的UNIX::UNIX技術資料的寶庫 ]   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論壇

相關文章
 

★  樊強制作 歡迎分享  ★