Oracle 邏輯結構簡介

pingyuan發表於2008-08-07
Oracle 邏輯結構簡介[@more@]

一、Oracle 邏輯結構簡介
oracle的邏輯結構包括表空間(tablespace),段(segment),資料塊(data block)以及模式物件(schema)。
oracle資料庫在邏輯上是由多個表間組成的,表空間中儲存的物件叫段,比如資料段,索引段,和回退段。段由區組成,區是磁碟分配的最小單位。段的增大是透過增加區的個數來實現的。每個區的大小是資料塊大小的整數倍,區的大小可以不相同;資料塊是資料庫中最小的I/O單位,同時也是記憶體資料緩衝區的單位,及資料檔案儲存空間單位。塊的大小由引數DB_BLOCK_SIZE設定,其值應設定為作業系統塊大小的整數倍。

表空間在物理上包含一個或多個資料檔案。而資料檔案大小是塊大小的整數倍;


二、表空間

表空間是Oracle資料庫最大的邏輯結構,一個Oracle資料庫在邏輯上由多個表空間組成,一個表空間只隸屬於一個資料庫。Oracle中有一個稱為SYSTEM的表空間,這個表空間是在建立或安裝資料庫時自動建立的。主要用於儲存系統的資料字典,過程,函式,觸發器等;也可以儲存使用者的表,索引等。

前面我們說過要查詢表空間可以透過

SQL>select * form dba_data_files;

要查詢表空間的空閒資訊可以透過

SQL>select * from dba_free_space;

表空間有線上(online)或離線(offline)之說,一旦我們將表空間設定成離線的狀態,則所有對該表空間內物件的修改將無法同步到資料檔案中。我們可以將除SYSTEM和RBS表空間之外的其它表空間設定成離線狀態。命令如下:

SQL>alter tablespace *** offline;

如果我們想限制某個使用者能夠使用的表空間的大小,則我們可以透過命令:

SQL>alter user *** quota ***m on ***
這表示我們要限制某個指定使用者的表空間使用限額為***M,on之後的引數就是要限制的表空間

臨時表空間用於為使用者排序的ORDER BY語句使用。建立資料庫時可以指定資料庫的預設臨時表空間。在建立使用者的時候可以指定使用者的預設臨時表空間。例如下句就指定temp為使用者的臨時表空間。
SQL>CREATE USER *** IDENTIFIED BY **** TEMPORARY TABLESPACE temp;


三、段

Oracle中的段可以分成4種型別:資料段、索引段、回滾段、臨時段。

資料段用來儲存使用者的資料,每個表都有一個對應的回滾段,其名稱和資料表的名字相同。我們可以用下列的SQL語句來查詢使用者的資料段資訊:

SQL>select * from user_extents;

索引段用來儲存系統、使用者的索引資訊:

SQL>select * from all_indexs / user_indexs;

回滾段用來儲存使用者資料修改前的值,回退段與事務是一對多的關係,一個事務只能使用一個回退段,而一個回退段可存放一個或多個事務的回退資料。
臨時段用於order by語句的排序以及一些彙總。


四、區

區是磁碟空間分配的最小單位。磁碟按區劃分,每次至少分配一個區。區儲存於段中,它由連續的資料塊組成。
區的分配過程中,每次至分配5個區。如果所剩的空閒空間不夠5個區,就會出現錯誤:ORA-01653。
可以透過字典dba_tablespaces查詢表空間中區的資訊。可以透過字典user_tables查詢段中區的資訊。可以透過字典user_extents查詢區的分配狀況。
SQL>select * from dba_tablespaces;

透過這個查詢我們可以看到各個表空間的:
·BLOCK_SIZE :資料塊的大小
·INITIAL_EXTENT :初始化時分配的區的大小,其值為BLOCK_SIZE的整數倍
·NEXT_EXTENT:當初始化時分配的區不夠時,下一次擴充套件的區的大小
·MIN_EXTENTS:區大小的下限
·MAX_EXTENTS:區大小的上限

我們可以透過以下SQL語句分別查詢表空間、段、區中區的分配資訊
SQL>select * from dba_tablespaces;
SQL>select table_name, tablespace_name, min_extents, max_extents from user_tables;
SQL>select * from user_extents;

五、資料塊
資料塊是資料中中最小的資料組織單位與管理單位,是資料檔案磁碟儲存空間單位,也是資料庫I/O 的最小單位,資料塊大小由DB_BLOCK_SIZE引數決定,不同的oracle版本DB_BLOCK_SIZE的預設值是不同的。

六、模式物件(Schema Object)
Oracle 模式物件包括了表,索引,約束,過程,函式,觸發器等等應用結構。我們可以透過以下語句查詢表空間或當前使用者下的所有schema物件:

SQL>select * from dba_source;
SQL>select * from user_source;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7199667/viewspace-1008662/,如需轉載,請註明出處,否則將追究法律責任。

相關文章