Oracle數(shù)據(jù)庫是什么叭披?
Oracle?Database颅筋,又名Oracle?RDBMS置逻,簡稱Oracle推沸。是甲骨文公司推出的一款關(guān)系數(shù)據(jù)庫管理系統(tǒng)。
Oracle數(shù)據(jù)庫系統(tǒng)是目前世界上流行的關(guān)系數(shù)據(jù)庫管理系統(tǒng)券坞,擁有可移植性好鬓催、使用方便、功能強(qiáng)等優(yōu)點(diǎn)恨锚,在各類大宇驾、中、小猴伶、微機(jī)環(huán)境中都適用课舍。
Oracle是一種高效率、可靠性好的他挎、適應(yīng)高吞吐量的數(shù)據(jù)庫解決方案筝尾。
數(shù)據(jù)庫和實(shí)例
Oracle數(shù)據(jù)庫服務(wù)器由一個(gè)數(shù)據(jù)庫和至少一個(gè)數(shù)據(jù)庫實(shí)例組成。?數(shù)據(jù)庫是一組存儲(chǔ)數(shù)據(jù)的文件办桨,而數(shù)據(jù)庫實(shí)例則是管理數(shù)據(jù)庫文件的內(nèi)存結(jié)構(gòu)筹淫。此外,數(shù)據(jù)庫是由后臺(tái)進(jìn)程組成呢撞。
數(shù)據(jù)庫和實(shí)例是緊密相連的损姜,所以我們一般說的Oracle數(shù)據(jù)庫,通常指的就是實(shí)例和數(shù)據(jù)庫殊霞。
下圖說明了Oracle數(shù)據(jù)庫服務(wù)器體系結(jié)構(gòu):
在這種體系結(jié)構(gòu)中摧阅,Oracle數(shù)據(jù)庫服務(wù)器包括兩個(gè)主要部分:文件(Oracle數(shù)據(jù)庫)和內(nèi)存(Oracle實(shí)例)。
1.Oracle數(shù)據(jù)庫
Oracle數(shù)據(jù)庫的一個(gè)基本任務(wù)是存儲(chǔ)數(shù)據(jù)脓鹃,以下部分簡要地介紹Oracle數(shù)據(jù)庫的物理和邏輯存儲(chǔ)結(jié)構(gòu)逸尖。
1.1.物理存儲(chǔ)結(jié)構(gòu)
物理存儲(chǔ)結(jié)構(gòu)是存儲(chǔ)數(shù)據(jù)的純文件。當(dāng)執(zhí)行一個(gè)CREATE?DATABASE語句來創(chuàng)建一個(gè)新的數(shù)據(jù)庫時(shí)瘸右,將創(chuàng)建下列文件:
●?數(shù)據(jù)文件:數(shù)據(jù)文件包含真實(shí)數(shù)據(jù)娇跟,例如銷售訂單和客戶等。邏輯數(shù)據(jù)庫結(jié)構(gòu)(如表和索引)的數(shù)據(jù)被物理存儲(chǔ)在數(shù)據(jù)文件中太颤。
●?控制文件:每個(gè)Oracle數(shù)據(jù)庫都有一個(gè)包含元數(shù)據(jù)的控制文件苞俘。元數(shù)據(jù)用來描述包括數(shù)據(jù)庫名稱和數(shù)據(jù)文件位置的數(shù)據(jù)庫物理結(jié)構(gòu)。
●?聯(lián)機(jī)重做日志文件:每個(gè)Oracle數(shù)據(jù)庫都有一個(gè)聯(lián)機(jī)重做日志龄章,里面包含兩個(gè)或多個(gè)聯(lián)機(jī)重做日志文件吃谣。聯(lián)機(jī)重做日志由重做條目組成乞封,能夠記錄下所有對(duì)數(shù)據(jù)所做的更改。
除這些文件外岗憋,Oracle數(shù)據(jù)庫還包括如參數(shù)文件肃晚、網(wǎng)絡(luò)文件、備份文件以及用于備份和恢復(fù)的歸檔重做日志文件等重要文件仔戈。
1.2.邏輯存儲(chǔ)結(jié)構(gòu)
Oracle數(shù)據(jù)庫使用邏輯存儲(chǔ)結(jié)構(gòu)對(duì)磁盤空間使用情況進(jìn)行精細(xì)控制关串。以下是Oracle數(shù)據(jù)庫中的邏輯存儲(chǔ)結(jié)構(gòu):
●?數(shù)據(jù)塊(Data?blocks):Oracle將數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)塊中。數(shù)據(jù)塊也被稱為邏輯塊监徘,Oracle塊或頁晋修,對(duì)應(yīng)于磁盤上的字節(jié)數(shù)。
●?范圍(Extents):范圍是用于存儲(chǔ)特定類型信息的邏輯連續(xù)數(shù)據(jù)塊的具體數(shù)量凰盔。
●?段(Segments):段是分配用于存儲(chǔ)用戶對(duì)象(例如表或索引)的一組范圍墓卦。
●?表空間(Tablespaces):數(shù)據(jù)庫被分成稱為表空間的邏輯存儲(chǔ)單元。?表空間是段的邏輯容器户敬。?每個(gè)表空間至少包含一個(gè)數(shù)據(jù)文件落剪。
下圖說明了表空間中的段,范圍和數(shù)據(jù)塊:
下圖顯示了邏輯和物理存儲(chǔ)結(jié)構(gòu)之間的關(guān)系:
2.Oracle實(shí)例
Oracle實(shí)例是客戶端應(yīng)用程序(用戶)和數(shù)據(jù)庫之間的接口著榴。Oracle實(shí)例由三個(gè)主要部分組成:系統(tǒng)全局區(qū)(SGA),程序全局區(qū)(PGA)和后臺(tái)進(jìn)程屁倔。如下圖所示 :
SGA是實(shí)例啟動(dòng)時(shí)分配的共享內(nèi)存結(jié)構(gòu),關(guān)閉時(shí)釋放锐借。?SGA是一組包含一個(gè)數(shù)據(jù)庫實(shí)例的數(shù)據(jù)和控制信息的共享內(nèi)存結(jié)構(gòu)问麸。
不同于所有進(jìn)程都可用的SGA,PGA是會(huì)話開始時(shí)為每個(gè)會(huì)話分配的私有內(nèi)存區(qū)钞翔,當(dāng)會(huì)話結(jié)束時(shí)釋放严卖。
主要的Oracle數(shù)據(jù)庫的后臺(tái)進(jìn)程
以下是Oracle實(shí)例的主要后臺(tái)進(jìn)程:
? ?● PMON是Oracle數(shù)據(jù)庫中最活躍的一個(gè)進(jìn)程,是調(diào)節(jié)所有其他進(jìn)程的進(jìn)程監(jiān)視器布轿。PMON能夠清理異常連接的數(shù)據(jù)庫連接哮笆,并自動(dòng)向偵聽器進(jìn)程注冊數(shù)據(jù)庫實(shí)例。
? ?● SMON?是執(zhí)行系統(tǒng)級(jí)清理操作的系統(tǒng)監(jiān)視進(jìn)程汰扭。它有兩個(gè)主要職責(zé)稠肘,包括在發(fā)生故障的情況下自動(dòng)恢復(fù)實(shí)例,例如斷電和清理臨時(shí)文件萝毛。
● DBWn?是數(shù)據(jù)庫編寫器项阴。Oracle在內(nèi)存中執(zhí)行每個(gè)操作而不是磁盤。因?yàn)樵趦?nèi)存中的處理速度比在磁盤上快笆包。DBWn進(jìn)程從磁盤讀取數(shù)據(jù)并將其寫回到磁盤环揽。?一個(gè)Oracle實(shí)例有許多數(shù)據(jù)庫編寫器略荡,如:DBW0,DBW1歉胶,DBW2等等汛兜。
? ?● CKPT?是檢查點(diǎn)過程。?在Oracle中跨扮,磁盤上的數(shù)據(jù)稱為塊序无,內(nèi)存中的數(shù)據(jù)稱為緩沖區(qū)验毡。?當(dāng)該塊寫入緩沖區(qū)并更改時(shí)衡创,緩沖區(qū)變臟,需要將其寫入磁盤晶通。CKPT進(jìn)程使用檢查點(diǎn)信息更新控制和數(shù)據(jù)文件頭璃氢,并向臟盤寫入臟緩沖區(qū)的信號(hào)。?請(qǐng)注意狮辽,Oracle?12c允許全面和增量檢查點(diǎn)一也。
● LGWR?是日志寫入過程,是可恢復(fù)架構(gòu)的關(guān)鍵喉脖。?在數(shù)據(jù)庫中發(fā)生的每一個(gè)變化都被寫出到一個(gè)名為redo日志文件中用于恢復(fù)目的椰苟。?而這些變化是由LGWR進(jìn)程編寫和記錄的。?LGWR進(jìn)程首先將更改寫入內(nèi)存树叽,然后將磁盤寫入重做日志舆蝴,然后將其用于恢復(fù)。
● ARCn?是歸檔進(jìn)程题诵,它將重做日志的內(nèi)容復(fù)制到歸檔重做日志文件洁仗。存檔程序進(jìn)程可以有多個(gè)進(jìn)程,如:ARC0性锭,ARC1和ARC3赠潦,允許存檔程序?qū)懭攵鄠€(gè)目標(biāo),如D:驅(qū)動(dòng)器草冈,E:驅(qū)動(dòng)器或其他存儲(chǔ)她奥。
? ?● MMON?是收集性能指標(biāo)的可管理性監(jiān)控流程。
? ?● MMAN?是自動(dòng)管理Oracle數(shù)據(jù)庫內(nèi)存的內(nèi)存管理器怎棱。
? ?● LREG?是監(jiān)聽器注冊過程哩俭,它使用Oracle?Net?Listener?在數(shù)據(jù)庫實(shí)例和調(diào)度程序進(jìn)程上注冊信息。