中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle 數據庫 體系結構 (二):服務器結構

發布時間:2020-04-06 22:48:57 來源:網絡 閱讀:1006 作者:安享落幕 欄目:關系型數據庫

目錄

  • 前言
  • Oracle 內存結構
  • Oracle 進程結構
  • 文章總結

前言

  • 上一篇文章體現了 Oracle 數據庫的一些基本結構和存儲結構,這篇文章將會講到Oracle的服務器結構,實際上就是主要講實例的結構。需要把這些底層的結構了解,在生產環境或是對Oracle才會有一些了解。
  • Oracle服務器是由Oracle實例+Oracle數據庫組成。
  • Oracle實例是有SGA+后臺進程組成。 每一個Oracle實例都有自己的SGA和獨立的Oracle進程集。

Oracle 內存結構

Oracle 數據庫 體系結構 (二):服務器結構
以上圖很好說明了內存的結構,下面將會詳細介紹內存結構。


內存結構是Oracle數據庫體系中最為重要的一部分,數據庫實例啟動時,Oracle數據庫會分配內存區并啟動后臺進程。
Oracle內存存儲的主要內容有:

  • 程序代碼(PL/SQL、Java);
  • 關于已經鏈接的會話的信息,包括當前所有活動非活動的會話;
  • 程序運行時必須的相關信息,如查詢計劃;
  • Oracle 進程之間的通信和共享的信息,如:鎖。

Oracle內存結構包含:

1·系統全局區 (SGA):Oracle啟動實例時分配系統全局區
2·程序全局去 (PGA):當服務器啟動時分配程序全局區
3·用戶全局區 (UGA):用戶全局區為用戶存儲會話狀態

Oracle 數據庫 體系結構 (二):服務器結構

系統全局區(SGA)

系統全局區 (SGA):數據庫信息存儲于系統全局區,由多個數據庫共享。是占用服務器內存最大的一個區域,是影響數據庫最重要的一個指標,和后臺進程組成了Oracle實例。

系統全局區 (SGA)的組成:

* 共享池 (含:庫高速緩存、數據高速字典緩存);
* 數據高速緩存;
* 重做日志緩沖區;
* Java池;
* 大緩沖區。

Oracle 數據庫 體系結構 (二):服務器結構

共享池:是對SQL、PLSQL程序進程語法分析、編譯、執行的內存區域。是由兩個關鍵內存結構組成,分別是:
1·庫高速緩存:存儲最近解析使用的 SQL和PL/SQL語句信息。Oracle 在執行用戶進程提交的各種SQL語句前要對進行解析(包括語法解析、對象確認、權限判斷、操作優化等)并生產執行計劃,占用一定的系統資源。
2·數據字典高速緩存:最近使用對象定義的集合,包括數據文件、表、索引、列、用戶、權限、和數據庫對象的信息。


數據高速緩存區:可以加快訪問速度,把一些經常用到的都放到緩存區,因為數據庫的目的除了安全還有就是訪問效率。服務器進程將讀入的數據保存在數據緩沖區中,當后續請求需要這些數據就在內存中找到,不需要從磁盤讀取。所有用戶共享。由三個池組成:1·默認池, 2·保持池(存放常用的數據) 3·回收池(存放不常使用的數據存),通過LRU算法管理。
LRU算法管理:它的原理是把常用的數據保留在池中,不常用的數據就退回去。


重做日志緩沖區:錄所有的關于數據庫的變化,當執行DML,如:updata、delete、insert或create、alter、drop等語句時,Oracle都會為這些操作生產重做記錄,作用是:主要用于數據庫恢復、改變的數據都要依賴于redo日志條目。
Oracle 數據庫 體系結構 (二):服務器結構


大緩沖區:用于需要大內存操作提供相對獨立的內存空間,以便提高性能,大池是可選的內存結構,DBA可以決定是否需要在SGA中創建大池,比如:數據庫備份和恢復、大量排序的SQL語句、并行化的數據庫操作。


