日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
探析Oracle數(shù)據(jù)庫啟動的原理與機制(oracle數(shù)據(jù)庫啟動原理)

導言:

創(chuàng)新互聯(lián)是一家專注于網(wǎng)站建設(shè)、網(wǎng)站制作與策劃設(shè)計,蘆淞網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:蘆淞等地區(qū)。蘆淞做網(wǎng)站價格咨詢:18980820575

Oracle數(shù)據(jù)庫是企業(yè)級的數(shù)據(jù)庫軟件,應(yīng)用范圍非常廣泛,并且具有高可靠性、高安全性等特點。但是,對于Oracle數(shù)據(jù)庫啟動的原理和機制,需要深入研究和分析才能全面了解。

一、Oracle數(shù)據(jù)庫啟動前的準備工作

在Oracle數(shù)據(jù)庫啟動前,需要對操作系統(tǒng)和Oracle環(huán)境進行一些配置工作。操作系統(tǒng)需要安裝Oracle軟件和設(shè)置環(huán)境變量,Oracle環(huán)境需要進行數(shù)據(jù)庫實例的創(chuàng)建和參數(shù)的配置。

二、Oracle數(shù)據(jù)庫啟動的步驟

1. 初始化參數(shù)文件

在Oracle數(shù)據(jù)庫啟動時,需要讀取初始化參數(shù)文件來獲取數(shù)據(jù)庫的基本信息和配置參數(shù)。如果系統(tǒng)沒有指定參數(shù)文件,則會使用默認的參數(shù)文件進行啟動。參數(shù)文件主要包括數(shù)據(jù)庫的名稱、端口號、內(nèi)存大小、存儲路徑等。

2. 創(chuàng)建進程和線程

Oracle數(shù)據(jù)庫啟動時,會創(chuàng)建多個進程和線程,包括后臺進程、用戶進程、監(jiān)聽進程等。后臺進程主要負責數(shù)據(jù)庫的管理和維護,用戶進程則是客戶端連接到數(shù)據(jù)庫時創(chuàng)建的線程,監(jiān)聽進程則負責接受客戶端連接請求、傳遞請求到相應(yīng)的進程中處理。

3. 初始化SGA

SGA(System Global Area)是Oracle數(shù)據(jù)庫中的共享內(nèi)存區(qū)域,其中存儲了大量數(shù)據(jù)庫緩存信息和系統(tǒng)狀態(tài)信息。在Oracle數(shù)據(jù)庫啟動時,需要初始化SGA,包括分配內(nèi)存、初始化緩存結(jié)構(gòu)等操作。

4. 啟動后臺進程

在Oracle數(shù)據(jù)庫啟動時,需要啟動多個后臺進程,包括CKPT、DBWn、LGWR等進程。這些后臺進程主要負責數(shù)據(jù)庫的日志、檢查點、緩存管理等操作。

5. 恢復數(shù)據(jù)庫

如果Oracle數(shù)據(jù)庫在前一次關(guān)閉時出現(xiàn)異常,需要進行恢復操作。數(shù)據(jù)恢復的過程主要包括日志重做、回滾數(shù)據(jù)等操作。

6. 執(zhí)行用戶腳本

在Oracle數(shù)據(jù)庫啟動完成之后,需要執(zhí)行用戶腳本,包括初始化腳本、配置腳本等。這些腳本可以用來初始化數(shù)據(jù)庫對象、配置存儲路徑等。

三、Oracle數(shù)據(jù)庫啟動的原理和機制

1. Oracle數(shù)據(jù)庫啟動的原理

Oracle數(shù)據(jù)庫啟動的原理主要是基于共享內(nèi)存和進程通信的機制。SGA是Oracle數(shù)據(jù)庫中的共享內(nèi)存區(qū)域,其中存儲了大量的數(shù)據(jù)庫緩存和系統(tǒng)狀態(tài)信息。在啟動數(shù)據(jù)庫時,需要初始化SGA,并且所有的進程都可以訪問這個共享內(nèi)存區(qū)域。進程之間通信的方式主要是基于共享內(nèi)存和信號量的機制。

2. Oracle數(shù)據(jù)庫啟動的機制

在Oracle數(shù)據(jù)庫啟動時,會創(chuàng)建多個進程和線程,包括監(jiān)聽進程、后臺進程、用戶進程等。監(jiān)聽進程負責接受客戶端連接請求并將請求傳遞給相應(yīng)的進程處理。后臺進程主要負責數(shù)據(jù)庫的管理和維護,包括緩存管理、日志管理、檢查點等。用戶進程則是客戶端連接到數(shù)據(jù)庫時創(chuàng)建的線程,用于處理客戶端提交的SQL語句。

Oracle數(shù)據(jù)庫啟動的機制主要是基于多進程和多線程的機制,通過這種方式可以充分發(fā)揮多核CPU的性能,提高系統(tǒng)的吞吐量和響應(yīng)速度。

四、

