Oracle資料庫簡介

來源:互聯網
上載者:User
Oracle資料庫簡介

一、介紹

Oracle資料庫系統是美國Oracle(甲骨文)公司提供的以分散式資料庫為核心的一組軟體產品,是目前最流行的客戶/伺服器(Client/Server,C/S)或瀏覽器/伺服器(Browser/Server,B/S)體繫結構的資料庫之一。

Oracle資料庫是目前世界上使用最為廣泛的資料庫管理系統,作為一個通用的資料庫系統,它具有完整的資料管理功能;作為一個關聯式資料庫,它是一個完備關係的產品;作為分散式資料庫它實現了分散式處理功能。

截止至2015年06月,Oracle資料庫最新版本為Oracle Database 12c。

二、特點

1、完整的資料管理功能: 資料的大量性 資料的儲存的持久性 資料的共用性 資料的可靠性

2、完備關係的產品: 資訊準則—關係型DBMS的所有資訊都應在邏輯上用一種方法,即表中的值顯式地表示 保證訪問的準則 視圖更新準則—只要形成視圖的表中的資料變化了,相應的視圖中的資料同時變化 資料物理性和邏輯性獨立準則

3、分散式處理功能:

Oracle資料庫自第5版起就提供了分散式處理能力,到第7版就有比較完善的分散式資料庫功能了,一個Oracle分散式資料庫由Oracler DBMS、sql*Net、SQL*CONNECT和其他非Oracle的關係型產品構成。

4、用ORACLE能輕鬆的實現資料倉儲的操作。

優點: 可用性強 可擴充性強 資料安全性強 穩定性強

三、Oracle體系架構

Oracle體繫結構包括很多基本組件,下面簡要介紹一下幾個常見組件。

1、Oracle Server(伺服器)

Oracle伺服器是最大的概念,包含多種檔案結構、進程結構和記憶體結構;但是,處理SQL語句時,並非所有這些結構都會用到。某些結構用於提高資料庫的效能,確保該資料庫在遇到軟體或硬體錯誤時可以恢複,或者執行維護該資料庫所需的其它任務。Oracle伺服器包含兩部分:Oracle Instance(執行個體)和Oracle Database(資料庫)。

2、Oracle Instance(執行個體)

Oracle Instance(執行個體)的定義:訪問Oracle Database的一個手段;一個instance對應一個且也只能對應一個database,而一個database可以有多個instance來訪問它,也就是說instance和database的多對一的關係,在典型的情況下,一台機器上裝的oracle,他們倆是一對一的關係,對應叢集方式(簡稱RAK)是多對一;instance也是由兩個部分組成:記憶體(memory)和後台進程(background process)。

memory由兩部分構成:SGA(system global area,系統全域區)和PGA(program global area,程式全域區);一個執行個體就一個SGA,SGA是執行個體的基本組成部分;一個server process啟動的時候,就有一個PGA;oracle是一個狂吃記憶體的軟體,記憶體主要消耗在SGA上。

說明:instance是活的東西,易於消失,oracle沒有啟動的話,也就沒有instance。

2.1 SGA結構

SGA是動態結構,其大小由SGA_MAX_SIZE指定。

2.1.1 共用池shared pool

用於儲存最近使用過的SQL語句和資料字典。它包括兩個部分,即庫緩衝(library cache)和資料字典緩衝(dictionary cache)兩部分組成。

下面是改變共用池的命令:

Alter system set SHARED_POOL_SIZE=64M;

庫緩衝用於儲存使用的SQL語句,而資料字典緩衝用於儲存最近使用過的資料字典。它們的大小都需要使用共用池來確定而不能自己設定。

2.1.2 database buffer cache資料快取區

它用於儲存最近訪問的資料區塊,由多個小緩衝區組成。DB_BLOCK_SIZE則確定了資料區塊的大小。

Alter system set DB_CACHE_SIZE=96M;

在執行SELECT或DML時,資料都是從資料檔案讀取到快取區執行的,即資料的訪問和操作是在記憶體中完成的。

2.1.3 redo log buffer日誌緩衝區

用於記錄常式的變化,其尺寸由LOG_BUFFER來定義。當執行DDL或DML時,伺服器處理序首先會將變化記錄到日誌緩衝區,然後才會修改資料的快取。

2.1.4 large pool大池和JAVA池(可選)

如果安裝或使用JAVA的話就需要使用JAVA池。

2.2 後台進程結構

Oracle中process(進程)分為三類:background process(後台進程)、server process(伺服器處理序)和user process(使用者進程)。其實server process也屬於後台進程,oracle中對進程進行了細化,這裡說的background process主要是專註於資料庫核心的進程,而server process主要是用於處理用戶端和伺服器串連的進程。

Oracle有許多必須的後台進程,它是運行Oracle服務時必須的。

2.2.1 DBWR

用於將資料快取中的髒資料寫入到資料檔案中。所謂髒資料就是發生改變的資料。

2.2.2 PMON

用於監視伺服器進程的執行,並在其失敗時清除這個進程。

2.2.3 CKPT

用於發出檢查點,用於同步資料庫的資料檔案、控制檔案和重做檔案。

2.2.4 LGWR

用於將日誌緩衝區的內容寫入到重做日誌中去。

2.2.5 SMON

系統監控進程。用於自動回復執行個體,合并空閑空間和釋放臨時段。

2.2.6 其它進程

用於運行Oracle服務時的其它後台進程。

