oracle 體系_第一章實例與數據庫(11G)


1 oracle 的基礎架構及應用環境
php

圖片.png

oracle的基本組成結構java

  1. oracle server =由數據庫+實例組成
    node

  2. database = 數據文件+控制文件+redo 日誌組成linux

  3. oralce 內存調度= SGA+PGA組成web

  4. oracle 實例= SGA +後臺進程組成算法


系統全局SGA    
sql

1.在一個instance只有一個SGA ,一個系統能夠有多個實例。故一個系統能夠有不一樣的SGA
數據庫

2.SGA 內存爲全部oracle 客戶端生成的session 共享,隨着實例的啓動而分配,實例關閉,SGA 內網將被釋放apache

數據庫
緩存


2 SGA的基本組件

  1. shared pool (共享池)

   共享池是對sql,pl/sql 程序進行語法分析,編譯執行的內存區域。

   共享池由庫緩存(library cache)和數據字典緩存(data dictionary cache )以及結果緩存(result cache)組成

   共享池的大小直接影響數據庫的性能。

    共享池中的幾個概念

    庫緩存:庫緩存是sql和plsql的解析場所,存放sql、plsql語句代碼,以及他們的執行計劃。以備其餘用戶共享

    數據字典緩存。主要存放的是數據字典信息。以備其餘用戶使用

    結果緩存:存放的是之前執行過的sql的結果集和PL/sql 函數返回值

    user global area(UGA)

    存放服務器端的sql結果集及pl/SQL 函數返回值

    共享服務器鏈接模式下 若是沒有配置large pool 則UGA 數據SGA的shared pool ,專用鏈接模式時UGA 屬於PGA

 

 2 database buffer cache

 用戶存儲從磁盤數據文件中讀入的數據,爲全部用戶共享。

 服務器進程server process 負責將數據文件的數據,從磁盤讀入到數據緩衝區,當後續的請求須要在這些數據時若是在內存中找

 到,則不須要再從磁盤中讀取。

 數據緩衝區中被修改的數據庫(髒塊) 由後臺進程DBWR 將其寫入磁盤。

 數據緩衝區的大小對數據庫的讀取速度有直接的影響。

 database buffer cache中的幾個cache概念

 buffer pool = (default pool) + (nodefault pool)


其中:

default pool 是標準塊存放的內存空間大小,SGA 自動管理時此參數不用設置,使用LRU 算法清理空間

nodefault pool 對應的參數有

    DB_nk_cache_size 指定非標準塊大小的內存空間,好比2k 4k 16k 32k

    DB_keep_caceh_size   存放常常訪問的小表或索引等。

    DB_recycle_cace_size 與keep相反,存放偶爾作全表掃描的大表數據。



  能夠將固定某個表調入到 nodefault pool中

  alter table scott.emp1 storage(buffer_pool keep)


可使用命令進行查看

select segment_name,buffer_pool from dba_segments where segment_name='EMP1';



圖片.png


   emp1 表保存了兩份,一份是在存儲上,一份是在內存裏


 default pool 對應的參數是DB_cache_size 與標準塊default block 是配套的,若是default block是8k,DB_cache_size 這個參數將

代替db_8k_cache_size

 若是要創建非標準塊的表空間,先前要設定db buffer中的與之對應的db_nk_cache_size 參數


SQL> alter system set db_16k_cache_size=8m;

SQL> create tablespace tbs_16k datafile '/u01/oradata/prod/tbs16k01.dbf' size 10m blocksize 16k;

SQL> select TABLESPACE_NAME,block_size from dba_tablespaces;



圖片.png


3  redo log buffer

 以日誌條方式記錄數據庫的全部修改信息包括DML 和DDL ,目的是爲了數據庫恢復,日誌條目首先產生於

日誌緩衝區,日誌緩衝區較小,通常缺省在3M-15M 之間,它是以本身爲單位的

日誌緩衝區的大小啓動後是固定不變的,若是調整隻能經過修改參數文件後從新啓動生效,不能動態修改,

不能由SGA 自動管理


4 large pool (可選)

爲了進行大的後臺進程操做而分配的內存空間,主要用戶共享服務器的session memroy  rman 備份恢復以及並行查詢等操做,有助於下降shared pool 碎片

5 java pool

 爲了java虛擬機及應用而分配的內存空間,包含全部session指定的java代碼和數據

