Informix_on_line資料庫維護技巧

tonykorn97發表於2006-05-12
Informix_on_line資料庫維護技巧

一、 資料庫查詢使用者的建立

  銀行Informix_on_line資料庫由於儲存了儲戶的大量重要資訊,為了資料庫的安全性必需要對資料的操作有嚴格的規定,如進入on_line資料庫要履行嚴格的手續,這在某些時候又給查詢問題帶來不便,因此有必要專門建立一個動態查詢使用者,該使用者僅有對資料庫的可讀許可權。  具體做法是:  1.建立查詢使用者,該查詢使用者應具有資料庫使用的環境  2.將查詢使用者與資料庫作連線(work使用者為例)  lns/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    onmodeky   用onstat-檢查資料庫狀態為off_line  c.將資料庫狀態置為單使用者模式  onmode s  用onstat-檢查資料庫狀態為quiesent  d.檢查資料庫保留頁狀態  oncheckcr 1>/tmp/oncheck.cr 2>1  e.檢查資料庫目錄頁一致性  oncheckcc 1 >/tmp/oncheck.cc 2>1  f.檢查資料庫資料的一致性  oncheckcD workdb 1>/tmp/oncheck.cd 2>1  g.檢查資料庫索引的一致性  oncheckcI workdb 1>/tmp/oncheck.ci 2>1  h.檢查/tmponcheck.cr,oncheck.cc,oncheck.cd,oncheck.ci檔案,檢視有無錯誤資訊,如沒有,則資料庫狀態正常,反之亦然。  i.將資料庫狀態置為online  onmodem  用onstat-檢查資料庫狀態為online

三、 資料庫的備份與恢復

  1.dbexport備份與dbimport恢復  dbexport備份是一文體檔案備份,該備份將資料庫中資訊以文字檔案方式儲存,要注意的是,在備份時必須保證沒有對資料庫有訪問者,否則做dbexport不會成功,dbexport備份的一般格式為(以資料庫workdb為例)  dbexport workdbd s workdbs /path  2.dbimport恢復是將用dbexport備份的檔案恢復到資料庫中  a.停止一切資料庫操作刪除資料庫;  b.dbimport workdbd 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”selectfrom 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中,故障得以排除。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-245272/,如需轉載,請註明出處,否則將追究法律責任。

相關文章