Oracle數(shù)據(jù)庫是什么?

2023-07-04 11:51 更新

Oracle Database,又名 Oracle RDBMS,簡稱 Oracle。Oracle 數(shù)據(jù)庫系統(tǒng)是美國 Oracle 公司(甲骨文)提供的以分布式數(shù)據(jù)庫為核心的一組軟件產(chǎn)品,是目前最流行的客戶/服務器(client/server)或B/S體系結構的數(shù)據(jù)庫之一,比如 SilverStream 就是基于數(shù)據(jù)庫的一種中間件。Oracle 數(shù)據(jù)庫是目前世界上使用最為廣泛的數(shù)據(jù)庫管理系統(tǒng),作為一個通用的數(shù)據(jù)庫系統(tǒng),它具有完整的數(shù)據(jù)管理功能;作為一個關系型數(shù)據(jù)庫,它是一個完備關系的產(chǎn)品;作為分布式數(shù)據(jù)庫它實現(xiàn)了分布式處理功能,只要在一種機型上學習了 操作Oracle 的知識,便能在各種類型的機器上使用它。

數(shù)據(jù)文件(dbf)

  數(shù)據(jù)文件是數(shù)據(jù)庫的物理存儲單位,而表空間TableSpace則是數(shù)據(jù)庫的邏輯組成部分。數(shù)據(jù)庫的數(shù)據(jù)是存儲在表空間中的,而一個表空間可以由一個或多個數(shù)據(jù)文件組成,一個數(shù)據(jù)文件只能屬于一個表空間。一旦數(shù)據(jù)文件被加入到某個表空間后,就不能刪除這個文件,如果要刪除某個數(shù)據(jù)文件,只能刪除其所屬于的表空間才行。

表空間

表空間是 Oracle 對物理數(shù)據(jù)庫上相關數(shù)據(jù)文件(ORA 或者 DBF 文件)的邏輯映射。一個數(shù)據(jù)庫在邏輯上被劃分成一到若干個表空間,每個表空間包含了在邏輯上相關聯(lián)的一組結構。每個數(shù)據(jù)庫至少有一個表空間(稱之為 system 表空間)。每個表空間由同一磁盤上的一個或多個文件組成,這些文件叫數(shù)據(jù)庫文件(datafile)。一個數(shù)據(jù)文件只能屬于一個表空間。

用戶

用戶是在實例下建立的。不同實例中可以建相同名字的用戶。注意!表的數(shù)據(jù),是由用戶放入某一個表空間的,而這個表空間會隨機把這些表數(shù)據(jù)放到一個或者多個數(shù)據(jù)文件中。由于 Oracle 的數(shù)據(jù)庫不是普通的概念,oracle 是由用戶和表空間對數(shù)據(jù)進行管理和存放的。但是表不是由表空間去查詢的,而是由用戶去查的。因為不同用戶可以在同一個表空間建立同一個名字的表!這里區(qū)分就是用戶了!


SCOTT 和 HR(用戶)

scott 與 hr 就是初始的普通用戶,這些用戶下面都默認存在了表結構


關于數(shù)據(jù)庫語言的分類

DDL:數(shù)據(jù)庫定義語言:create、drop

DML:數(shù)據(jù)庫的操作語言:insert、update、delete

DQL:數(shù)據(jù)庫的查詢語言:select

DCL:數(shù)據(jù)庫的控制語言:grant、revoke

oracle數(shù)據(jù)庫的優(yōu)勢

ORACLE 數(shù)據(jù)庫系統(tǒng)能夠在業(yè)內獨占鰲頭并不是空穴來風,下面我們來細數(shù)一下 ORACLE 數(shù)據(jù)庫的優(yōu)勢所在:

完整的數(shù)據(jù)管理功能:

  • 數(shù)據(jù)的大量性
  • 數(shù)據(jù)的保存的持久性
  • 數(shù)據(jù)的共享性
  • 數(shù)據(jù)的可靠性

