日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Informix 系統(tǒng)維護(hù)技術(shù)...

 昵稱90415 2009-02-24
Informix 系統(tǒng)維護(hù)技術(shù)
 
作者:藍(lán)色鍵盤  出處:Unix愛好者家園unix-cd.com  更新時(shí)間: 2004年07月20日 

Informix是一種大型的數(shù)據(jù)庫(kù)管理系統(tǒng),具有先進(jìn)的技術(shù)、性能與可靠性,在全球范圍的各種應(yīng)用中使用十分廣泛,包括政府、金融保險(xiǎn)、郵政電信、制造及零售等重要行業(yè)或領(lǐng)域。本文根據(jù)筆者在SCO Unix/Xenix上使用 Informix-4GL與Informix-SQL的經(jīng)驗(yàn),簡(jiǎn)要介紹Informix系統(tǒng)維護(hù)中的幾個(gè)較為特殊的問題及其處理方法。 


  表文件的修復(fù) 


  Informix的數(shù)據(jù)庫(kù)是指由若干張表所構(gòu)成的集合,其中每一張表對(duì)應(yīng)著兩個(gè)文件,即數(shù)據(jù)文件(后綴為.dat)與索引文件(后綴為.idx)。當(dāng)系統(tǒng)出現(xiàn)異常、死機(jī)、掉電或非正常關(guān)閉時(shí),有時(shí)會(huì)使一些使用中的表文件未能正常關(guān)閉而出現(xiàn)毀損,當(dāng)系統(tǒng)再次對(duì)這些表進(jìn)行相關(guān)操作時(shí),就會(huì)報(bào)告“不能檢索下一條記錄”、“不能刪除記錄”等錯(cuò)誤信息。 


  通常,數(shù)據(jù)文件是很少發(fā)生問題的。要判別數(shù)據(jù)文件是否正常,只需執(zhí)行select * from 〈table—name〉語句或類似的語句即可, 但不能使用where、order by等子句,以免利用到索引文件, 目的就是純粹從數(shù)據(jù)文件中依次讀取數(shù)據(jù)。如果數(shù)據(jù)讀取順利且記錄個(gè)數(shù)正確,表明該文件完好無損;反之,則有問題,通常只能用其數(shù)據(jù)備份來恢復(fù)。 


  如果數(shù)據(jù)文件正確無誤,那么就該檢查相應(yīng)的索引文件。Informix提供有一個(gè)實(shí)用程序bcheck,專門用來檢查與修復(fù)索引文件,即依次比較數(shù)據(jù)文件與索引文件,倘若不一致,就詢問是否刪除和重建有問題的索引。bcheck有許多選項(xiàng)可供選用,其中-n和-y用于對(duì)所有的提問都回答“no”或“yes”,讓系統(tǒng)自動(dòng)進(jìn)行一系列的操作。其語法如下: 


  bcheck [選項(xiàng)] 〈表文件名〉 


  要檢查表的索引文件,應(yīng)先運(yùn)行bcheck -n命令。如果一切正常, 說明索引沒有問題。一旦發(fā)現(xiàn)有錯(cuò)誤報(bào)告(如有多少個(gè)錯(cuò)誤數(shù)據(jù)記錄指針、丟失了多少個(gè)數(shù)據(jù)記錄指針或索引結(jié)點(diǎn)指針等),則再執(zhí)行bcheck -y 命令即可將其修復(fù)。 


  Informix-SQL中的語句check table 〈表名〉與repair table 〈表名〉在運(yùn)行時(shí)分別以選項(xiàng)-n與-y調(diào)用bcheck命令,功能一樣,不同的只是使用表名而不是表文件名。 


  如果索引文件沒有相應(yīng)的讀寫權(quán)限, 或者沒有正確指明其路徑, 在bcheck時(shí)會(huì)出現(xiàn)“無法打開索引文件”的信息。如果索引文件被刪除或格式被破壞了,也有同樣的信息。此時(shí)可從數(shù)據(jù)備份中將對(duì)應(yīng)的索引文件拷貝回來,也可暫時(shí)創(chuàng)建一個(gè)字段與索引均與原表完全一致的新表并將其索引文件拷貝給原表,再運(yùn)行bcheck -y命令修復(fù)。 


  表空間的回收 


  Informix對(duì)數(shù)據(jù)表的管理方式較為特殊,當(dāng)數(shù)據(jù)量增加時(shí),表所占用的磁盤空間隨之增加;但數(shù)據(jù)記錄被刪除時(shí),原先所占用的空間暫不釋放,依然由該表所控制,作為日后增加記錄時(shí)使用。為提高系統(tǒng)的性能及有關(guān)各表的查詢速度,應(yīng)及時(shí)回收這種“空閑”的磁盤空間。 


  使用bcheck -s命令可回收索引文件的空間,其中-s 選項(xiàng)的作用是重新估算索引文件的大小。要同時(shí)回收數(shù)據(jù)文件與索引文件的空間,可讓DBMS(數(shù)據(jù)庫(kù)管理系統(tǒng))去做表結(jié)構(gòu)的修改工作,但修改前后的表結(jié)構(gòu)及有關(guān)權(quán)限要保證一樣??衫肐nformix-SQL達(dá)此目的,最為保險(xiǎn)的做法是先給相應(yīng)的表增加一個(gè)字段,再將該字段刪除。也可利用alter table 命令“欺騙”DBMS去修改表的結(jié)構(gòu),如alter table aa modify(bb smallint),其中aa表的字段bb的類型本來就是smallint。 


  表的遷移 


  任何一個(gè)Informix數(shù)據(jù)庫(kù)都有九個(gè)系統(tǒng)表,用于記錄數(shù)據(jù)庫(kù)的有關(guān)信息,其中系統(tǒng)表systables(用于描述數(shù)據(jù)庫(kù)中的各表)中的字段dirpath指明各表文件的絕對(duì)路徑或相對(duì)路徑。 


  Informix數(shù)據(jù)庫(kù)的搜索路徑一般由環(huán)境變量DBPATH來設(shè)定,系統(tǒng)根據(jù)DBPATH的正確設(shè)定即可找到相應(yīng)的數(shù)據(jù)庫(kù)及其各表。遷移Informix數(shù)據(jù)庫(kù)表時(shí)(比如從Unix/Xenix的根文件系統(tǒng)遷移到分離的文件系統(tǒng)/u),只要重新設(shè)定DBPATH,通常系統(tǒng)即可正常運(yùn)行。如果報(bào)告某些表找不到了(實(shí)際上這些表文件還在,且有關(guān)權(quán)限也對(duì)),問題就在于systables 表中的dirpath字段值采用了絕對(duì)路徑, 此時(shí)要用update命令修正其值,最好改用相對(duì)路徑,即直接改為表文件名。 


  系統(tǒng)查詢的優(yōu)化 


  Informix在執(zhí)行查詢(特別是多表查詢)指令前,會(huì)利用其所提供的優(yōu)化器(cost-based optimizer,基于成本的優(yōu)化器),依據(jù)當(dāng)時(shí)系統(tǒng)所記載的有關(guān)各表的相關(guān)信息,按照一定的判斷法則進(jìn)行分析并選擇出一條最有效率的途徑來執(zhí)行。系統(tǒng)必須掌握各表的正確數(shù)據(jù),才不至于做出錯(cuò)誤的選擇。但出于系統(tǒng)效率上的考慮,不可能隨時(shí)修改記錄各表最新狀況的相關(guān)文件,否則會(huì)增加許多額外的輸入/輸出負(fù)擔(dān)。因此, 應(yīng)定期執(zhí)行這種信息的更新操作。 


  在Informix數(shù)據(jù)庫(kù)的系統(tǒng)表systables中有一字段nrows,專門用來記錄各表的記錄個(gè)數(shù)。優(yōu)化器在運(yùn)行法則判斷時(shí),各表的nrows 值具有很高的參考價(jià)值。nrows的更新可通過如下命令來完成,即: 


  update statistics [for table 〈table—name〉] 


  其中,方括號(hào)[]中的子句是可選的,用于指定表名,以對(duì)該表進(jìn)行更新;否則,將對(duì)數(shù)據(jù)庫(kù)中的各表進(jìn)行全部更新。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多