Oracle的主要組件和基本概念

oracle

簡介

oracle(甲骨文)公司

1977年,三人合夥創辦(Software Development Laboratories,SDL)

1979年,更名為Relational Software Inc.,RSI

1983年,為了突出核心產品 ,RSI更名為Oracle

2002年04月26日,啟用「甲骨文」作為中文註冊商標

oracle 主要組件

image

  1. 資料庫

    • 資料庫就是存儲數據的一種媒介,即磁碟上存儲的數據的集合。
    • 在物理上表現為數據文件,日誌文件,和控制文件等。
    • 在邏輯上以表空間形成存在。
    • 首先必須創建資料庫,才能使用oracle。
    • 資料庫包含的文件有:
      • 數據文件,擴展名是.DBF,用於存儲資料庫數據的文件,資料庫和數據文件不存在一對一對應關係。一個資料庫,可以擁有多個數據文件,但一個數據文件只能對應一個資料庫。
      • 控制文件,擴展名是.CTL,是資料庫啟動以及運行所必須要的文件,默認包含三個控制文件,各個控制文件內容相同。
      • 日誌文件,擴展名是.LOG,它記錄了對數據的所有更改資訊,多個日誌文件組之間循壞使用。
      • Oracle資料庫還包含如參數文件,網路文件,備份文件,以及用於備份和恢復的歸檔重做日誌文件等重要文件。
  2. 資料庫實例

    • 實例的概念是指oracle系統中一系列進程,以及為這進程所分配的記憶體塊。每個啟動的資料庫,都對應一個資料庫實例,由這個實例,來訪問和控制資料庫。

      • 在oracle中,我們可以新建一個Oracle實例,這個時候雖然有了SGA等一些列記憶體塊,但是這個時候並沒有把資料庫文件讀取進來。所以只是一個實例,再後來,你可以通過,命令手段,或者自動的把資料庫文件載入進我們這個實例中。這個時候的資料庫才可以真正讓我們訪問和操作。所以說,資料庫的應用如果想實現,資料庫,和資料庫實例是缺一不可的。如果只有數據那些文件,那麼,只能代表這些數據在這個文件中,但是我們無法進行操作,而如果只有資料庫實例,那麼我雖然可以操作數據,但是不知道操作哪些數據。操作生產的數據也無法保存等。所以,當一個Oracle實例真正載入一個Oracle Datebase了以後,資料庫才可以被我們使用。

      • 當一個實例啟動時,Oracle資料庫分配一個稱為系統全局區(SGA)的記憶體區域,並啟動一個或者多個後台進程。

        • 系統全局區(SGA)的記憶體區域作用包括:

          • 維護多個進程和執行緒並發訪問的內部數據結構
          • 快取從磁碟讀取的數據塊
          • 在寫入在線重做日誌文件之前緩衝重做數據
          • 存儲 SQL 執行計劃
        • 系統全局區SGA記憶體結構包括:

          1 共享池 2 數據緩衝區 3 日誌緩衝區

          1. 共享池是對SQL、PL/SQL程式進行語法分析、編譯、執行的記憶體區域。共享池由庫快取和數據字典快取組成。共享池的大小直接影響資料庫的性能
          2. 數據緩衝區用於存儲從磁碟數據文件中讀入的數據,所有用戶共享。伺服器進程將讀入的數據保存在數據緩衝區中,當後續的請求需要這些數據時可以在記憶體中找到,不需要再從磁碟讀取,提高了讀取速度。數據緩衝區的大小對資料庫的讀取速度有直接的影響
          3. a.日誌記錄資料庫的所有修改資訊,日誌資訊首先產生於日誌緩衝區。當日誌緩衝區的日誌數據達到一定數量時,由後台進程將日誌數據寫入日誌文件中。相對來說,日誌緩衝區對資料庫的性能影響較小

Oracle基本概念

  1. 表空間

    • 表空間是Oracle資料庫中最大的邏輯結構。它提供了一套有效組織數據的方法,是組織數據和進行空間分配的邏輯結構,可以將表空間看作是資料庫對象的容器。簡單地說,表空間就是一一個或多個數據文件(物理文件)的集合(邏輯文件),所有的數據對象都被邏輯地存放在指定的表空間中。
    • 每個Oracle資料庫都是由若干個表空間構成
    • 用戶在資料庫中建立的所有內容都被存儲到表空間
    • 創建資料庫時會自動創建若干表空間
    • Oracle資料庫是通過表空間來存儲物理表的,一個資料庫實例可以有N個表空間,一個表空間下可以有N張表。
    • 表空間(tablespace)是資料庫的邏輯劃分,每個資料庫至少有一個表空間(稱作SYSTEM表空間)。為了便於管理和提高運行效率,可以使用一些附加表空間來劃分用戶和應用程式。例如:USER表空間供一般用戶使用,RBS表空間供回滾段使用。一個表空間只能屬於一個資料庫。
  2. 全局資料庫名

    • 用於區分一個資料庫的內部標識
    • 全局資料庫名=資料庫名+域名
    • 使資料庫的取名在整個網路環境中唯一
  3. 模式和模式對象

    • 模式為模式對象的集合,模式是一個邏輯容器,你可以把模式理解為文件夾,方便我們對一組資料庫對象進行管理。通常,一個大的系統由許多小的系統組成,我們可以給每個小的系統創建一個模式,把該系統中用到的資料庫對象都創建在這個模式中。例如,每個公司都會有員工,我們可以創建一個模式 HR,然後在 HR 中創建一個表 EMPLOYEES 來維護員工資訊,如果需要在其他模式中訪問 EMPLOYEES 表,我們需要指定它的全名 HR.EMPLOYEES。

    • 每一個用戶對應一個模式,模式隸屬於某個資料庫用戶,模式名和資料庫用戶是相同的,那如何創建模式呢?很簡單,其實就是創建資料庫用戶就創建了同名的模式

    • 模式對象是用戶擁有的對象,我們可以在模式中創建表(Table), 分區(Partition), 視圖(View), 索引(Indexe), 包(Package),存儲過程(Procedure),函數(Function),觸發起(Trigger),類型(Type), 序列(Sequence), 同義(Synonym)等資料庫對象。

    • 非模式對象與用戶無關,如上下文(Contexts) 目錄(Directory) 概要文件(Profile) 角色(Role) 表空間(Tablespaces) 用戶(User)

    • SYS 和 SYSTEM 模式

      • 當我們安裝 Oracle 的時候,系統自動幫我們創建了 SYS 和 SYSTEM 模式,它們擁有最高許可權,用來管理資料庫

      • sys用戶是超級用戶,具有最高許可權即sysdba角色,有create database的許可權,所有oracle的數據字典的基表和視圖都存放在sys用戶中,這些基表和視圖對於oracle的運行是至關重要的,由資料庫自己維護,任何用戶都不能手動更改。

      • system是資料庫內置的一個普通管理員,你手工創建的任何用戶在被授予dba角色後都跟這個用戶差不多。 system用戶as sysdba登錄時和sys一樣,可以用show user查看當前用戶進行驗證。system用戶不能以 as sysoper角色登錄,只能以normal角色登錄。即conn system/pwd。

Tags: