Oracle的體繫結構

來源:互聯網
上載者:User

標籤:blog   http   ar   使用   sp   strong   檔案   資料   on   

前言

這個章節主要想說的是Oracle的體繫結構,這個也是理論強些。還有一些比較理論的知識點(比如資料表空間啊),就暫時先不寫了,下一章節開始進入Oracle的操作階段,比如表的查詢啊、插入以及重點是和SQL 2005的一些區別和Oracle中特有的命令。

希望大家繼續捧場。

 Oracle體繫結構分類

我們應該知道的是在Oracle資料庫的體繫結構包括以下四種結構:

那下面我比較粗略的說以下結構包括什麼!~

一。實體儲存體結構

顧名思義,Oracle資料庫在物理是由儲存在磁碟中的作業系統檔案所組成的,能被我們看見的檔案。Oracle 資料庫在物理上主要有3種類型的檔案組成,分別是資料檔案(*.dbf)、控制檔案(*.ctl)、記錄檔(*.log)

資料檔案(Data File):指儲存資料庫資料的檔案,也就是我們平時建立的資料庫。比如表中的記錄、索引都儲存在資料檔案中。我們需要注意的時候,使用者在讀取資料的時候,如果使用者讀取的資料不在緩衝區(就像我們作業系統也有一個緩衝,在電腦中 為了提高系統的效能,把一些常用的資料放在記憶體中),那麼就從資料庫中讀取出來,放到記憶體中去。儲存資料的時候,也是先把資料儲存到緩衝區中,然後再後台進程DBWn講資料寫入到資料檔案中。

我們可以通過dba_data_files資料字典(資料字典就是儲存一些系統資料)資料檔案的狀態。有一些欄位解釋一下:

Blocks:資料檔案所佔用的資料區塊數

autoextensible:資料檔案是否允許擴充

tablespace_name:資料檔案對應的資料表空間名

控制檔案(Control File):是一個二進位檔案,用來描述資料庫的物理結構。主要存放著資料庫中的資料檔案和記錄檔資訊。如果在使用Oracle過程中,損壞了控制檔案,那麼資料庫將無法正常工作。

Oracle一般會預設建立3個包含相同資訊的控制檔案,目的是為了當其中一個受損時,可以調用其他控制檔案來繼續工作。

記錄檔(Log file):是記錄資料庫中所修改資訊的檔案,保證資料庫安全,也可以實現資料的備份與恢複。

如果status位current表名系統正在使用該欄位對應的記錄檔。如果是inactive,則沒有使用。

當一個記錄檔組的空間被佔用完了之後,Oracle系統會自動轉換到另一個記錄檔組。不過,也可以使用alter system swithch logfile 進行手動切換

其他檔案

當然,除了上面的之外 還有其他的一些檔案。

參數檔案:記錄Oracle資料庫的基本資料,比如資料庫名和控制檔案所在的路徑等。

備份檔案:可以藉助備份檔案對受損檔案進行備份

歸檔重做記錄檔:對寫滿的記錄檔進行複製並儲存

警告、追蹤記錄檔檔案:如果一個進程發現了一個內部錯誤時,可以將關於錯誤的資訊儲存到它的追蹤檔案中。

二。邏輯儲存結構

Oracle資料庫的資料表空間從邏輯儲存結構上來說,包括資料表空間、段、區和資料快。他們之間的關係是多個資料庫組成一個區,多個區組成一個段,多個段組成一個資料表空間,多個資料表空間組成資料庫,所以圖如下:

①資料表空間:Oralce中,最大的邏輯儲存結構是資料表空間(tablespace)。資料表空間和物理上的資料檔案相對應。具體 下面詳解。②段(Segment)是一組盤區,這組盤區組成了被Oracle視為一個單位的資料庫物件,比如表或索引 。因此,段是資料庫終端使用者將處理的最小單位。

分為5中段:

資料區段:儲存表中資料。

索引段:儲存表中所有索引。

臨時段:儲存臨時資料。

LOB段:用於儲存表中的大型資料對象。

