1. 程式人生 > >如何讓Oracle數據庫保持優良性能的方法

如何讓Oracle數據庫保持優良性能的方法

在那 data wid nts 組成 維護 部分 將不 許多事

OracleDatabase,又名OracleRDBMS,或簡稱Oracle。是甲骨文公司的一款關系數據庫管理系統。它是在數據庫領域一直處於領先地位的產品。可以說Oracle數據庫系統是目前世界上流行的關系數據庫管理系統,系統可移植性好、使用方便、功能強,適用於各類大、中、小、微機環境。它是一種高效率、可靠性好的適應高吞吐量的數據庫解決方案。

Oracle數據庫以其高可靠性、安全性、可兼容性,得到越來越多的企業的青睞。如何使Oracle數據庫保持優良性能,這是許多數據庫管理員關心的問題,根據筆者經驗建議不妨針對以下幾個方面加以考慮。

 一、分區

  根據實際經驗,在一個大數據庫中,數據空間的絕大多數是被少量的表所占有。為了簡化大型數據庫的管理,改善應用的查詢性能,一般可以使用分區這種手段。所謂分區就是動態表中的記錄分離到若幹不同的表空間上,使數據在物理上被分割開來,便於維護、備份、恢復、事務及查詢性能。當使用的時候可建立一個連接所有分區的視圖,使其在邏輯上仍以一個整體出現。

  1.建立分區表

技術分享

  表Employee依據DeptNo列進行分區。

  2.分區索引

技術分享

  當分區中出現許多事務並且要保證所有分區中的數據記錄的惟一性時采用全局索引,在建立全局索引時,Global子句允許指定索引的範圍值,這個範圍值可以不同於表分區的範圍值。只有建立局部索引才會使索引分區與表分區間建立起一一對應關系。因此,在大多數情況下,應該使用局部索引分區。若使用了此索引,分區就能夠很容易地將索引分區與表分區建立關聯,局部索引比全局索引更易於管理。

  3.分區管理

  根據實際需要,還可以使用Altertable命令來增加、刪除、交換、移動、修改、重命名、劃分、截短一個已存在分區的結構。

  二、重建索引

技術分享

  如果表中記錄頻繁地被刪除或插入,盡管表中的記錄總量保持不變,索引空間的使用量會不斷增加。雖然記錄從索引中被刪除,但是該記錄索引項的使用空間不能被重新使用。因此,如果表變化不定,索引空間量會不斷增加,不論表中記錄數量是否增加,只是因為索引中無效空間會增加。

  要回收那些曾被刪除記錄使用的空間,需要使用Alterindexrebuild命令。可以做一個定期運行的批處理程序,來重建最活動表的索引。這個批處理程序可以在空閑時運行,以避免該程序與其他應用程序沖突。若能堅持索引的這一程序規劃,便可以及時回收那些未使用空間,提高空間利用率。

  三、段的碎片整理

  當生成一個數據庫對象時(一個表或一個索引),通過用戶缺省值或指定值來為它指定表空間。一個在表空間中生成的段,用於存儲對象的相關數據。在段被關閉、收縮、截斷之前,段所分配的空間將不被釋放。

  一個段是由範圍組成,而範圍是由相鄰的Oracle塊組成。一旦存在的範圍不能再存儲新的數據,這個段就會去獲得新的範圍,但並不要求這些範圍是彼此相鄰的。這樣的擴展會一直繼續下去,直到表空間中的數據文件不能提供更多的自由空間,或者範圍數量已達到極限。

  因此,一個碎片太多的數據段,不僅會影響運行,也會引發表空間中的空間管理問題。所以,每個數據段只含有一個範圍是十分有益的。借助監控系統,可以通過檢查DBA_SEGMENTS數據字典視圖來了解哪些數據庫對象含有10個或更多範圍的段,確定其數據段碎片。

  若一個段的碎片過多,可用兩種方法解決:

  1.用正確的存儲參數建立一個新表,將舊表的數據插入到新表中,在刪除舊表;

  2.利用Export/Import工具。

  如:expsystem/managerfile=exp.dmpcompress=Ygrants=Yindexes=Ytables=(T1,T2)

  若輸出成功,進入Oracle,刪除上述表。

  註:compress=Y表示將在輸出過程中修改它們的存儲參數。

  impsystem/managerfile=exp.dmpcommit=Ybuffer=64000full=Y

  Oracle數據庫特點

  1、完整的數據管理功能:[2]

  1)數據的大量性

  2)數據的保存的持久性

  3)數據的共享性

  4)數據的可靠性

  2、完備關系的產品:

  1)信息準則---關系型DBMS的所有信息都應在邏輯上用一種方法,即表中的值顯式地表示;

  2)保證訪問的準則

  3)視圖更新準則---只要形成視圖的表中的數據變化了,相應的視圖中的數據同時變化

  4)數據物理性和邏輯性獨立準則

  3、分布式處理功能:

  ORACLE數據庫自第5版起就提供了分布式處理能力,到第7版就有比較完善的分布式數據庫功能了,一個ORACLE分布式數據庫由oraclerdbms、sql*Net、SQL*CONNECT和其他非ORACLE的關系型產品構成。

  4、用ORACLE能輕松的實現數據倉庫的操作。

  這是一個技術發展的趨勢,不在這裏討論。

  優點

  ■可用性強

  ■可擴展性強

  ■數據安全性強

  ■穩定性強

  四、自由範圍的碎片整理

  表空間中的一個自由範圍是表空間中相連的自由(空間)塊的集合。當一個段關閉時,它的範圍將被釋放,並被標記為自由範圍。然而,這些自由範圍再也不能與相鄰的自由範圍合並,它們之間的界線始終存在。但是當表空間的缺省值pctincrease設置不是0時,SMON後臺進程會定期將這些相鄰的自由範圍合作。若pctincrease設置為0,那麽相鄰自由範圍不會被數據庫自動合並。但可以使用Altertable命令"coalesce"選項,來強迫進行相鄰自由範圍的合並。

  不進行自由範圍合並,在日後的空間請求中,會影響到表空間中的空間分配。當需要一個足夠大的範圍時,數據庫並不會合並相鄰的自由範圍,除非沒有其他選擇。這樣,當表空間中前面較小的自由範圍已被使用時,將使用表空間中後面部分最大的一個自由範圍。結果,會因為沒有足夠多的使用空間,從而導致表空間需求的矛盾。由於這樣的情況出現,使數據庫的空間分配距理想越來越遠。自由空間碎片常會出現在那些經常關閉又重新生成的數據庫表和索引中。

  在理想的Oracle表空間中,每一個數據庫對象存儲在一個單獨的範圍中,並且所有有效自由空間集中在一個巨大而連續的範圍中。這樣,在一個對象需要附加存儲空間時,可以在增加獲取足夠大自由空間的可能性的同時,最小化空間中的循環調用,提高自由空間使用率。

如何讓Oracle數據庫保持優良性能的方法