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

溫馨提示×

溫馨提示×

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

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

Oracle體系結構分析

發布時間:2021-11-11 16:35:25 來源:億速云 閱讀:174 作者:iii 欄目:關系型數據庫

這篇文章主要講解了“Oracle體系結構分析”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Oracle體系結構分析”吧!

 一、什么是Oracle數據庫?

  眾所周知,Oracle DataBase是一款關系型數據庫管理系統(不了解何謂關系型數據庫的童鞋自行google,baidu),同類的產品還有mySql,sqlServer等,很多時候,我們會把那個承載我們核心數據的系統籠統地成為數據庫服務器,但從嚴格意義上來講Oracle DataBase是由兩個部分組成:  

Oracle體系結構分析

  實例:實例是數據庫啟動時初始化的一組進程和內存結構

  數據庫:數據庫則指的是用戶存儲數據的一些物理文件

  正因為如此我們一般才會說 關閉和啟動實例,加載卸載數據庫,就是這個道理。

  從實例和數據庫的概念上來看,我們能知道,實例暫時的,它不過是一組邏輯劃分的內存結構和進程結構,它會隨著數據庫的關閉而消失,而數據庫它其實就是一堆物理文件(控制文件,數據文件,日志文件等等),它是永久存在的(除非磁盤損壞)。數據庫和實例通常是一對一的,這種結構我們成為單實例體系結構;當然還有一些復雜的分布式的結構,一個數據庫可以對多個實例,像Oracle的RAC(有興趣的童鞋可以了解下)。

 二、交互流程

  下面是從網上找的一張圖,描述了單實例體系結構大致的交互流程    

 Oracle體系結構分析

  1.用戶和用戶進程交互

用戶進程可以是一般的客戶端軟件,像Oracle的sqlplus,sql developer,或者是一些驅動程序等等都屬于用戶進程。

2.用戶進程和服務器進程交互

  服務器進程有時會稱為前臺進程,當然是相對于后臺進程(后面會提到的數據庫寫入器,日志寫入器等)來說的,服務器進程的主要作用就是處理連接到當前實例的用戶進程的請求,對客戶端發來的sql進行執行并返回執行結果。在專有服務器結構中,用戶進程和服務器進程是一對一的,也就是說,當監聽程序監聽到客戶端來了一個請求,會為其分配一個對應的服務器進程。還有一種結構為共享服務器,這種結構就不是一個用戶進程對應一個服務器進程了,會通過調度程序進行協調處理,關于共享服務器連接,本文就不在贅述了。

3.服務器進程和實例進程交互

4.實例和數據庫進程交互

上面描述了一些我們在進行數據庫連接操作的時候,大致的交互流程是什么樣的。下面,我們就來看看Oracle 的實例內存結構

 三、實例內存結構和進程結構

  (由于內存結構和進程結構關系較緊密,進程會作用到對應的內存區域,比如數據庫寫入器作用到數據庫緩沖區緩存中,日志寫入器會作用到日志緩沖區,所以內存結構和進程結構會相互配合地進行描述)

  oracle實例內存結構由兩部分組成SGA(系統全局區)和PGA(用戶全局區)組成,SGA是一塊共享的內存區域,也是最大的一塊內存區域;PGA則是用戶會話專有的內存區域,每個會話在服務器端都有一塊專有的內存區域就是PGA。本文主要對SGA進行分析描述。SGA組成如下

  Oracle體系結構分析

數據庫緩沖區緩存&數據庫寫入器

  緩沖區緩存 是Oracle用來執行sql 的工作區域,在更新數據時,用戶會話不會直接去更新磁盤上的數據,想想,如果允許這么做,那么頻繁的磁盤IO對于系統性能的影響是毀滅性的。所以,實際的處理流程是這樣的:

1


SQL>alter system checkpoint;

  檢查點可強制DBWn寫入臟緩沖區,當數據庫崩潰后,由于大量臟緩沖區未寫入數據文件,在重新啟動時,需要由SMON進行實例恢復,實例恢復需要提取和應用重做日志記錄,提取的位置就是從上次檢查點發起的位置開始的(檢查點之前的數據已經被強制寫入到數據文件中去了),這個位置稱為RBA(redo byte address),CKPT會不斷將這個位置更新到控制文件中去(以確定實例恢復需要從哪兒開始提取日志記錄)。

MMON(Manageability Monitor)

  數據庫的自我監視和自我調整的支持進程。實例在運行中,會收集大量有關實例活動和性能的統計數據,這些數據會收集到SGA中,MMON定期從SGA中捕獲這些統計數據,并將其寫入到數據字典中,便于后續對這些快照進行分析。(默認情況,MMON每隔一個小時收集一次快照)

