淺談超大型Oracle數(shù)據(jù)庫的基礎設計和優(yōu)化設計
摘要:本文對Oracle數(shù)據(jù)庫的基礎設計的特點、并行服務器應用、劃分策略、數(shù)據(jù)庫物理結構的設計等《大型數(shù)據(jù)庫分析與設計》學習中的重點章節(jié)進行總結和論述;并從大型數(shù)據(jù)庫Oracle環(huán)境四個不同級別的調(diào)整分析入手,分析Oracle的系統(tǒng)結構和工作機理,從不同方面較全面地總結ORACLE數(shù)據(jù)庫的優(yōu)化調(diào)整方案。
本文引用地址:http://www.ex-cimer.com/article/202231.htmAbstract: This paper summarized and discussed the character of basic design, application of OPS, strategy of partition, and design of physical structure of Oracle data base in the important chapters of Analysis and Design of Large Data Base, analyzed the principle of system architecture and work from the four-grade adjustment of large Oracle data base; and also summarized the optimization design plan of Oracle data base from different aspects.
關鍵詞:Oracle數(shù)據(jù)庫;環(huán)境調(diào)整;優(yōu)化設計;方案
Key words: Oracle data base;environment adjustment;optimization design;plan
1 概論
對于超大型系統(tǒng),我們通常使用雙機或多機集群系統(tǒng)。在本文中,我們探討了設計超大型數(shù)據(jù)庫所采用的方法,同時,以在數(shù)據(jù)庫中使用ORACLE 8.0.6并行服務器作出舉例。
2 ORACLE并行服務器應用劃分策略
ORACLE并行服務器應用劃分有如下四種方法:①按照功能的模塊來區(qū)分,不一樣的節(jié)點運行不一樣的應用;②按照用戶來區(qū)分,不一樣類型的用戶運行在不一樣的節(jié)點之上;③按照數(shù)據(jù)來區(qū)分,對于不一樣的數(shù)據(jù)或者索引要用不一樣的節(jié)點進行訪問;④按照時間來區(qū)分,不一樣的應用要運行在不同的時間。
3 數(shù)據(jù)庫物理結構的設計
3.1 表及索引數(shù)據(jù)量估算及物理存儲參數(shù)的設置。表及索引的initial和next存儲參數(shù)一般設為相等,pctincrease設為0。
3.2 表空間的設計。在表空間設計時一般作以下考慮:①一般較大的表或索引單獨分配一個表空間。②Read only對象或Read mostly對象分成一組,存在對應的表空間中。③若表空間中的對象皆是read only對象,可將表空間設置成read only模式,在備份時,只讀表空間只需備份一次。④高頻率insert的對象分成一組,存在對應的表空間中。⑤增、刪、改的對象分成一組,存在對應表空間中。⑥表和索引分別存于不同的表空間。⑦存于同一個表空間中的表(或索引)的extent 大小最好成倍數(shù)關系,有利于空間的重利用和減少碎片。
3.3 DB BLOCK SIZE 。超大型數(shù)據(jù)庫DB BLOCK SIZE一般在4KB 至 64KB,而最常用的是8KB、 16KB或32KB。選用較大的DB
BLOCK SIZE可使INDEX的高度降低,也會提高IO效率。
3.4 Redo Log Files ORACLE 使用專用的進程redo log writer (LGWR)將日志寫入日志文件。
3.5 數(shù)據(jù)文件大小。
我們應該采用標準的文件,這樣能夠縮減空間維護的時間。
3.6 回滾段?;貪L段一般建在專用的表空間中。每一個INSTANCE實例擁有各自的回滾段。
3.7 臨時表空間。臨時表空間一般建在專用的表空間中。
4 系統(tǒng)硬盤的劃分及分配
考慮以下情況:主機1上有DRD服務1,該服務對應的數(shù)據(jù)文件有1、2、13、35、67等,這時如果主機2上的INSTANCE2需要讀取數(shù)據(jù)文件13,通過DRD服務調(diào)度,主機1通過DRD服務訪問磁盤陣列上的數(shù)據(jù)文件13,把INSTANCE2需要的數(shù)據(jù)讀到內(nèi)存,然后通過MEMORY IO把數(shù)據(jù)傳到主機2的INSTANCE2。寫操作是讀操作的逆過程。
5 備份及恢復策略的考慮
5.1 ORACLE備份方法:①物理備份 (用于磁盤介質(zhì)損壞或數(shù)據(jù)文件損壞)。1)物理冷備份(offline backup)。2)物理熱備份(online backup)。3)歸檔日志文件備份(archived log file backup)。②邏輯備份(用于數(shù)據(jù)庫中的某些對象被破壞或用戶誤操作)。備份策略的考慮主要在以下三個方面:1)存儲的空間方面;2)針對于影響運行系統(tǒng)方面;3)影響恢復的時間方面。
5.2 ORACLE的恢復方法 采用物理備份恢復。以下三方面的恢復方法是由ORACLE提供:①數(shù)據(jù)庫級的恢復;②表空間的恢復;③數(shù)據(jù)文件的恢復。數(shù)據(jù)庫級的恢復要在以下條件中運行:關閉數(shù)據(jù)庫但Mount的狀態(tài)。然而,對于恢復表空間和數(shù)據(jù)文件時,可以運行數(shù)據(jù)庫。
5.3 采用邏輯備份恢復 其適用條件是:其一,用戶的操作失誤導致數(shù)據(jù)的破壞;其二,在數(shù)據(jù)庫中,破壞了某一個對象。
6 優(yōu)化設計
6.1 數(shù)據(jù)庫優(yōu)化自由結構OFA(Optimal flexible Architecture) 優(yōu)化自由結構是在數(shù)據(jù)庫中能夠任意的分布邏輯數(shù)據(jù)對象。所以,應該把數(shù)據(jù)庫中的邏輯對象按照它們的使用方法以及數(shù)據(jù)庫受到物理結構的影響來對邏輯對象進行分類。
6.2 充分利用系統(tǒng)全局區(qū)域SGA(SYSTEM GLOBAL AREA)
SGA有以下3方面的內(nèi)容:①字典緩沖區(qū)。②數(shù)據(jù)塊緩沖區(qū)。③SQL共享池。④重做日志緩沖區(qū)。
6.3 規(guī)范與反規(guī)范設計數(shù)據(jù)庫 規(guī)范的原則是在數(shù)據(jù)依賴中逐漸的解決不適宜的部分,將模式中每一個關系模式達到一定程度上的“一事一地”的模式。但是,有時為了能提高一些查詢或者應用的性能,從而故意破壞規(guī)范規(guī)則,保留非范化限制,也就是反規(guī)范。
6.4 索引Index的優(yōu)化設計 第一,使用聚簇。聚簇按照共同的碼值把許多表中的數(shù)據(jù)都存儲在一個Oracle塊里,這樣,Oracle塊在同一時間就獲得了兩個表當中的數(shù)據(jù)。第二,管理組織索引,針對于查詢大型表的時候,索引數(shù)據(jù)或許將數(shù)據(jù)塊緩存空間用完,ORACL必須經(jīng)常地通過磁盤讀寫來得到數(shù)據(jù),所以,對大型表分區(qū)后,我們要按照有關的分區(qū)去建立分區(qū)索引。
6.5 使用最優(yōu)的數(shù)據(jù)庫連接和SQL優(yōu)化方案 第一,采用直接的OLE DB數(shù)據(jù)庫連接方式。通過ADO,我們可以采用傳統(tǒng)的ODBC以及OLE DB兩種方式對數(shù)據(jù)庫進行連接。第二,采用Connection Pool機制。其原理是在IIS+ASP體系中維持了一個連接緩沖池,基于此,下一個用戶在訪問的時候,能夠直接在其中獲得一個數(shù)據(jù)庫的連接,同時避免了重新對數(shù)據(jù)庫的連接。第三,高效率的對SQL語句進行設計。其一,可以使數(shù)據(jù)庫的查詢次數(shù)(系統(tǒng)資源的請求)減少;其二,在進行查詢時,應盡可能的采用十分類似的SQL語句;其三,對動態(tài)SQL的使用可以進行約束。
評論