Oracle是世界領(lǐng)先的數(shù)據(jù)庫管理系統(tǒng)之一,它的啟動存儲功能可以幫助數(shù)據(jù)管理員在Oracle數(shù)據(jù)庫啟動或關(guān)閉過程中,減少磁盤I/O操作,提高數(shù)據(jù)庫的性能。下面我們來詳細(xì)講解Oracle啟動存儲。
在Oracle中,啟動存儲是指在數(shù)據(jù)庫啟動過程中,自動加載一些頻繁使用的數(shù)據(jù)和對象到SGA(共享內(nèi)存在oracle中的體現(xiàn),與操作系統(tǒng)無關(guān)),從而避免了在每次執(zhí)行操作時(shí)從磁盤中讀取這些數(shù)據(jù),降低了Oracle的I/O負(fù)載,并提升了性能。
啟動存儲在Oracle中主要有兩種方式,分別是自動啟動存儲(automatic startup)和手動啟動存儲(manual startup)。
自動啟動存儲可以通過設(shè)置SPFILE參數(shù)ENABLE_AUTOMATIC_MAINTENANCE_TASKS自動激活,一旦啟用,Oracle每天都將在系統(tǒng)不活動時(shí)運(yùn)行任務(wù)來提高性能,比如執(zhí)行位于SYSAUX表空間中的Advisor任務(wù),或自動收縮表等操作。
SQL>ALTER SYSTEM SET enable_automatic_maintenance_tasks=TRUE;
手動啟動存儲是在需要時(shí)手動啟用,它主要用于在關(guān)鍵性維護(hù)任務(wù)時(shí)提高數(shù)據(jù)庫的性能。數(shù)據(jù)庫管理員可以通過以下操作來啟用手動啟動存儲:
SQL>ALTER SYSTEM SET deferred_segment_creation=TRUE; SQL>ALTER SESSION SET optimizer_use_invisible_indexes=TRUE;
手動啟動存儲不僅可以在性能需要提高的情況下發(fā)揮作用,在回收空間、創(chuàng)建索引、刪除數(shù)據(jù)等維護(hù)任務(wù)時(shí),啟動手動啟動存儲更是必須的。
除了自動和手動啟用啟動存儲,Oracle中還有一個(gè)非常重要的對象叫做Segments。Segments是數(shù)據(jù)庫中物理存儲結(jié)構(gòu)的基本組成部分,它由一組塊(即組成表等對象的基本存儲單元)組成。
在Oracle中,Segments可以分成以下幾種不同類型:
- 表空間段(tablespace segments):在表空間中管理的數(shù)據(jù)對象。
- 擴(kuò)展段(extent segments):包含多個(gè)擴(kuò)展(extents),與表空間段配合使用。
- 回滾段(rollback segments):用于回滾事務(wù),發(fā)生事務(wù)回滾時(shí),這些段可以撤銷對數(shù)據(jù)庫的修改。
- 臨時(shí)段(temp segments):用于處理臨時(shí)數(shù)據(jù)。
在Oracle中,啟動存儲的管理包括:啟動之前準(zhǔn)備Good Orderly Direction(GOD),啟動期間存儲控制,設(shè)置參數(shù)和跟蹤存儲使用情況等。這里不再進(jìn)行贅述。
總之,Oracle啟動存儲是提高Oracle數(shù)據(jù)庫性能的關(guān)鍵措施之一,通過自動和手動啟用啟動存儲,可以大大降低I/O操作,提高性能。數(shù)據(jù)庫管理員需要及時(shí)啟用和管理啟動存儲來提高Oracle數(shù)據(jù)庫的性能。