天天看點

oracle資料庫中01,01 Oracle資料庫介紹

1、關系型資料庫

使用資料庫的主要目的是存儲和處理資料。

1.1 資料庫管理系統

資料庫管理系統(DBMS):控制資料庫中資料的存儲、組織和檢索。

資料庫應用(database application):通過DBMS通路和操作資料庫中的資料。

資料庫管理系統的早期類型:

Hierarchical database -- 資料組織在樹狀結構中,類似于檔案系統,記錄之間是一對多的關系;

network database -- 與前種類型相似,不同的是:記錄之間是多對多的關系。

這兩種資料庫中的資料都是預先定義好的,并且缺乏資料定義和查詢語言。

1.2 關系模型(Relational Model)

E.F.Codd在他1970年發表的論文《大型共享資料庫資料的關系模型》中, 定義了一個基于數學集合理論的關系模型。 目前,最廣泛接受的資料庫模型就是關系模型。關系型資料庫就是基于這種模型的。

關系模型三要素:關系資料結構、關系操作和關系完整性限制。

關系是一個元組的集合。 一個元組 是一些屬性值的無序的集合。

表是一個關系的二維表示, 關系由行 (元組) 和列 (屬性) 的形式構成。表中的每一行具有相同的列集。 關系資料庫是一個将資料存儲在關系 (表)中的資料庫。

1.3 關系資料庫管理系統(RDBMS)

RDBMS是基于關系模型的,實作了關系模型的三要素,并且區分下面兩種操作:

邏輯操作 -- 資料庫應用或使用者通過SQL語句對資料庫進行操作;

實體操作 -- 接到SQL指令之後,由RDBMS決定如何實作。

也就是說資料庫應用或使用者隻需要在邏輯層面上進行操作資料,不用關心資料到底是如何存儲的。

Oracle資料庫是關系資料庫管理系統,并且進行了擴充,實作了面向對象的特性。

1.4 Oracle資料庫曆史

2、模式對象

RDBMS的特點之一,是實體資料存儲與邏輯資料結構的獨立性。 在 Oracle 資料庫中,資料庫模式(database schema)是邏輯資料結構或模式對象(schema object)的集合。 資料庫模式由一個資料庫使用者擁有,并與使用者名具有相同的名稱。

其中,最重要的模式對象是表(table)和索引(index)。

2.1 表

表描述的是現實世界的實體,比如:員工。表的定義包含:表名,列名和資料類型等。

比如:員工表是員工資訊的集合。每一列辨別員工的一個屬性(例如,員工姓名),每一行代表一個員工。

另外,可以為表中的列設定規則(完整性限制)。比如,NOT NULL限制用來強制某列中必須有值。

2.2 索引

索引是在一列或多列上建立的可選資料結構。某些情況下,使用索引可以提高資料檢索的性能。

3、資料通路

3.1 Structured Query Language (SQL)

SQL 是一種基于集合的聲明性語言,提供一個到關系資料庫(如 Oracle 資料庫)的接口。

3.2 PL/SQL and Java

PL/SQL 是 Oracle SQL的過程化擴充。

4、事務管理

4.1 事務(Transactions)

事務是一個邏輯、 原子的工作單元,它包含一條或多條SQL 語句。一個事務中的所有SQL語句要麼全部成功,要麼全部失敗,不能存在其它情況。

最簡單的例子,就是轉賬的例子。比如A給B轉賬100元,至少包含兩個操作:

1)從A的賬戶中減去100元;

2)從B的賬戶中增加100元。

這兩個操作是一個整體,必須同時成功。

4.2 資料并發(Concurrency)

資料并發:多個使用者同時通路相同的資料。

對于多使用者RDBMS,控制資料并發是非常重要的。

管理并發的其中一種方法,就是讓使用者等待。但過多的等待會影響資料庫的性能。

Oracle 資料庫使用鎖來控制對資料的并發通路。

4.3 資料一緻性(Consistency)

在Oracle資料庫中,每個使用者必須看到資料的一緻視圖,包括使用者自己的事務以及其他使用者已送出的事務所做出的更改。

Oracle 資料庫始終強制執行語句級讀取的一緻性,保證單個查詢所傳回的資料是已送出的,并與某個時間點一緻。

資料庫也可以為整個事務中的所有查詢提供讀一緻性,這叫事務級讀一緻性。在這種情況下,事務中的每一個語句看見的都是同一個時間點的資料,這個時間點也就是事務開始之時。

5、Oracle資料庫架構

5.1 資料庫和執行個體

Oracle資料庫服務(database server)包含一個資料庫(database)和至少一個資料庫執行個體(instance):

資料庫 -- 一些存放在磁盤上的檔案,用于存儲資料。

資料庫執行個體 -- 管理資料庫檔案的記憶體結構,包含共享記憶體區SGA和一組背景程序。執行個體可以獨立于資料庫檔案而存在。

oracle資料庫中01,01 Oracle資料庫介紹

5.2 資料庫存儲結構

1)實體存儲結構包含:

資料檔案 -- 存放資料庫的資料

控制檔案 -- 存放資料庫的實體結構,包含資料庫庫名稱和資料檔案的名稱和位置

線上重做日志檔案 -- 記錄資料庫資料的變化

2)邏輯存儲結構包含:

資料塊(Data block) -- 最小的存儲機關和I/O機關。

擴充區(Extent) -- 最小的配置設定機關,包含一組邏輯上連續的資料塊。

段(Segment) -- 為使用者對象 (表或索引)、復原資料、或臨時資料等配置設定的一組擴充區。

表空間(Tablespace) -- 資料庫由表空間組成,每個表空間至少包含一個資料檔案。

5.3 資料庫執行個體結構

1)Oracle資料庫程序包含:

用戶端程序

背景程序

伺服器程序 -- 處理用戶端程序發送的請求

2)執行個體記憶體結構包含:

System Global Area (SGA) -- 共享記憶體結構

Program Global Areas (PGA) -- 伺服器程序和背景程序程序私有的記憶體結構

疑問:用戶端程序和伺服器程序也是執行個體的一部分???

5.4 應用和網絡架構

1)應用架構

應用架構是指一個資料庫應用程式連接配接到 Oracle 資料庫的計算環境。最常見的兩種資料庫體系結構是用戶端/伺服器體系結構和多層體系結構。

Oracle 資料庫可以在傳統的多層環境或 SOA 環境中扮演一個 Web 服務提供者的角色。

2)網絡架構

Oracle 網絡服務(Net Service)是資料庫與網絡通信協定之間的接口, 它對分布式處理和分布式資料庫很有用。

Oracle網絡服務的元件:

Oracle Net -- 在資料庫應用和資料庫服務之間建立并維護網絡會話。

Oracle Net Listener -- 監聽并管理資料庫應用(用戶端)發來的連接配接請求。

Oracle提供了兩種處理用戶端請求的架構:

專用伺服器架構

共享伺服器架構