Oracle體系結構之-邏輯結構

很多人在學習Oracle體系結構的時候會遇到各種各樣的問題,我們在這里給大家簡單的介紹一下Oracle體系結構之邏輯結構,那么什么是邏輯結構;邏輯結構中分為哪些結構呢?讓我們一起來學習Oracle 邏輯結構。

一、Oracle 邏輯結構簡介

oracle的邏輯結構包括表空間(tablespace),段(segment),數據塊(data block)以及模式對象(schema)。

oracle數據庫在邏輯上是由多個表間組成的,表空間中存儲的對象叫段,比如數據段,索引段,和回退段。段由區(qū)組成,區(qū)是磁盤分配的最小單位。段的增大是通過增加區(qū)的個數來實現的。每個區(qū)的大小是數據塊大小的整數倍,區(qū)的大小可以不相同;數據塊是數據庫中最小的I/O單位,同時也是內存數據緩沖區(qū)的單位,及數據文件存儲空間單位。塊的大小由參數DB_BLOCK_SIZE設置,其值應設置為操作系統(tǒng)塊大小的整數倍。

表空間在物理上包含一個或多個數據文件。而數據文件大小是塊大小的整數倍;

二、表空間

表空間是Oracle數據庫最大的邏輯結構,一個Oracle數據庫在邏輯上由多個表空間組成,一個表空間只隸屬于一個數據庫。Oracle中有一個稱為SYSTEM的表空間,這個表空間是在創(chuàng)建或安裝數據庫時自動創(chuàng)建的。主要用于存儲系統(tǒng)的數據字典,過程,函數,觸發(fā)器等;也可以存儲用戶的表,索引等。

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

SQL>select * form dba_data_files;

要查詢表空間的空閑信息可以通過

SQL>select * from dba_free_space;

表空間有在線(online)或離線(offline)之說,一旦我們將表空間設置成離線的狀態(tài),則所有對該表空間內對象的修改將無法同步到數據文件中。我們可以將除SYSTEM和RBS表空間之外的其它表空間設置成離線狀態(tài)。命令如下:

SQL>alter tablespace ***  offline;

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

SQL>alter user *** quota ***m on ***

這表示我們要限制某個指定用戶的表空間使用限額為***M,on之后的參數就是要限制的表空間

臨時表空間用于為用戶排序的ORDER BY語句使用。創(chuàng)建數據庫時可以指定數據庫的默認臨時表空間。在創(chuàng)建用戶的時候可以指定用戶的默認臨時表空間。例如下句就指定temp為用戶的臨時表空間。

SQL>Create USER *** IDENTIFIED BY **** TEMPORARY TABLESPACE temp;

三、段

oracle中的段可以分成4種類型:數據段、索引段、回滾段、臨時段。

數據段用來存儲用戶的數據,每個表都有一個對應的回滾段,其名稱和數據表的名字相同。我們可以用下列的SQL語句來查詢用戶的數據段信息:

SQL>select  * from user_extents;

索引段用來存儲系統(tǒng)、用戶的索引信息:

SQL>select * from all_indexs / user_indexs;

回滾段用來存儲用戶數據修改前的值,回退段與事務是一對多的關系,一個事務只能使用一個回退段,而一個回退段可存放一個或多個事務的回退數據。

臨時段用于order by語句的排序以及一些匯總。四、區(qū)

區(qū)是磁盤空間分配的最小單位。磁盤按區(qū)劃分,每次至少分配一個區(qū)。區(qū)存儲于段中,它由連續(xù)的數據塊組成。

區(qū)的分配過程中,每次至分配5個區(qū)。如果所剩的空閑空間不夠5個區(qū),就會出現錯誤:ORA-01653。

可以通過字典dba_tablespaces查詢表空間中區(qū)的信息??梢酝ㄟ^字典user_tables查詢段中區(qū)的信息。可以通過字典user_extents查詢區(qū)的分配狀況。

SQL>select * from dba_tablespaces;

通過這個查詢我們可以看到各個表空間的:

·BLOCK_SIZE :數據塊的大小

·INITIAL_EXTENT :初始化時分配的區(qū)的大小,其值為BLOCK_SIZE的整數倍

·NEXT_EXTENT:當初始化時分配的區(qū)不夠時,下一次擴展的區(qū)的大小

·MIN_EXTENTS:區(qū)大小的下限

·MAX_EXTENTS:區(qū)大小的上限

我們可以通過以下SQL語句分別查詢表空間、段、區(qū)中區(qū)的分配信息

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 模式對象包括了表,索引,約束,過程,函數,觸發(fā)器等等應用結構。我們可以通過以下語句查詢表空間或當前用戶下的所有schema對象:

SQL>select  *  from dba_source;

SQL>select  *  from user_source;

以上就是Oracle體系結構之邏輯結構的一個介紹,希望能幫助到你們。

評論: 0 | 引用: 0 | 查看次數: -
發(fā)表評論
昵 稱:
密 碼: 游客發(fā)言不需要密碼.
郵 箱: 支持Gravatar頭像.
網 址: 輸入網址便于回訪.
內 容:
驗證碼:
選 項:
雖然發(fā)表評論不用注冊,但是為了保護您的發(fā)言權,建議您注冊帳號.