Java池:在安裝Java程序時必須設置Java池,編譯Java語言寫的指令。


SQL> show sga; ----------------(查看 系統全局區 SGA 大小)

Total System Global Area 1593835520 bytes
Fixed Size          8793256 bytes
Variable Size         905970520 bytes
Database Buffers      671088640 bytes
Redo Buffers            7983104 bytes

程序全局區(PGA)

當服務器啟動時分配的全局區,就是Oracle服務器啟動時需要占用的內存!

  • 它包含單個服務器進程所需的數據和控制信息
  • 是在用戶進程連接到數據庫并創建一個會話時自動分配的,保持每個與Oracle數據庫連接的用戶進程所需的信息
  • PGA為非共享區,只能單個進程使用,當一個用戶會話結束,PGA釋放。

用戶全局區(UGA)

  • 用戶進程存儲會話狀態,就是你用哪個用戶登陸,會存儲一些用戶的狀態!
  • UGA可以作為PGA于SGA的一部分,具體位子取決于如何連接Oracle:若通過一個共享服務器連接,UGA包含在SGA中;若是通過一個專有服務器連接Oracle,UGA包含在專有服務器PGA中

Oracle 進程結構

Oracle 實例有以下幾種進程:

* 用戶進程
* 服務器進程
* 后臺進程

Oracle 數據庫 體系結構 (二):服務器結構


用戶進程

用戶進程是一個需要與Oracle服務器進行交互的程序。當用戶運行一個程序準備向數據庫服務器發送請求時,即創建了用戶進程!

服務器進程

服務器進程是用于處理連接該實例的用戶進程的請求。當用戶連接到Oracle實例創建會話時,創建的服務器進程!

后臺進程

  • 后臺進程是Oracle數據庫為了保持系統最佳系統性能和協調多個用戶請求而設置的。Oracle實例啟動時則創建一系列的后臺進程!
  • 后臺進程使數據庫的內存結構和數據庫物理結構之間協調工作。
    Oracle 數據庫 體系結構 (二):服務器結構
  • 后臺進程必須啟動的5個進程分別是:DBWR、LGWR、PMON、SMON、CKPT。

PMON 進程監控進程:

* 清理出現故障的進程;
* 釋放當前所有掛載的鎖定;
* 釋放故障進程使用的資源。

SMON 系統監控進程:

* 在實例失敗后,重新打開數據庫時自動恢復實例;
* 整理數據文件的自由空間,將相鄰空間結合起來;
* 釋放不再使用的臨時段。

DBWR 數據寫入進程:

* 管理數據緩沖區,將最近使用過的塊保留在內存中;
* 將修改后的緩沖區數據寫入數據文件中。

LGWR 日志寫入進程:

* 負責將日志緩沖區的日志數據寫入日志文件;
* 系統有多個日志文件,該進程以循環的方式將數據寫入文件。

CKPT 校驗進程:

* 從檢查點隊列上掃描臟數據塊,并將這些臟數據塊寫入數據文件中;
* 檢查點隊列上的buffer header 是按照數據塊第一次被臟的時間先后順序來排列的;
* 越早修改的數據塊的buffer header排在越前面;
* 同時如果一個數據塊被修改了多次的話,在該鏈表上也只出現一次。

總結

Oracle 數據庫 體系結構 (二):服務器結構

太多的理論,還需要用圖來理解記憶!所以總結就用一張圖來表示。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阳东县| 富川| 宿迁市| 新津县| 扎囊县| 石景山区| 南宫市| 科技| 桂平市| 竹山县| 临城县| 武鸣县| 搜索| 来宾市| 金华市| 梁平县| 闻喜县| 南召县| 靖边县| 台中县| 阜阳市| 安丘市| 娱乐| 安新县| 舒兰市| 烟台市| 应城市| 赤壁市| 桂平市| 武胜县| 阳信县| 肥东县| 长宁区| 台中县| 康马县| 信宜市| 温州市| 民和| 江源县| 仁布县| 临邑县|