oracle體系結構--實例

 

 

 

實例SID:


內存結構加上後臺進程構成,是訪問數據庫的一種途徑

內存結構加上後臺進程構成,是訪問數據庫的一種途徑
作數據恢復時,利用第三方工具,不須要訪問實例,其他都要訪問實例
使用ode,模擬SID直接訪問咱們的磁盤 ,通常用做數據恢復,稱爲災難恢復
 java

1、user process:

 


用戶經常使用的鏈接數據庫的工具:
sqlplus
plsqldeveloper
sqldeveloper
toad
spoolit
oracle工做站
應用程序


用戶進程經過兩種鏈接途徑去訪問咱們的數據庫

本地鏈接: IPC表示進程間的通訊
網絡鏈接 :TCP/IP協議 須要配置監聽即listener,沒有listener用戶沒法訪問


 算法

2、server process


用戶鏈接後,須要咱們的服務器進程去響應
專有鏈接:用戶進程和服務器進程的關係是一對一的關係
共享鏈接 :一個用戶鏈接進來,哪個服務器進程空閒就去接待用戶,是一對多的關係
最多隻能分配1023個進程


 sql

3、PGA 特殊的內存區域

 


program global area----程序全局區域
private golbal area ---- 私有全局區域
主要用來存放用戶進程信息/服務進程信息

當用戶進程和服務器進程信息鏈接後,自動分配一個PGA區域用來存放用戶進程信息和服務器進程信息,其餘用戶經過工具連建後,又給他分配另一個PGA區域。--------------進程之間的PGA是隔離開的

PGA--存放的信息
會話信息:用戶的會話信息
操做信息: 用戶執行的操做 包括SQL/PLSQL
鏈接工具:用戶在鏈接的時候,使用的是什麼工具鏈接,主機名

PGA的層次:
stack space -----堆棧空間:用戶聲明的變量,常量,數據類型,遊標
session information------經過兩個視圖能夠查看v$session , v$process
用戶名,鏈接工具,主機名,ip地址,操做,用戶進程號
sort area ------排序區域:用戶使用了sql/plsql 中的order by /union 等排序操做時,都在這個區域排,佔用了 PGA70%的空間,一旦空間不夠,就會到名詞表空間(磁盤)裏面排,會大大下降數據庫的性能,通常的優化都是優化這裏。
hash area-------分區表中使用的hash算法,都在這個區域完成
UGA ---(session information+sort area+hash area)---用戶全局區域,存放用戶的信息。裏面存放的是專有鏈接的用戶,若是用戶使用的是共享鏈接,則用戶信息(session information+sort area+hash area)存放到SGA即用戶的中

pga_aggregate_terget 設置PGA 的大小
 數據庫

4、SGA:

 


system global area:系統全局區域
shared global area:共享全局區域

sga_target ---設置SGA 的大小,受限與max_sga_size

SGA層次:
1.shared pool---共享池:共享用戶的信息,用戶共享的會話信息,用戶共享的sql/plsql信息,共享數據字典的信息 ,權限,對象,數據文件,塊信息。 ---最近常常使用的信息纔會共享到shared pool中
1.1 libary cache----庫高速緩衝區:用戶常常使用的sql,plsql的執行計劃
1.1.1 sql共享區:最近常常使用的sql執行計劃
1.1.2 plsql共享區 :最近常常使用的plsql執行計劃
#軟分析:語句在執行過程當中在libary cache 中能找到相同的執行計劃,這是語句執行走軟分析
#硬分析:語句在執行過程當中在libary cache 中能找不到相同的執行計劃,這是語句執行走硬分析(硬分析過程a、驗證語句的語法是否正確 ;b、驗證語句的語義是否正確(驗證用戶是否有權限,是否有該對象,數據類型是否正確);c、經過oracle優化器獲得最優的執行計劃(rbo/cbo 優化器);d、再根據執行計劃執行語句;e、將結果返回給用戶進程;)

dbms_shared_pool.keep //若是執行計劃比較大並且會常常使用,可以使執行計劃駐留

1.2data dict cache--- 字典緩衝區:常常要使用的數據字典信息(all_,user_,dba_.v$)
存放 對象名,對象列名,列數據類型,數據文件的編號,數據塊編號,用戶的權限信息....
通常命中 率在 90%,嚴格要求的命中率在95%,若是沒有找到,則把字典信息從磁盤取到內存中
1.3 control structuer---控制結構 :控制shared pool中的爭用
內存鎖 (lanch)

# shared pool size ---11g之前須要設置共享池的大小

2.database buffer cache ---數據高速緩衝區:最近常常使用的數據塊 (遵循lru的算法,即最近常常使用)
2.1按照駐留時間的不一樣分配的
2.1.1 keep:永遠放到內存中,除非手動刷新內存,或者內存被釋放(數據庫重啓,停機)
db_keep_cache_size 設置後,纔會使用該區域 默認放到db_cache_size
2.1.2 default: lru 最近常常使用
2.1.3 recycle:用戶操做執行完後,很快被移出內存
db_recycle_cache_size
3.redo log buffer ----日誌緩衝區: 記錄data buffer cache中數據塊的更改信息
記錄的DML,部分的DDL 操做
loging 強制日誌記錄,加上這個參數纔會記錄
nologin 不進行日誌記錄 ,默認不記錄
由show parameter log_buffer 決定日誌大小,不能設置太大,由於太大在項目中還將來得及寫入到日誌文件中時,日誌緩衝區中的內容丟失會致使咱們丟數據。項目中日誌緩衝區不要超過100M
4.large pool ---大池:
rman 備份信息
uga 共享鏈接用戶的session information+sort area+hash area信息
large_pool_size 設置大小
5. java pool-----java 池:
java 相關的應用程序和鏈接信息
java_pool_size 設置大小
6.stream pool:流池
流複製 有丟數據的可能,只能在oracle數據庫中同步,不一樣城市間的同步會有延時

steam pool已被替代 goldengate:ogg 將多個數據庫實現時時同步

7.other pool --其餘池
沒有地方放了,就放other pool服務器

相關文章
相關標籤/搜索