數(shù)據(jù)庫(kù)結(jié)構(gòu)(一).體系結(jié)構(gòu)
?
?
一、數(shù)據(jù)庫(kù)體系結(jié)構(gòu)
?
??? Oracle在Unix/Linux上體現(xiàn)為多個(gè)不同的操作系統(tǒng)進(jìn)程,每個(gè)進(jìn)程負(fù)責(zé)一個(gè)主要功能。而在Windows系統(tǒng)上,Oracle實(shí)現(xiàn)為一個(gè)多線程的進(jìn)程。
?
??? 首先要分清實(shí)例(Oracle Instance)和數(shù)據(jù)庫(kù)(Oracle Database)的區(qū)別:
?
??? 數(shù)據(jù)庫(kù):是操作系統(tǒng)中相應(yīng)的文件或磁盤的集合。
??? 實(shí)例:一組Oracle后臺(tái)進(jìn)程/線程以及一個(gè)共享內(nèi)存區(qū),這些內(nèi)存由所有進(jìn)程/線程所共享。
?
??? 簡(jiǎn)單得說(shuō):實(shí)例就是一組系統(tǒng)進(jìn)程/線程以及一些內(nèi)存,這些進(jìn)程可以操作數(shù)據(jù)庫(kù);而數(shù)據(jù)庫(kù)只是一個(gè)文件集合(包括數(shù)據(jù)文件、臨時(shí)文件、重做日志文件、控制文件等)。一個(gè)實(shí)例在同一時(shí)刻只能控制一個(gè)數(shù)據(jù)庫(kù);相對(duì)的,一個(gè)數(shù)據(jù)庫(kù)在絕大部分情況下也只能由一個(gè)實(shí)例操作(除了RAC-Real Application Clusters)。
?
??? 實(shí)例的啟動(dòng):startup (nomount)
??? 數(shù)據(jù)庫(kù)的創(chuàng)建:create database
?
??? 一個(gè)instance在其生命周期中只能打開(kāi)一個(gè)database
??? SQL> alter database close;
??? Database altered.
??? SQL> alter database open;
??? ORA-16196:database has been previously opened and closed
?
??? 數(shù)據(jù)庫(kù)和實(shí)例的簡(jiǎn)單關(guān)系如下圖:
?
??? SGA:系統(tǒng)全局區(qū)(Oracle的一個(gè)最大內(nèi)存塊)
?
??? 作用:
??????? 1、維護(hù)所有進(jìn)程需要訪問(wèn)的多種內(nèi)部數(shù)據(jù)結(jié)構(gòu)
??????? 2、緩存磁盤上的數(shù)據(jù),并緩存重做數(shù)據(jù)寫入磁盤之前
??????? 3、保存已解析的SQL計(jì)劃
??????? 4、其他
?
?
二、連接Oracle
?
?
??? 用戶連接Oracle共有兩種方式,分別為:專用服務(wù)器連接(dedicated server)和共享服務(wù)器連接(shared server)。
?
??? 專用服務(wù)器連接:為每一個(gè)連接分配一個(gè)進(jìn)程/線程
??? 共享服務(wù)器連接:又稱多線程服務(wù)器(Multi-Threaded Server),用戶通過(guò)調(diào)度器與Oracle連接,可減少進(jìn)程/線程數(shù),提高系統(tǒng)資源利用效率。
?
??? 如圖:
?
??? 看一下加上調(diào)度器和連接服務(wù)后的圖:
?
?
?
三、Oracle詳細(xì)工作流圖(摘自zhouwf)
?
?