Oracle數(shù)據(jù)庫啟動是一個比較復雜的過程,在啟動前需要進行多項準備工作,包括環(huán)境變量的設(shè)置、數(shù)據(jù)庫參數(shù)的配置等。在啟動過程中,需要創(chuàng)建多個進程和線程,并對SGA進行初始化和管理。通過對Oracle數(shù)據(jù)庫啟動的原理和機制的深入分析,可以更好地理解Oracle數(shù)據(jù)庫的工作方式和機制,為數(shù)據(jù)庫的運維和優(yōu)化提供有益的參考。

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗豐富以策略為先導10多年以來專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,響應(yīng)式網(wǎng)站制作,設(shè)計師量身打造品牌風格,熱線:028-86922220

誰能介紹下oracle數(shù)據(jù)庫的前滾rolling forward原理嗎?

在一個事務(wù)沒有提交之前,它的臟塊有可能已經(jīng)被寫入到數(shù)據(jù)文件中。在實例恢復時,roll forward之后會進行roll back,這時已經(jīng)被寫入數(shù)據(jù)文件的未提交的事務(wù)會被回退。

事務(wù)具有acdi四大特性:

a(atomicity):原子性表示事務(wù)執(zhí)行過程中的任何失敗都將導致事務(wù)所做的任何修改失效。

c(consistency):一致性表示當事務(wù)執(zhí)行失敗時,所有被該事務(wù)影響的數(shù)據(jù)都應(yīng)該恢復到事務(wù)執(zhí)行前的狀態(tài)。

i(isolation):隔離性表示在事務(wù)執(zhí)行過程森猜慎中對數(shù)據(jù)的修改,在事務(wù)提交之前對其他事務(wù)不可見兆伍(再此敬沒又提交只是對內(nèi)存中的數(shù)據(jù)進行的操作)。

d(durability):永久性表示如果事務(wù)提交成功之后,對數(shù)據(jù)的修改將是永久的。是指一旦做了rollback就不能在提交了。反之一旦提交了就不可以回滾了。

原子性是手段,一致性是目的。

偶然的一次,網(wǎng)友在t.askmaclean.com ASK Maclean Home提問了培芹吵關(guān)于11.2 上一個ORA-600問題的解決途徑,我們這里不討論該ORA-600錯誤, 比這個錯誤本身更有趣的是 該600 trace中記錄了一段對于前滾恢復rolling upgrade描述十分詳細的KST trace。

很多網(wǎng)友肯定要問什么是KST? KST是9i以后引入的內(nèi)部診斷機制Tracing Facility,每一個Oracle 進程都維護SGA中的一小塊Trace buffer,并將自身的默認啟用的一些event事件信息寫入到Trace Buffer中(這些事件默認包括10280, 10401, 10441, 10442, 10425, 10427, 10429, 10434, 10666),可以使用內(nèi)部視圖x$trace觀察這些信息,默認Trace Buffer不寫到磁盤上,而只在SGA中維護,當Trace Buffer用完時將被重用。

了解了 KST的知識后,我們可以從容地閱讀下面這段TRACE了:

Trace Bucket Dump Begin: default bucket for process 19 (osid: 29785)

TIME(*=approx):SEQ:COMPONENT:FILE@LINE:FUNCTION:SECT/DUMP: DATA

以上是KST Trace的 頭部

COMPONENT 組件名 例如首山 db_trace 、CACHE_RCV,這里的CACHE_RCV意為 cache recovery,實際上是我們所說的前滾rolling forward。

FILE@LINE 指oracle內(nèi)核代碼的文件名和行數(shù) 例如:kst.c、kcv.c,這些都是oracle的核心C代碼名

FUNCTION 指oracle內(nèi)核函數(shù)名 例如kcvcrv()、kctrec()

即 EVENT ID:PID:SID

DATA 實際的操作配侍內(nèi)容

我們選擇性地閱讀KST TRACE的內(nèi)容:

:40:52.:800005B3:CACHE_RCV:kcv.c@15475:kcvcrv(): kcvcrv: Entering kcvcrv():40:52.:800005B4:KFNU:kfn.c@2200:kfnPrepareA(): kfnPrepareA force=0 state_kfnsg=0x7

:40:52.772999*:800005B5:CACHE_RCV:kcv.c@16100:kcvcrv(): kcvcrv: file 1 – cpscn 0x0000.018b76b2, rs 0

:40:52.826001*:800005B6:CACHE_RCV:kcv.c@16100:kcvcrv(): kcvcrv: file 2 – cpscn 0x0000.018b76b2, rs 0

:40:52.862023*:800005B7:CACHE_RCV:kcv.c@16100:kcvcrv(): kcvcrv: file 3 – cpscn 0x0000.018b76b2, rs 0

:40:52.909981*:800005B8:CACHE_RCV:kcv.c@16100:kcvcrv(): kcvcrv: file 4 – cpscn 0x0000.018b76b2, rs 0

:40:52.945933*:800005B9:CACHE_RCV:kcv.c@16100:kcvcrv(): kcvcrv: file 5 – cpscn 0x0000.018b76b2, rs 0

:40:52.993824*:800005BA:CACHE_RCV:kcv.c@16100:kcvcrv(): kcvcrv: file 6 – cpscn 0x0000.018b76b2, rs 0