ARCn(Archiver

  歸檔進程,這個進程是可選的,如果數據庫配置為歸檔模式,這個進程就是必須的。所謂歸檔,就是將重做日志文件永久保存(生產庫一般都會配置為歸檔模式)到歸檔日志文件中。歸檔日志文件和重做日志文件作用是一樣的,只不過重做日志文件會不短被重寫,而歸檔日志文件則保留了關于數據更改的完整的歷史記錄。

至此,Oracle基礎的內存結構和進程結構我們已大概了解,來看下完成的進程和內存的交互情況,可以根據前面的理解將整個交互流程串聯一下。

Oracle體系結構分析

 四、Oracle存儲結構

  針對Oracle存儲結構將分別從物理存儲結構和邏輯存儲結構兩個維度來進行闡述。

物理存儲結構

    Oracle體系結構分析

所謂外部文件,意味著這些文件從嚴格意義上來講并不屬于Oracle數據庫的一部分。

控制文件:

  控制文件雖小,但作用重大,它包含指向數據庫其余部分的指針(包括重做日志文件,數據文件,歸檔日志文件等的位置),存儲重要的序列號和時間戳,存儲RMAN備份的詳細信息。控制文件一旦受損,那實例會立馬終止,一般對數據文件的保護采用多路復用機制,就是冗余多份在不同物理位置。

重做日志文件

  重做日志文件的作用在講解內存和進程結構的時候有提到過,重做日志按時間順序存儲應用于數據庫的一連串的變更向量(包含聯機重做日志文件和歸檔日志文件)。由SMON在數據庫啟動時自動執行的實例恢復 和 磁盤損壞所要求的提取備份恢復都會應用到重做日志進行相應的數據恢復

  重做日志文件也建議進行多路復用,一個數據庫至少要有兩組重做日志文件。一組供LGWR進行寫入,日志文件是固定大小,業務高峰期會很快寫滿,寫滿之后會切換到第二組上,在配置為歸檔模式的數據庫中,這時由歸檔進程(ARCn)開始將第一組的內容進行歸檔備份,如此循環地進行寫入和歸檔。需要注意的是,在歸檔進程還未對當前組的日志歸檔完畢前,是不允許LGWR對其進行重寫的。

數據文件

  數據文件存儲著實際的數據,DBWn會將數據庫緩沖區中的內容寫入到這類文件中去,數據文件的大小和數量是不受限制的。Oracle從10g開始,創建一個數據庫至少需要兩個數據文件,一個用于SYSTEM表空間,該表空間用來存儲數據字典;一個用于SYSAUX表空間,這個表空間用來存儲一些數據字典的輔助數據。

  數據文件由一個個的Oracle塊組成,這是Oracle的I/O基礎單元,與操作系統塊是不同的概念,Oracle塊要比操作系統塊大,這當然有處于性能的一些考慮,但我們考慮這樣一種情況,當用戶使用操作系統命令進行數據文件的備份的時候(假設1個Oracle塊=8個操作系統塊),已經復制了4個操作系統塊,然后CPU被DBWn搶占了,DBWn又重新對這個Oracle塊進行了更新,這時,當復制命令又得到了CPU時間去復制剩余的4個塊的時候,就造成了整個Oracle塊的數據不一致,所以,這也是在執行這種備份(用戶自行備份)的時候,需要做一些額外處理,比如將表空間置為備份模式的原因。當然,使用RMAN是不存在這樣的問題的,RMAN的備份機制是肯定可以得到數據一致的塊的。(這塊內容作了解即可)

  對于數據文件的保護,一般可進行定期備份,或者使用RAID也可以。

實例參數文件

  這個文件存儲了數據庫所需的一些參數設置,比如各個內存區域的大小,可允許的最大進程數,最大會話數,控制文件的位置,數據庫的名稱等等,參數文件也是實例啟動時首先要加載的文件。

口令文件

  一般稱為外部口令文件。一般的用戶名和口令是存放在數據字典中,不會存放在這個文件中。在一些特殊場景下,比如實例還未啟動,這時,我可能需要以管理員的身份登入系統去執行一些恢復或者啟動操作,然而此時,數據字典由于實例還沒啟動是不存在的,這時就需要外部口令文件進行用戶身份的驗證。

歸檔日志文件

  ARCn將聯機重做日志文件會備份歸檔到這類文件中去,歸檔日志文件保留了數據更改的完整歷史信息。

邏輯存儲結構

  Oracle將其物理結構從邏輯存儲結構中抽象出來,物理機構是系統管理員能看到的,邏輯結構則是用戶所能感知到的。比較典型的邏輯結構就是 "段"和"表空間"。

  段:

  段就是包含所有數據的邏輯結構,比較典型的段就是"表",稱為表段,還有索引段,撤銷段等等。

  表空間

    表空間從邏輯上是多個段的結合,在物理上是多個數據文件的集合,相當于在段和數據文件的對應中加入了一個中間層來解決這種多對多的關系。

  在早期的一些數據庫設計中,段和數據文件是一對一的關系,一個段一個數據文件,這種設計有很多弊端,首先,段的數量是不固定的,有可能一個系統中上千張表,那就得需要上千個數據文件,系統管理員要管理這么多文件肯定會抓狂的;還有一種情況就是某些歷史表可能特別大,大到底層系統對單個文件的限制,用一個數據文件去承載的話肯定是不行的。表空間則完美解決了這樣的問題。

  還有一些邏輯結構如區間和Oracle塊(Oracle塊前面有提到過,區間則為塊的集合),下面通過一張圖對Oracle的存儲結構進行整體的宏觀的認識,進一步加深些理解

   Oracle體系結構分析

感謝各位的閱讀,以上就是“Oracle體系結構分析”的內容了,經過本文的學習后,相信大家對Oracle體系結構分析這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

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

AI

忻州市| 宁津县| 长岭县| 内黄县| 名山县| 曲麻莱县| 调兵山市| 武川县| 呈贡县| 蕉岭县| 枞阳县| 综艺| 甘谷县| 汶川县| 玛多县| 瑞昌市| 甘肃省| 喀喇沁旗| 安乡县| 阿拉尔市| 奉贤区| 霞浦县| 纳雍县| 普格县| 甘洛县| 浪卡子县| 台东市| 屏东县| 札达县| 宁南县| 资溪县| 贵溪市| 北辰区| 永靖县| 南漳县| 新野县| 鄂伦春自治旗| 江都市| 山阳县| 四会市| 孟连|