亚洲av色香蕉一区二区三区,十四以下岁毛片带血a级,亚洲 校园 欧美 国产 另类,亚洲av日韩av一区谷露,色欲av无码一区二区三区

  • 相關(guān)軟件
    >Oracle數(shù)據(jù)庫實例的內(nèi)存和進程結(jié)構(gòu) 創(chuàng)建者:webmaster 更新時間:2005-05-16 23:36

    內(nèi)存結(jié)構(gòu)
    在Oracle數(shù)據(jù)庫系統(tǒng)中內(nèi)存結(jié)構(gòu)主要分為系統(tǒng)全局區(qū)(SGA)和程序全局區(qū)(PGA),SGA隨著數(shù)據(jù)庫實例的啟動向操作系統(tǒng)申請分配一塊內(nèi)存結(jié)構(gòu),隨著數(shù)據(jù)庫實例的關(guān)閉釋放,每一個Oracle數(shù)據(jù)庫實例有且只有一個SGA。PGA隨著Oracle服務(wù)進程啟動的時候申請分配的一塊內(nèi)存結(jié)構(gòu)。如果在共享服務(wù)結(jié)構(gòu)中PGA存在SGA中。
    下圖展示Oracle的內(nèi)存結(jié)構(gòu),在后面我們將用文字詳細的表述各個部件。


    系統(tǒng)全局區(qū)(SGA)

    重要提示,提高SGA的大小可以在一定程度上提高Oracle數(shù)據(jù)庫系統(tǒng)的性能,但你設(shè)置SGA的值如果不能鎖定在內(nèi)存物理頁上,有些部分可能被交換到系統(tǒng)的交換文件中。這樣你的Oracle數(shù)據(jù)庫系統(tǒng)將變慢。

    系統(tǒng)全局區(qū)是一組包含數(shù)據(jù)和控制信息的共享內(nèi)存結(jié)構(gòu),允許Oracle服務(wù)的眾多后臺進程同時訪問或修改其中的數(shù)據(jù),所以有些時候也被稱為“全局共享區(qū)”,參數(shù)文件中的SGA_MAX_SIZE指定SGA動態(tài)大小。
    系統(tǒng)全局區(qū)由以下主要幾個部分組成:
    ※ 共享池SharedPool
    ※ 數(shù)據(jù)高速緩存DatabaseBufferCache
    ※ 重做日志緩存RedoLogBufferCache
    ※ Java池(可選)JavaPool
    ※ 大池(可選)LagerPool

    共享池

    共享池存儲了最近多數(shù)使用的執(zhí)行SQL語句和最近使用的數(shù)據(jù)定義。它包含庫高速緩存器和數(shù)據(jù)字典緩存器這兩個與性能相關(guān)的內(nèi)存結(jié)構(gòu)。共享池的大小可以通過初始化參數(shù)文件(通常為init.ora)中的SHARED_POOL_SIZE決定。共享池是活動非常頻繁的內(nèi)存結(jié)構(gòu),會產(chǎn)生大量的內(nèi)存碎片,所以你要確保它盡可能足夠大。
    庫高速緩存器,他又包含共享SQL區(qū)和共享PL/SQL區(qū)兩個組件區(qū)。為了提高SQL語句的性能,在提交SQL語句或PL/SQL程序塊時Oracle服務(wù)器將先利用最近最少使用(LRU)算法檢查庫高速緩存中是否存在相同的SQL語句或PL/SQL程序塊,若有則使用原有的分析樹和執(zhí)行路徑。
    數(shù)據(jù)字典緩存器,它收集最近使用的數(shù)據(jù)庫中的數(shù)據(jù)定義信息。它包含數(shù)據(jù)文件、表、索引、列、用戶、訪問權(quán)限、其他數(shù)據(jù)庫對象等信息。在分析階段決定數(shù)據(jù)庫對象的可訪問信息。利用數(shù)據(jù)字典緩存器有效的改善了響應(yīng)時間。它的大小由共享池的大小決定。

    數(shù)據(jù)高速緩存
    它存儲數(shù)據(jù)文件中數(shù)據(jù)塊的拷貝。利用這種結(jié)構(gòu)使數(shù)據(jù)的更新操作性能大大的提高。數(shù)據(jù)高速緩存中的數(shù)據(jù)交換同樣采用最近最少使用算法(LRU)。它的大小主要受到DB_BLOCK_SIZE決定。數(shù)據(jù)高速緩存它由DB_CACHE_SIZE、DB_KEEP_CACHE_SIZE、DB_RECYCLE_CACHE_SIZE這些獨立的子緩存器構(gòu)成,同時它能動態(tài)的增長或收縮。

    重做日志緩存
    重做日志緩存器是個環(huán)狀的緩存器,它記載所有數(shù)據(jù)的改變,主要目的用于恢復(fù)。改變后的記錄內(nèi)部稱為重做條目,重做條目包含重構(gòu)或重做信息。它的大小由初始化參數(shù)中的LOG_BUFFER決定。
    重做日志緩存尺寸若太小會導(dǎo)致進程競爭,并引起寫日志進程之間的競爭。

    Java池
    Java池是在安裝使用Java后,才在SGA中出現(xiàn)的一個組件,它的大小由JAVA_POOL_SIZE初始化參數(shù)決定。Java池為執(zhí)行Java命令提供分析與執(zhí)行內(nèi)存空間。

    大池
    數(shù)據(jù)庫管理員可以可選配置被稱為大池的內(nèi)存區(qū),它主要用于存儲為共享服務(wù)器保存會話信息、I/O服務(wù)進程、Oracle備份與恢復(fù)操作、并行的消息緩存等內(nèi)容。
    值得一提的是大池不像其他內(nèi)存組件中存在LRU列表。

    程序全局區(qū)PGA
    程序全局區(qū)用于保存每一個用戶連接到數(shù)據(jù)庫的信息。連接到數(shù)據(jù)庫的信息主要有回話信息、排序信息和游標信息等三方面。

    進程結(jié)構(gòu)
    Oracle的進程主要分為用戶進程、服務(wù)進程和后臺進程三類。用戶進程運行在應(yīng)用或Oracle工具中;服務(wù)進程在一個Oracle數(shù)據(jù)庫實例啟動后當一個用戶建立連接后創(chuàng)建的;后臺進程則完成不同特定任務(wù)的一些進程。
    Oracle的后臺進程如下:
    ※ 寫數(shù)據(jù)DatabaseWriter(DBW0或DBWn);
    ※ 寫日志LogWriter(LGWR);
    ※ 檢查點Checkpoint(CKPT);
    ※ 系統(tǒng)監(jiān)視SystemMonitor(SMON);
    ※ 進程監(jiān)視ProcessesMonitor(PMON);
    ※ 歸檔Archive(ARCn);
    ※ 恢復(fù)Recover(RECO);
    ※ 鎖管理服務(wù)LockManagerServer(LMS)–僅在RealApplicationClusters;
    ※ 隊列監(jiān)視QueueMonitor(OMNn);
    ※ 調(diào)度Dispatcher(Dnnn);
    ※ 服務(wù)Server(Snnn);

    下圖為各后臺進程之間的邏輯關(guān)系圖,在圖的后面將用文字說明這些進程的目的。


    寫數(shù)據(jù)(DBWn)
    數(shù)據(jù)寫進程負責(zé)將重寫塊(dirtyblock)從數(shù)據(jù)高速緩存中寫到磁盤上的數(shù)據(jù)文件里。為了使數(shù)據(jù)庫的性能受I/O限制降到最低,DBWn不是每一個塊修改時立即寫到磁盤上,而是等到符合一定條件后讀取高速緩存中的重寫塊列表,并將其指定的塊成批地寫到數(shù)據(jù)文件中。
    數(shù)據(jù)寫進程活動的條件如下:
    ※ 服務(wù)進程無法發(fā)現(xiàn)可用緩存
    ※ 檢查點出現(xiàn)
    ※ 重寫塊到達極限
    ※ 超時
    ※ ARC發(fā)出需求
    ※ 表空間脫機
    ※ 表空間只讀
    ※ 表丟棄或表截斷
    ※ 表空間開始備份
    雖然一個數(shù)據(jù)庫寫進程(DBW0)對大多數(shù)系統(tǒng)是足夠的,但是如果你的系統(tǒng)修改數(shù)據(jù)量很大要提高些性能你可以配置更多的寫進程(DBW1到DBW9和DBWa到DBWj)。這些增加的DBWn進程無法在單處理系統(tǒng)中使用。
    初始化參數(shù)DB_WRITER_PROCESSES指定了DBWn進程的序號,此參數(shù)最大允許值為20。

    寫日志(LGWR)
    寫日志進程是負責(zé)管理重做日志緩存的——將重做日志從緩存區(qū)寫到磁盤重做日至文件中。LGWR寫從上次寫后開始到最后復(fù)制到緩存中的所有重做條目。
    要記住Oracle數(shù)據(jù)庫系統(tǒng)直到LGWR將重做信息從緩存器中寫到在線重做日志才認為事務(wù)完成并發(fā)送成功代碼。LGWR進程對數(shù)據(jù)庫性能的影響不大。
    寫日志在下列條件中活動:
    ※ 在COMMIT;
    ※ 緩存器使用達到三分之一時
    ※ 緩存器使用達到1M時
    ※ 每隔3秒
    ※ 在DBWn活動之前

    檢查點進程(CKPT)
    檢查點進程是負責(zé)向DBWn發(fā)送信號;用檢查點的信息更新數(shù)據(jù)文件頭;用檢查點信息更新控制文件信息。
    檢查點頻繁出現(xiàn)、日志頻繁切換或數(shù)據(jù)庫有很多數(shù)據(jù)文件時,該進程可以減少LGWR的工作量。數(shù)據(jù)庫管理員可以通過設(shè)置初始化參數(shù)CHECKPOINT_PROCESS為TRUE或FALSE來確定這個數(shù)據(jù)庫實例是否使用檢查點進程。在初始化參數(shù)中LOG_CHECKPOINT_INTERVAL和LOG_CHECKPOINT_TIMEOUT來改變檢查點出現(xiàn)的頻率。設(shè)置這兩個參數(shù)要小心,多檢查點雖然能使LGWR進程工作量下降,但是過多的檢查點會導(dǎo)致系統(tǒng)處理時間和I/O時間浪費在不必要的開啟和關(guān)閉檢查點的執(zhí)行上。

    系統(tǒng)監(jiān)視進程(SMON)
    系統(tǒng)監(jiān)視進程是有規(guī)律的周期性活動。它負責(zé)的目的如下:
    ※ 在實例啟動中如果需要執(zhí)行恢復(fù);
    ※ 重新分配臨時段;
    ※ 每隔3秒合并表空間中相鄰的自由區(qū);
    ※ 根據(jù)需要將表空間或數(shù)據(jù)文件回復(fù)到聯(lián)機狀態(tài);
    ※ 對于應(yīng)用集群系統(tǒng),它執(zhí)行恢復(fù)一個失敗的CPU或Oracle實例。
    系統(tǒng)監(jiān)視這進程在數(shù)據(jù)庫系統(tǒng)實例啟動時如果出現(xiàn)故障,那么數(shù)據(jù)庫系統(tǒng)將無法開始工作。如果任何停止的事務(wù)因為文件只讀或脫機錯誤導(dǎo)致實例恢復(fù)過程中跳過,SMON將使表空間或文件回復(fù)到聯(lián)機狀態(tài)。SMON進程對于一個實例能執(zhí)行實例應(yīng)用集群,一個SMON對于一個實例能執(zhí)行實例恢復(fù)為一個失敗CPU或?qū)嵗?br />
    進程監(jiān)視進程(PMON)
    進程監(jiān)視進程負責(zé)在下列過程失敗后釋放相關(guān)對象:
    ※ 事務(wù)回退
    ※ 釋放相關(guān)鎖
    ※ 釋放相關(guān)資源
    ※ 重新分配發(fā)生錯誤的調(diào)度
    PMON周期性的檢查調(diào)度狀態(tài)和服務(wù)進程,并重新使除Oracle有意終止以外的已停止的進程運行;PMON同樣也注冊關(guān)于實例和調(diào)度進程用于網(wǎng)絡(luò)監(jiān)聽的信息。
    如果這個進程在數(shù)據(jù)庫系統(tǒng)實例啟動時出現(xiàn)故障,那么數(shù)據(jù)庫系統(tǒng)也將無法開始工作。

    恢復(fù)進程(RECO)
    恢復(fù)進程負責(zé)自動解決恢復(fù)分步式數(shù)據(jù)庫系統(tǒng)中陷于失敗的分布式事務(wù)。關(guān)于此進程的詳細將在分布式數(shù)據(jù)庫章節(jié)中介紹。

    歸檔進程(ARCn)
    這是一個可選的后臺進程。只有當Oracle數(shù)據(jù)庫實例運行在歸檔模式時出現(xiàn)。歸檔進程負責(zé)在日志文件切換時將所有重做日志信息復(fù)制到指定的設(shè)備文件中。
    一個Oracle數(shù)據(jù)庫實例最多可以擁有(ARC0到ARC9)10個歸檔進程。

    其他Oracle的后臺進程,如鎖管理服務(wù)、隊列監(jiān)視、調(diào)度等均不是一個Oracle數(shù)據(jù)庫實例必須的,我們將在后面相關(guān)的部分再介紹他們。
    相關(guān)文章
    本頁查看次數(shù):