3、Oracle Database(資料庫)

我們先看兩個概念:connection(連結)和session(會話)。一個connection主要是指oracle用戶端與後台伺服器建立的連結,即用戶端與伺服器之間的通道。只有當連結建立起來以後,才建立session會話。

從物理結構分析,Oracle Database主要包括三種檔案類型:Data files(資料檔案)、Control files(控制檔案)和Redo Log files(重做記錄檔),它們是oracle的核心檔案,除此之外還有Parameter file(參數檔案)、Archived Log files(歸檔記錄檔)以及Password file(口令檔案)等。

3.1 Data files(資料檔案)

用於儲存資料庫資料,它包括資料字典,使用者資料,UNDO資料,臨時資料等。資料庫邏輯上由一個或多個資料表空間Tablespace組成,而資料表空間在物理上由一個或多個資料檔案組成。

3.2 Control files(控制檔案)

用於記錄和維護資料庫的物理結構。

3.3 Redo Log files(重做記錄檔)

用於記錄資料庫的變化,當常式出現失敗或介質失敗時可以使用它進行恢複資料庫。當DDL或DML時,事務會寫到日誌緩衝區,在特定時刻會由LGWR將這些日誌寫入重做記錄檔。資料庫中至少有兩個記錄檔,它們是迴圈使用的。

3.4 Archived Log files(歸檔記錄檔)

它是重做日誌的備份,它會儲存全部的重做記錄。

3.5 Password file(口令檔案)和Parameter file(參數檔案)

口令檔案主要用於存放超級使用者的口令及其他特權使用者的使用者名稱和口令。兩個檔案都儲存在<安裝路徑>/database檔案夾中。

四、Oracle資料庫的輯邏結構

Oracle資料庫在邏輯上是由許多資料表空間構成,主要分為系統資料表空間和非系統資料表空間。非系統資料表空間記憶體儲著各項應用的資料、索引、程式等相關資訊。

邏輯儲存結構主要包括資料區塊(datablocks),資料區(extents),資料區段(segments),資料表空間(tablespace),這些邏輯結構使Oracle可以精細地控制磁碟空間的使用。

1、資料表空間

一個資料庫被分割為數個被稱作資料表空間(tablespace)的邏輯儲存單位,每個資料表空間內儲存的是一組相關的邏輯對象。

每個資料庫都在邏輯上被劃分為一個或多個資料表空間。使用者需要為每個資料表空間建立一個或多個資料檔案來物理地儲存屬於此資料表空間的邏輯對象。一個資料表空間所有資料檔案的大小就是此資料表空間的可用資料存放區量。資料庫的資料實際儲存在構成各個資料表空間的資料檔案中。

我們準備上線一個較大的Oracle應用系統時,應該建立它所獨佔的資料表空間,同時定義物理檔案的存放路徑和所佔硬碟的大小。

資料檔案與資料表空間的關係:

2、段

段是為一個特定邏輯結構分配的一組資料區(extents)。

按照段所儲存資料的特徵,將段分為四種類型,即資料區段、索引段、回退段和臨時段。

當一個段內已有的資料區裝滿之後,Oracle動態地分配新空間。換句話說,段內已有的資料區裝滿之後,Oracle為這個段分配新的資料區。因為資料區是隨需分配的,因此一個段內的資料區在物理上未必是連續的。

段中的資料可以跨多個資料檔案,但不能跨多個資料表空間。

3、資料區

資料區是由一次儲存空間分配而獲得的數個連續資料區塊的集合,用於儲存資訊。

當使用者建立資料表時,Oracle為此表的資料區段分配一個包含若干資料區塊的初始資料區。雖然此時資料表中還沒有資料,但是在此初始資料區中的資料區塊已經為插入新資料做好了準備。

如果一個段的初始資料區中的資料區塊都已裝滿,且有新資料插入需要空間時,Oracle自動為這個段分配一個增量資料區。增量資料區是一個段中繼已有資料區之後分配的後續資料區,它的容量大於或等於之前的資料區。

對於本地管理的資料表空間,Oracle在為新的資料區尋找可用空間時,首先選擇一個屬於此資料表空間的資料檔案,再搜尋此資料檔案的位元影像尋找連續的資料區塊。如果此資料區塊中沒有足夠的連續可用空間,Oracle將查詢其他資料檔案。

4、資料區塊

在Oracle資料庫中,最精細的資料存放區粒度是資料區塊,一個資料區塊相當於磁碟上一段連續的實體儲存體空間。

與資料區塊對應的,所有資料在作業系統級的最小實體儲存體單位是位元組(byte)。每種作業系統都有一個被稱為塊容量(block size)的參數。Oracle每次擷取資料時,總是訪問整數個(Oracle)資料區塊,而不是按照作業系統塊的容量訪問資料。

資料區塊分配的預設容量由初始化參數DB_BLOCK_SIZE決定。除了這個參數,管理員還可以額外設定5個資料區塊容量參數。Oracle資料庫在資料區塊中分配、利用儲存空間。資料區塊容量應該設為作業系統塊容量的整數倍(同時小於資料區塊容量的最大限制),以便減少不必要的I/O操作。Oracle資料區塊是Oracle可以使用和分配的最小儲存單位。

在Oracle中,不論資料區塊中儲存的是表(table)、索引(index)或簇表(clustered data),其內部結構都是類似的。

段,資料區,資料區塊之間的關係:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.