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