Oracle體系結(jié)構(gòu)之-邏輯結(jié)構(gòu)

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

一、Oracle 邏輯結(jié)構(gòu)簡介

oracle的邏輯結(jié)構(gòu)包括表空間(tablespace),段(segment),數(shù)據(jù)塊(data block)以及模式對象(schema)。

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

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

二、表空間

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

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

SQL>select * form dba_data_files;

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

SQL>select * from dba_free_space;

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

SQL>alter tablespace ***  offline;

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

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

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

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

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

三、段

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

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

SQL>select  * from user_extents;

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

SQL>select * from all_indexs / user_indexs;

回滾段用來存儲用戶數(shù)據(jù)修改前的值,回退段與事務(wù)是一對多的關(guān)系,一個事務(wù)只能使用一個回退段,而一個回退段可存放一個或多個事務(wù)的回退數(shù)據(jù)。

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

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

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

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

SQL>select * from dba_tablespaces;

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

·BLOCK_SIZE :數(shù)據(jù)塊的大小

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

·NEXT_EXTENT:當(dāng)初始化時分配的區(qū)不夠時,下一次擴(kuò)展的區(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;

五、數(shù)據(jù)塊

數(shù)據(jù)塊是數(shù)據(jù)中中最小的數(shù)據(jù)組織單位與管理單位,是數(shù)據(jù)文件磁盤存儲空間單位,也是數(shù)據(jù)庫I/O 的最小單位,數(shù)據(jù)塊大小由DB_BLOCK_SIZE參數(shù)決定,不同的oracle版本DB_BLOCK_SIZE的默認(rèn)值是不同的。

六、模式對象(Schema Object)

oracle 模式對象包括了表,索引,約束,過程,函數(shù),觸發(fā)器等等應(yīng)用結(jié)構(gòu)。我們可以通過以下語句查詢表空間或當(dāng)前用戶下的所有schema對象:

SQL>select  *  from dba_source;

SQL>select  *  from user_source;

以上就是Oracle體系結(jié)構(gòu)之邏輯結(jié)構(gòu)的一個介紹,希望能幫助到你們。

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