6.stream pool

爲了stream process 而分配的 內存空間,stream技術是爲了在不一樣數據庫之間共享數據,所以它只對使用了stream 數據庫特性的系統是重要的。



3 oracle 的進程


user process;

客戶端的的進程,訪問數據庫分爲三種形式,1.sql plus 2.應用程序 3 web方式(em)


server process

服務器器端的進程,user process 不能直接訪問oracle,必須經過相應的server process 訪問實例,進而訪問數據庫

linux 下命令 能夠查看

ps -ef | grep LOCA

圖片.png


在linux能夠看到的server process l(local=yes)是本地鏈接,(local=no) 是遠程鏈接

能夠在oracle 查看V$process 視圖,它包含了當前全部的後臺進程和服務器進程


select pid,program,background from v$process ;

圖片.png


background  字段爲1是 background process 其餘都是服務器進程


基本的後臺進程有


smon:系統監控進程,當實列崩潰後,oracle會自動恢復實列,釋放再也不使用的臨時短

pmon:進程監控,當用戶進程失敗時,清理出現故障的進程,釋放全部當前被掛起的鎖定,釋放服務器使用的資源,監控空閒會話是否達到閾值,動態註冊監聽

dbwr :數據寫入進程,將變動的數據緩衝區的髒buffer 寫入數據文件中,釋放數據緩衝區空間。能夠有多個進程

在如下狀況觸發dbwn 寫入數據文件1.檢查點發生,2內存髒塊達到閾值,3.db_buffer 自由空間不夠時 4.表空脫機在線備份時

lgwr:寫日誌條目,將日誌緩衝區中的日誌條目寫入日誌文件中。lgwer 只有一個工做進程

在如下狀況下會觸發LGWR 進程.1,commit 2.logbuffer 三分之一滿。3.檢查點發生時,先於dbwr寫入日誌文件 四、時間到達3秒

ckpt:生成檢查點,通知dbwr寫入髒塊 檢查點有三種

  1. 徹底檢查點:保證數據庫一致性

  2. 增量檢查點:不斷更新控制文件中的檢查點位置,當發生實例崩潰時,能夠儘可能縮短實例恢復的時間。

  3. 局部檢查點:特定的操做下針對某個空間

arcn 歸檔當前日誌:歸檔模式下,把當前日誌組的內容寫入歸檔日誌,做爲歷史日誌提供數據庫的recovery


4 PGA 的基本組件


program global area (程序全局區)的做用

緩存來自服務器進程和後臺進程的數據和控制信息

提供排序,hash鏈接

pga在進程建立時被分配,進程終止時被釋放,全部進程的pga之和構成了pga的大小 。



pga的結構

圖片.png

sql 工做區:有幾個子區,1.sort area,2.harh area 3,bitmap merge area

做用排序操做,多表鏈接,位圖鏈接,建立位圖

會話空間   session memory

做用:存放logon信息等會話相關的控制信息

私有sql區域

做用:存儲server process 執行sql所須要的私有數據和控制結構,如綁定變量,它包括固定區域和運行是區域

遊標區域 plsql 遊標使用就是這塊區域


5 數據庫的鏈接方式


專用鏈接模式(dedicated )

對於客戶端的每一個user process 服務器端都會出現一個server porcess ,會話與專用服務器之間存在一對一的映射。

專用鏈接的pga的古漢麗方式是私有的。oracle 缺省採用專用鏈接模式



共享鏈接池模式


多個user process 共享一個server process

  1. 共享服務器其實是一種鏈接池機制,鏈接池能夠重用已有的超時鏈接,服務器與其餘活動火花,單容易產生鎖等待,此種鏈接方式如今已經不多了

  2. 全部的調度進程共享一個公共的請求隊列,可是每一個進程都有本身的響應隊列

  3. 在共享服務中會話的UGA 存儲信息是在SGA 中,而不是想專用連接那個在pga中存儲信息,這是的pga的存儲結構爲堆棧空間


駐留池模式


適用於必須維持數據庫的永久連接,結合了專用服務器模式和共享服務器模式的特色,它使用連接代理,而不是專用服務器鏈接客戶機到數據庫,優勢是能夠用不多的內存

處理大量的併發鏈接,特別使用與apache 的php 應用環境

相關文章
相關標籤/搜索