:40:53.005829*:800005BB:CACHE_RCV:kcv.c@16100:kcvcrv(): kcvcrv: file 7 – cpscn 0x0000.018b76b2, rs 0

:40:53.041893*:800005BC:CACHE_RCV:kcv.c@16100:kcvcrv(): kcvcrv: file 8 – cpscn 0x0000.018b76b2, rs 0

:40:53.065779*:800005BD:CACHE_RCV:kcv.c@16100:kcvcrv(): kcvcrv: file 9 – cpscn 0x0000.018b76b2, rs 0

:40:53.089760*:800005BE:CACHE_RCV:kcv.c@16100:kcvcrv(): kcvcrv: file 10 – cpscn 0x0000.018b76b2, rs 0

kcvcrv的全稱是 ernel ache ecovery rash ecovery erify , kcvcrv內(nèi)核函數(shù)在crash recovery的過程中顯得極為重要,它總是發(fā)生在當一個前臺進程試圖啟動臟關(guān)閉(dirty shutdown)的數(shù)據(jù)庫的時候。kcvcrv 的工作包括檢驗所有的數(shù)據(jù)文件頭并驗證控制文件中的數(shù)據(jù)文件記錄以確認是否需要介質(zhì)恢復。這個步驟必要地驗證僅僅crash recovery是否足以讓數(shù)據(jù)庫恢復到一致狀態(tài)(consistent),相信大家已經(jīng)耳熟能詳 crash recovery 、 instance recovery 、 media recovery 三者的區(qū)別。 若kcvcrv發(fā)現(xiàn) data files數(shù)據(jù)文件、control files控制文件亦或者redo log file在線日志文件存在corrupted 或者 丟失,或者實際上是從之前的備份中還原過來的,那么kcvcrv會強制用戶必須使用media recovery才能將數(shù)據(jù)庫恢復到一致,無法通過crash recovery實現(xiàn)恢復。注意 kcvcrv的檢測并不是完全的,它主要是檢測 數(shù)據(jù)文件頭的checkpoint scn 和 控制文件中data files的checkpoint scn是否一致,以確保 這些數(shù)據(jù)文件完成了shutdown instance時的最后一次FULL Checkpoint。 kcvcrv并不能檢測出除數(shù)據(jù)文件頭部外的datafile body是否存在介質(zhì)訛誤。

kcvcrv需要對control file讀寫才能完成其必要的任務(wù),所以它會啟動一個控制文件讀寫事務(wù) read-write control file transaction。通過檢驗控制文件中每個數(shù)據(jù)文件的記錄以確認數(shù)據(jù)文件是否有被重新同步的必要。 當然kcvcrv會跳過哪些OFFLINE和read-only的數(shù)據(jù)文件,因為這些文件不存在recovery的必要。

在確認crash recovery的必要性后,kcvcrv還會主導啟動并行的恢復工作(parallel recovery),注意parallel recovery只在多CPU且參數(shù)recovery_paralleli不為零的環(huán)境下有效, kcvcrv會創(chuàng)建并初始化Oracle中的PQ Slave 并行子進程以便恢復實例。 默認的子進程數(shù)Slave Processes等于(CPU的總數(shù)-1),這是因為需要為recovery coordinator process恢復協(xié)調(diào)進程保留一個CPU。并且需要kcvcrv分配一個recovery state object給并行恢復 協(xié)調(diào)進程與其Slave子進程。

最后kcvcrv還會調(diào)用另一個關(guān)鍵內(nèi)核函數(shù) kctrec ( Kernel Cache Threads ), kctrec會在所有打開的redo thread上實施進一步的thread recovery。

:40:53.::KFNU:kfn.c@2200:kfnPrepareA(): kfnPrepareA force=0 state_kfnsg=0x7

:40:53.366569*::CACHE_RCV:kcv.c@16365:kcvcrv(): kcvcrv: Calling kctrec()

:40:53.366569*::CACHE_RCV:kct.c@4163:kctrec(): kctrec: Entering kctrec()

:40:53.413557*:A:CACHE_RCV:kct.c@4271:kctrec(): kctrec: thread 1 cf thread ckpt: logseq 1468, block 2,scn

常見的 kcvcrv 調(diào)用堆棧 stack call如下:

kcratr_odr_check

kcliarq

kfgrpIterInit()

關(guān)于oracle數(shù)據(jù)庫啟動原理的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

成都創(chuàng)新互聯(lián)科技有限公司,經(jīng)過多年的不懈努力,公司現(xiàn)已經(jīng)成為一家專業(yè)從事IT產(chǎn)品開發(fā)和營銷公司。廣泛應(yīng)用于計算機網(wǎng)絡(luò)、設(shè)計、SEO優(yōu)化、關(guān)鍵詞排名等多種行業(yè)!


本文題目:探析Oracle數(shù)據(jù)庫啟動的原理與機制(oracle數(shù)據(jù)庫啟動原理)
轉(zhuǎn)載來于:http://www.5511xx.com/article/dpssoeg.html