回退段:用於儲存使用者資料被修改之前的值。

③區:Oracle中,區是磁碟空間分配的最小單位。

段的增大是通過增加區的個數來實現的,在個數並非是沒有限制的。建立段的時候,可以使用Min_extents和Max_extents來定義區的個數。

④塊(Block)是用來管理儲存空間的最基本單位,也是最小的邏輯儲存單位。

在建立Oracle資料庫時,初始化參數DB_BLOCK_SIZE用來指定一個資料庫的大小。資料庫建立之後,無法修改資料庫的大小。比如:

資料區塊的結構如下:

塊頭部:資料庫中的一搬性資訊,比如資料庫的物理地址。

表目錄:儲存表的資訊。

行目錄:儲存資料庫中有效行資訊。

空閑空間:還沒有使用的儲存空間。

行空間:儲存表或索引的資料。

三。記憶體結構

當使用者發出一條SQL命令時,伺服器處理序會對這條SQL語句進行文法分析並執行它,然後將使用者所需要的資料從磁碟的資料檔案中讀取出來,存放在系統全域區中的資料緩衝區中。如果使用者進程對緩衝區中的資料進行了修改,則修改後的資料將由資料庫寫入進程DBWn希爾磁碟資料檔案中。

按照系統對記憶體的使用方法不同,Oracle資料庫的記憶體分為以下幾部分:

①系統全域區(SGA)

是Oracle位系統分配的一組可共用的一組共用的記憶體結構,可以保護一個資料執行個體的資料或控制資訊。系統全域區按照作用的不同可以分為:

  • 資料緩衝區

       用於儲存從磁碟資料檔案中讀取的資料,供所有使用者共用。

  • 日誌緩衝區

    用於儲存資料庫的修改操作資訊。

     

  • 共用池

        共用池用來儲存最近執行的SQL語句、PL/SQL程式的資料字典資訊,它是對SQL語句和PL/SQL程式進行文法分析、編譯和執行的記憶體地區。

        共用池的大小由shared_pool_size 確定。

②程式全域區(Program Global Area,PGA)

是包含單個使用者或伺服器資料和控制資訊的記憶體地區,它在使用者進程串連到Oracle資料庫並建立一個會話是,由Oracle自動分配。

③排序區(Sort Area)

是Oracle系統為排序操作所產生的臨時資料提供的記憶體空間。

④大池(Large Pool)

提供一個大的緩衝區供資料庫的備份與恢複操作使用。

四。執行個體進程結構

① DBWn(DataBase Write,資料庫寫入)進程是賦值管理資料緩衝區的後台進程,用於將緩衝區中的資料寫入到資料檔案。

②LGWR(Log Write,日誌寫入)進程是負責管理日誌緩衝區的一個後天進程,用於將日誌緩衝區中的日誌資料寫入磁碟的記錄檔。

③CKPT(Check Point)進程儲存所有修改過的資料緩衝區中的資料都被寫入磁碟資料檔案中。

預設情況是1800秒。

④SMON(System Monitor)進程:用於在執行個體啟動時執行執行個體恢複,並負責清理不在使用的臨時段。

⑤PMON(Process Monitor)進程:用於在使用者進程出現故障時執行恢複操作。

⑥ARCn(Archive Process,歸檔):將寫滿記錄檔複製到歸檔記錄檔中。

⑦RECO (Recovery)進程:用在分散式資料庫系統中,用於自動解決在分散式資料庫中出現的事物故障。

⑧LCKn(Lock)進程:存在於並行伺服器系統中,用於實現多個執行個體間的封鎖。

⑨Dnnn(Dispatchers)進程:存在於多線程伺服器體繫結構中,用於將使用者進程串連到伺服器處理序中。

五。資料字典

在我的這篇和前篇文章用到了很多資料字典(是oracle資料庫用來存貯資料庫結構資訊的地方)。這個很有用,網上資料也很多!~~

Oracle的資料字典-----Brad Miller

 

轉載自:http://www.cnblogs.com/damonlan/archive/2012/07/27/2604132.html

Oracle的體繫結構

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.