天天看點

Oracle 11g官方文檔之表和表簇(第2章)1.模式對象簡介2.表概述3.表簇概述

1.模式對象簡介

資料庫模式,是被稱為模式對象的資料結構的邏輯容器。 舉例來說,表和索引即是模式對象。 模式對象通過 SQL 來建立和操作。

資料庫使用者具有密碼并擁有各種資料庫的權限。 每個使用者擁有一個單一的模式,此模式與使用者具有相同的名稱。模式包含相應使用者的全部資料。 例如,hr 使用者擁有 hr 模式,此模式包含如雇員表之類的模式對象。 在生産資料庫中,一個資料庫模式的擁有者通常表示一個資料庫應用程式,而不是一個人。

在一個模式裡,某一特定類型的每個模式對象都有一個唯一的名稱。 例如hr.employees 是指 hr 模式中的 employees 表。 圖 2-1 描述了一個名為 hr 的模式擁有者,及其在 hr 模式内的模式對象。

Oracle 11g官方文檔之表和表簇(第2章)1.模式對象簡介2.表概述3.表簇概述

1.1 模式對象類型

在關系資料庫中,最重要的模式對象是表。 表以行的形式存儲資料。

Oracle SQL 使您能夠建立和操作許多其他類型的模式對象,包括以下這些:

  • 索引

    索引是一種模式對象,對于每一個被索引的表行或表簇行,索引都包

    含一個條目 ,以提供直接、 快速的存取。 Oracle 資料庫支援幾種類

    型的索引。 一個索引組織表是一個表,其資料以一個索引結構來存

    儲。

  • 分區

    分區是大型表和索引的分片。 每個分區有其自己的名稱,并可能有

    其自己(可選)的存儲特征。

  • 視圖

    視圖是對一個或多個表、或其他視圖中的資料的自定義表示。 你可

    以把它們看作存儲的查詢。 視圖實際上并不存儲資料。

  • 序列

    序列是一個由使用者建立的對象,可以被多個使用者共享,用于生成整

    數。 通常,序列用于生成主鍵值。

  • 次元

    次元定義多個列集之間的父-子關系,列集中的所有列必須都來自同

    一個表。次元通常用于對客戶、 産品、和時間之類的資料進行分

    類。

  • 同義詞

    同義詞是另一個模式對象的别名。 因為同義詞隻是一個别名,它在

    資料字典中除了其定義之外,沒有存儲。

  • PL/SQL 子程式和包

    PL/SQL 是 Oracle 對 SQL 的過程化擴充。 PL/SQL 子程式是命名的

    PL/SQL 塊,可以帶參數調用。 PL/SQL 包用于将邏輯上相關的

    PL/SQL 類型、 變量、和子程式進行分組。

還有一些其他類型的對象也存儲在資料庫中,并以 SQL 語句來建立和操作,但不包含在模式中。 這些對象包括資料庫使用者、 角色、 上下文、和目錄對象。

1.2 模式對象存儲

一些模式對象将資料存儲在稱為段的邏輯存儲結構中。例如,一個未分區的堆組織表或索引會建立一個段。 其他模式對象,如視圖和序列,則隻包含中繼資料。 這一節僅描述有段的模式對象。

Oracle 資料庫邏輯上将模式對象存儲在表空間中。 在模式和表空間之間沒有任何的關系: 一個表空間可以包含來自不同的模式的對象,一個模式中的對象也可以包含在不同的表空間中。 每個對象的資料在實體上包含在一個或多個資料檔案中。

圖 2-2 顯示了一種在表、索引段、表空間、和資料檔案之間的可能配置。一個表的資料段跨越兩個資料檔案,這兩個資料檔案屬于同一個表空間。一個段不能跨多個表空間。

Oracle 11g官方文檔之表和表簇(第2章)1.模式對象簡介2.表概述3.表簇概述

1.3 模式對象依賴

一些模式對象會引用其它對象,這就産生了模式對象依賴。 例如,一個視圖包含一個引用表或其他視圖的查詢,或一個 PL/SQL 子程式調用其他子程式。 如果對象 A 的定義引用了對象 B,那麼 A 相對于 B 來說是依賴對象,或 B 相對于 A 來說是被引用對象。

Oracle 資料庫提供了一種自動的機制,以確定依賴對象對于相應的被引用對象來說始終是最新的。 當依賴對象産生後,資料庫将跟蹤依賴對象和其被引用對象之間的依賴關系。當被引用對象的更改可能會影響依賴對象時,依賴對象被标記為無效。 例如,當使用者删除一個表,所有基于這個被删除表的視圖都将變得不可用。

在一個無效的依賴對象重新變得可用之前,必須基于對被引用對象的新定義重新編譯。 當無效依賴對象被引用時,重新編譯會自動發生。

為示範模式對象之間如何産生依賴,下面的示例腳本建立表 test_table,然後建立一個查詢此表的存儲過程:

CREATE TABLE test_table ( col1 INTEGER, col2 INTEGER );
CREATE OR REPLACE PROCEDURE test_proc
AS
BEGIN
FOR x IN ( SELECT col1, col2 FROM test_table )
LOOP
 -- process data
 NULL;
END LOOP;
END;
           

下面的查詢顯示過程 test_proc 的狀态是有效的:

Oracle 11g官方文檔之表和表簇(第2章)1.模式對象簡介2.表概述3.表簇概述

向 test_table 表中添加 col3 列之後,該過程仍然是有效的,因為該過程不依

賴于該列:

Oracle 11g官方文檔之表和表簇(第2章)1.模式對象簡介2.表概述3.表簇概述

但是,更改 col1 列的資料類型後,test_proc 過程變得無效,因為該過程依賴于該列。

Oracle 11g官方文檔之表和表簇(第2章)1.模式對象簡介2.表概述3.表簇概述

運作或重新編譯該過程使它重新有效,如下面的示例中所示:

Oracle 11g官方文檔之表和表簇(第2章)1.模式對象簡介2.表概述3.表簇概述

1.4 SYS和SYSTEM模式

所有 Oracle 資料庫都包括預設管理帳戶。 管理帳戶享有很高的特權,僅用于授權的資料庫管理者執行諸如啟停資料庫、 管理記憶體和存儲、 建立和管理資料庫使用者等任務。

SYS 管理帳戶在建立資料庫時自動建立。 此帳戶可以執行所有的資料庫管理功能。SYS 模式存儲資料字典基表和視圖。 這些基表和視圖對資料庫的運作至關重要。 SYS 模式中的表隻由資料庫操作,絕不能被任何使用者修改。

在建立資料庫時,也會自動建立 SYSTEM 帳戶。 SYSTEM 模式存儲其它一些用于顯示管理資訊的表和視圖,以及用于各種資料庫選項和工具的内部表和視圖。 永遠不要使用 SYSTEM 模式來存儲非管理性使用者的表。

1.5 示例模式

Oracle 資料庫可能包含示例模式,這是一組互相關聯的模式,在 Oracle 文檔和 Oracle 教學材料中用于示範常見資料庫任務。 hr 模式是一個包含有關雇員、 部門和位置、 工作曆史等資訊的示例模式。

圖 2-3 是 hr 模式中表的一個實體關系圖。 在本手冊中的大多數示例都使用此模式中的對象。

Oracle 11g官方文檔之表和表簇(第2章)1.模式對象簡介2.表概述3.表簇概述

2.表概述

3.表簇概述

繼續閱讀