完備關系的產(chǎn)品:

  • 信息準則---關系型 DBMS 的所有信息都應在邏輯上用一種方法,即表中的值顯式地表示
  • 保證訪問的準則
  • 視圖更新準則---只要形成視圖的表中的數(shù)據(jù)變化了,相應的視圖中的數(shù)據(jù)同時變化
  • 數(shù)據(jù)物理性和邏輯性獨立準則

分布式處理功能:

  • ORACLE 數(shù)據(jù)庫自第5版起提供了分布式處理能力,到第7版有比較完善的分布式數(shù)據(jù)庫功能了,一個ORACLE 分布式數(shù)據(jù)庫由 oraclerdbms、sql*Net、SQL*CONNECT 和其他非 ORACLE 的關系型產(chǎn)品構成。
  • 用 ORACLE 能輕松的實現(xiàn)數(shù)據(jù)倉庫的操作

以上是 Oracle 數(shù)據(jù)庫的優(yōu)勢,從這些優(yōu)勢中不難看出這是一款功能強大的數(shù)據(jù)庫系統(tǒng)。

數(shù)據(jù)庫和實例 

Oracle 數(shù)據(jù)庫服務器由一個數(shù)據(jù)庫和至少一個數(shù)據(jù)庫實例組成。 數(shù)據(jù)庫是一組存儲數(shù)據(jù)的文件,而數(shù)據(jù)庫實例則是管理數(shù)據(jù)庫文件的內存結構。此外,數(shù)據(jù)庫是由后臺進程組成。

數(shù)據(jù)庫和實例是緊密相連的,所以我們一般說的 Oracle 數(shù)據(jù)庫,通常指的就是實例和數(shù)據(jù)庫。

下圖說明了 Oracle 數(shù)據(jù)庫服務器體系結構:

1

在這種體系結構中,Oracle 數(shù)據(jù)庫服務器包括兩個主要部分:文件(Oracle 數(shù)據(jù)庫)和內存(Oracle 實例)。

1.Oracle數(shù)據(jù)庫

Oracle 數(shù)據(jù)庫的一個基本任務是存儲數(shù)據(jù),以下部分簡要地介紹 Oracle 數(shù)據(jù)庫的物理和邏輯存儲結構。

1.1.物理存儲結構

物理存儲結構是存儲數(shù)據(jù)的純文件。當執(zhí)行一個 CREATE DATABASE 語句來創(chuàng)建一個新的數(shù)據(jù)庫時,將創(chuàng)建下列文件:

   ● 數(shù)據(jù)文件:數(shù)據(jù)文件包含真實數(shù)據(jù),例如銷售訂單和客戶等。邏輯數(shù)據(jù)庫結構(如表和索引)的數(shù)據(jù)被物理存儲在數(shù)據(jù)文件中。

   ● 控制文件:每個 Oracle 數(shù)據(jù)庫都有一個包含元數(shù)據(jù)的控制文件。元數(shù)據(jù)用來描述包括數(shù)據(jù)庫名稱和數(shù)據(jù)文件位置的數(shù)據(jù)庫物理結構。

   ● 聯(lián)機重做日志文件:每個 Oracle 數(shù)據(jù)庫都有一個聯(lián)機重做日志,里面包含兩個或多個聯(lián)機重做日志文件。聯(lián)機重做日志由重做條目組成,能夠記錄下所有對數(shù)據(jù)所做的更改。

除這些文件外,Oracle 數(shù)據(jù)庫還包括如參數(shù)文件、網(wǎng)絡文件、備份文件以及用于備份和恢復的歸檔重做日志文件等重要文件。

1.2.邏輯存儲結構

Oracle 數(shù)據(jù)庫使用邏輯存儲結構對磁盤空間使用情況進行精細控制。以下是 Oracle 數(shù)據(jù)庫中的邏輯存儲結構:

   ● 數(shù)據(jù)塊(Data blocks):Oracle 將數(shù)據(jù)存儲在數(shù)據(jù)塊中。數(shù)據(jù)塊也被稱為邏輯塊,Oracle 塊或頁,對應于磁盤上的字節(jié)數(shù)。

   ● 范圍(Extents):范圍是用于存儲特定類型信息的邏輯連續(xù)數(shù)據(jù)塊的具體數(shù)量。

   ● 段(Segments):段是分配用于存儲用戶對象(例如表或索引)的一組范圍。

   ● 表空間(Tablespaces):數(shù)據(jù)庫被分成稱為表空間的邏輯存儲單元。 表空間是段的邏輯容器。 每個表空間至少包含一個數(shù)據(jù)文件。

下圖說明了表空間中的段,范圍和數(shù)據(jù)塊:

2

下圖顯示了邏輯和物理存儲結構之間的關系:

3

2.Oracle實例

Oracle 實例是客戶端應用程序(用戶)和數(shù)據(jù)庫之間的接口。Oracle 實例由三個主要部分組成:系統(tǒng)全局區(qū) (SGA),程序全局區(qū) (PGA) 和后臺進程。如下圖所示 :

4

 DBWr(DBWR)在后來允許多進程寫data file,所以改成DBWn了。

SGA 是實例啟動時分配的共享內存結構,關閉時釋放。 SGA 是一組包含一個數(shù)據(jù)庫實例的數(shù)據(jù)和控制信息的共享內存結構。

不同于所有進程都可用的 SGA,PGA 是會話開始時為每個會話分配的私有內存區(qū),當會話結束時釋放。

主要的Oracle數(shù)據(jù)庫的后臺進程

以下是 Oracle 實例的主要后臺進程:

   ● PMON 是 Oracle 數(shù)據(jù)庫中最活躍的一個進程,是調節(jié)所有其他進程的進程監(jiān)視器。PMON 能夠清理異常連接的數(shù)據(jù)庫連接,并自動向偵聽器進程注冊數(shù)據(jù)庫實例。

   ● SMON 是執(zhí)行系統(tǒng)級清理操作的系統(tǒng)監(jiān)視進程。它有兩個主要職責,包括在發(fā)生故障的情況下自動恢復實例,例如斷電和清理臨時文件。

   ● DBWn 是數(shù)據(jù)庫編寫器。Oracle 在內存中執(zhí)行每個操作。因為在內存中的處理速度比在磁盤上快。DBWn 進程從內存讀取數(shù)據(jù)并將其寫回到磁盤。 一個 Oracle 實例有許多數(shù)據(jù)庫編寫器,如:DBW0,DBW1DBW2等等。

   ● CKPT 是檢查點進程。 在 Oracle 中,磁盤上的數(shù)據(jù)稱為塊,內存中的數(shù)據(jù)稱為緩沖區(qū)。 當該塊寫入緩沖區(qū)并更改時,緩沖區(qū)變臟,需要將其寫入磁盤。CKPT 進程使用檢查點信息更新控制和數(shù)據(jù)文件頭,并向臟盤寫入臟緩沖區(qū)的信號。 請注意,Oracle 12c 允許全面和增量檢查點。

5

   ● LGWR 是日志寫入過程,是可恢復架構的關鍵。 在數(shù)據(jù)庫中發(fā)生的每一個變化都被寫出到一個名為 redo 日志文件中用于恢復目的。 而這些變化是由 LGWR 進程編寫和記錄的。 LGWR 進程首先將更改寫入內存,然后將磁盤寫入重做日志,然后將其用于恢復。

   ● ARCn 是歸檔進程,它將重做日志的內容復制到歸檔重做日志文件。存檔程序進程可以有多個進程,如:ARC0,ARC1 和 ARC3,允許存檔程序寫入多個目標,如 D:驅動器,E:驅動器或其他存儲。

   ● MMON 是收集性能指標的可管理性監(jiān)控流程。

   ● MMAN 是自動管理 Oracle 數(shù)據(jù)庫內存的內存管理器。

   ● LREG 是監(jiān)聽器注冊過程,它使用 Oracle Net Listener 在數(shù)據(jù)庫實例和調度程序進程上注冊信息。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號