Oracle體系結(jié)構(gòu)之-邏輯結(jié)構(gòu)
作者:team 日期:2011-05-09
很多人在學(xué)習(xí)Oracle體系結(jié)構(gòu)的時(shí)候會(huì)遇到各種各樣的問(wèn)題,我們?cè)谶@里給大家簡(jiǎn)單的介紹一下Oracle體系結(jié)構(gòu)之邏輯結(jié)構(gòu),那么什么是邏輯結(jié)構(gòu);邏輯結(jié)構(gòu)中分為哪些結(jié)構(gòu)呢?讓我們一起來(lái)學(xué)習(xí)Oracle 邏輯結(jié)構(gòu)。
一、Oracle 邏輯結(jié)構(gòu)簡(jiǎn)介
oracle的邏輯結(jié)構(gòu)包括表空間(tablespace),段(segment),數(shù)據(jù)塊(data block)以及模式對(duì)象(schema)。
oracle數(shù)據(jù)庫(kù)在邏輯上是由多個(gè)表間組成的,表空間中存儲(chǔ)的對(duì)象叫段,比如數(shù)據(jù)段,索引段,和回退段。段由區(qū)組成,區(qū)是磁盤(pán)分配的最小單位。段的增大是通過(guò)增加區(qū)的個(gè)數(shù)來(lái)實(shí)現(xiàn)的。每個(gè)區(qū)的大小是數(shù)據(jù)塊大小的整數(shù)倍,區(qū)的大小可以不相同;數(shù)據(jù)塊是數(shù)據(jù)庫(kù)中最小的I/O單位,同時(shí)也是內(nèi)存數(shù)據(jù)緩沖區(qū)的單位,及數(shù)據(jù)文件存儲(chǔ)空間單位。塊的大小由參數(shù)DB_BLOCK_SIZE設(shè)置,其值應(yīng)設(shè)置為操作系統(tǒng)塊大小的整數(shù)倍。
表空間在物理上包含一個(gè)或多個(gè)數(shù)據(jù)文件。而數(shù)據(jù)文件大小是塊大小的整數(shù)倍;
二、表空間
表空間是Oracle數(shù)據(jù)庫(kù)最大的邏輯結(jié)構(gòu),一個(gè)Oracle數(shù)據(jù)庫(kù)在邏輯上由多個(gè)表空間組成,一個(gè)表空間只隸屬于一個(gè)數(shù)據(jù)庫(kù)。Oracle中有一個(gè)稱為SYSTEM的表空間,這個(gè)表空間是在創(chuàng)建或安裝數(shù)據(jù)庫(kù)時(shí)自動(dòng)創(chuàng)建的。主要用于存儲(chǔ)系統(tǒng)的數(shù)據(jù)字典,過(guò)程,函數(shù),觸發(fā)器等;也可以存儲(chǔ)用戶的表,索引等。
前面我們說(shuō)過(guò)要查詢表空間可以通過(guò)
SQL>select * form dba_data_files;
要查詢表空間的空閑信息可以通過(guò)
SQL>select * from dba_free_space;
表空間有在線(online)或離線(offline)之說(shuō),一旦我們將表空間設(shè)置成離線的狀態(tài),則所有對(duì)該表空間內(nèi)對(duì)象的修改將無(wú)法同步到數(shù)據(jù)文件中。我們可以將除SYSTEM和RBS表空間之外的其它表空間設(shè)置成離線狀態(tài)。命令如下:
SQL>alter tablespace *** offline;
如果我們想限制某個(gè)用戶能夠使用的表空間的大小,則我們可以通過(guò)命令:
SQL>alter user *** quota ***m on ***
這表示我們要限制某個(gè)指定用戶的表空間使用限額為***M,on之后的參數(shù)就是要限制的表空間
臨時(shí)表空間用于為用戶排序的ORDER BY語(yǔ)句使用。創(chuàng)建數(shù)據(jù)庫(kù)時(shí)可以指定數(shù)據(jù)庫(kù)的默認(rèn)臨時(shí)表空間。在創(chuàng)建用戶的時(shí)候可以指定用戶的默認(rèn)臨時(shí)表空間。例如下句就指定temp為用戶的臨時(shí)表空間。
SQL>Create USER *** IDENTIFIED BY **** TEMPORARY TABLESPACE temp;
三、段
oracle中的段可以分成4種類型:數(shù)據(jù)段、索引段、回滾段、臨時(shí)段。
數(shù)據(jù)段用來(lái)存儲(chǔ)用戶的數(shù)據(jù),每個(gè)表都有一個(gè)對(duì)應(yīng)的回滾段,其名稱和數(shù)據(jù)表的名字相同。我們可以用下列的SQL語(yǔ)句來(lái)查詢用戶的數(shù)據(jù)段信息:
SQL>select * from user_extents;
索引段用來(lái)存儲(chǔ)系統(tǒng)、用戶的索引信息:
SQL>select * from all_indexs / user_indexs;
回滾段用來(lái)存儲(chǔ)用戶數(shù)據(jù)修改前的值,回退段與事務(wù)是一對(duì)多的關(guān)系,一個(gè)事務(wù)只能使用一個(gè)回退段,而一個(gè)回退段可存放一個(gè)或多個(gè)事務(wù)的回退數(shù)據(jù)。
臨時(shí)段用于order by語(yǔ)句的排序以及一些匯總。四、區(qū)
區(qū)是磁盤(pán)空間分配的最小單位。磁盤(pán)按區(qū)劃分,每次至少分配一個(gè)區(qū)。區(qū)存儲(chǔ)于段中,它由連續(xù)的數(shù)據(jù)塊組成。
區(qū)的分配過(guò)程中,每次至分配5個(gè)區(qū)。如果所剩的空閑空間不夠5個(gè)區(qū),就會(huì)出現(xiàn)錯(cuò)誤:ORA-01653。
可以通過(guò)字典dba_tablespaces查詢表空間中區(qū)的信息??梢酝ㄟ^(guò)字典user_tables查詢段中區(qū)的信息??梢酝ㄟ^(guò)字典user_extents查詢區(qū)的分配狀況。
SQL>select * from dba_tablespaces;
通過(guò)這個(gè)查詢我們可以看到各個(gè)表空間的:
·BLOCK_SIZE :數(shù)據(jù)塊的大小
·INITIAL_EXTENT :初始化時(shí)分配的區(qū)的大小,其值為BLOCK_SIZE的整數(shù)倍
·NEXT_EXTENT:當(dāng)初始化時(shí)分配的區(qū)不夠時(shí),下一次擴(kuò)展的區(qū)的大小
·MIN_EXTENTS:區(qū)大小的下限
·MAX_EXTENTS:區(qū)大小的上限
我們可以通過(guò)以下SQL語(yǔ)句分別查詢表空間、段、區(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ù)文件磁盤(pán)存儲(chǔ)空間單位,也是數(shù)據(jù)庫(kù)I/O 的最小單位,數(shù)據(jù)塊大小由DB_BLOCK_SIZE參數(shù)決定,不同的oracle版本DB_BLOCK_SIZE的默認(rèn)值是不同的。
六、模式對(duì)象(Schema Object)
oracle 模式對(duì)象包括了表,索引,約束,過(guò)程,函數(shù),觸發(fā)器等等應(yīng)用結(jié)構(gòu)。我們可以通過(guò)以下語(yǔ)句查詢表空間或當(dāng)前用戶下的所有schema對(duì)象:
SQL>select * from dba_source;
SQL>select * from user_source;
以上就是Oracle體系結(jié)構(gòu)之邏輯結(jié)構(gòu)的一個(gè)介紹,希望能幫助到你們。
一、Oracle 邏輯結(jié)構(gòu)簡(jiǎn)介
oracle的邏輯結(jié)構(gòu)包括表空間(tablespace),段(segment),數(shù)據(jù)塊(data block)以及模式對(duì)象(schema)。
oracle數(shù)據(jù)庫(kù)在邏輯上是由多個(gè)表間組成的,表空間中存儲(chǔ)的對(duì)象叫段,比如數(shù)據(jù)段,索引段,和回退段。段由區(qū)組成,區(qū)是磁盤(pán)分配的最小單位。段的增大是通過(guò)增加區(qū)的個(gè)數(shù)來(lái)實(shí)現(xiàn)的。每個(gè)區(qū)的大小是數(shù)據(jù)塊大小的整數(shù)倍,區(qū)的大小可以不相同;數(shù)據(jù)塊是數(shù)據(jù)庫(kù)中最小的I/O單位,同時(shí)也是內(nèi)存數(shù)據(jù)緩沖區(qū)的單位,及數(shù)據(jù)文件存儲(chǔ)空間單位。塊的大小由參數(shù)DB_BLOCK_SIZE設(shè)置,其值應(yīng)設(shè)置為操作系統(tǒng)塊大小的整數(shù)倍。
表空間在物理上包含一個(gè)或多個(gè)數(shù)據(jù)文件。而數(shù)據(jù)文件大小是塊大小的整數(shù)倍;
二、表空間
表空間是Oracle數(shù)據(jù)庫(kù)最大的邏輯結(jié)構(gòu),一個(gè)Oracle數(shù)據(jù)庫(kù)在邏輯上由多個(gè)表空間組成,一個(gè)表空間只隸屬于一個(gè)數(shù)據(jù)庫(kù)。Oracle中有一個(gè)稱為SYSTEM的表空間,這個(gè)表空間是在創(chuàng)建或安裝數(shù)據(jù)庫(kù)時(shí)自動(dòng)創(chuàng)建的。主要用于存儲(chǔ)系統(tǒng)的數(shù)據(jù)字典,過(guò)程,函數(shù),觸發(fā)器等;也可以存儲(chǔ)用戶的表,索引等。
前面我們說(shuō)過(guò)要查詢表空間可以通過(guò)
SQL>select * form dba_data_files;
要查詢表空間的空閑信息可以通過(guò)
SQL>select * from dba_free_space;
表空間有在線(online)或離線(offline)之說(shuō),一旦我們將表空間設(shè)置成離線的狀態(tài),則所有對(duì)該表空間內(nèi)對(duì)象的修改將無(wú)法同步到數(shù)據(jù)文件中。我們可以將除SYSTEM和RBS表空間之外的其它表空間設(shè)置成離線狀態(tài)。命令如下:
SQL>alter tablespace *** offline;
如果我們想限制某個(gè)用戶能夠使用的表空間的大小,則我們可以通過(guò)命令:
SQL>alter user *** quota ***m on ***
這表示我們要限制某個(gè)指定用戶的表空間使用限額為***M,on之后的參數(shù)就是要限制的表空間
臨時(shí)表空間用于為用戶排序的ORDER BY語(yǔ)句使用。創(chuàng)建數(shù)據(jù)庫(kù)時(shí)可以指定數(shù)據(jù)庫(kù)的默認(rèn)臨時(shí)表空間。在創(chuàng)建用戶的時(shí)候可以指定用戶的默認(rèn)臨時(shí)表空間。例如下句就指定temp為用戶的臨時(shí)表空間。
SQL>Create USER *** IDENTIFIED BY **** TEMPORARY TABLESPACE temp;
三、段
oracle中的段可以分成4種類型:數(shù)據(jù)段、索引段、回滾段、臨時(shí)段。
數(shù)據(jù)段用來(lái)存儲(chǔ)用戶的數(shù)據(jù),每個(gè)表都有一個(gè)對(duì)應(yīng)的回滾段,其名稱和數(shù)據(jù)表的名字相同。我們可以用下列的SQL語(yǔ)句來(lái)查詢用戶的數(shù)據(jù)段信息:
SQL>select * from user_extents;
索引段用來(lái)存儲(chǔ)系統(tǒng)、用戶的索引信息:
SQL>select * from all_indexs / user_indexs;
回滾段用來(lái)存儲(chǔ)用戶數(shù)據(jù)修改前的值,回退段與事務(wù)是一對(duì)多的關(guān)系,一個(gè)事務(wù)只能使用一個(gè)回退段,而一個(gè)回退段可存放一個(gè)或多個(gè)事務(wù)的回退數(shù)據(jù)。
臨時(shí)段用于order by語(yǔ)句的排序以及一些匯總。四、區(qū)
區(qū)是磁盤(pán)空間分配的最小單位。磁盤(pán)按區(qū)劃分,每次至少分配一個(gè)區(qū)。區(qū)存儲(chǔ)于段中,它由連續(xù)的數(shù)據(jù)塊組成。
區(qū)的分配過(guò)程中,每次至分配5個(gè)區(qū)。如果所剩的空閑空間不夠5個(gè)區(qū),就會(huì)出現(xiàn)錯(cuò)誤:ORA-01653。
可以通過(guò)字典dba_tablespaces查詢表空間中區(qū)的信息??梢酝ㄟ^(guò)字典user_tables查詢段中區(qū)的信息??梢酝ㄟ^(guò)字典user_extents查詢區(qū)的分配狀況。
SQL>select * from dba_tablespaces;
通過(guò)這個(gè)查詢我們可以看到各個(gè)表空間的:
·BLOCK_SIZE :數(shù)據(jù)塊的大小
·INITIAL_EXTENT :初始化時(shí)分配的區(qū)的大小,其值為BLOCK_SIZE的整數(shù)倍
·NEXT_EXTENT:當(dāng)初始化時(shí)分配的區(qū)不夠時(shí),下一次擴(kuò)展的區(qū)的大小
·MIN_EXTENTS:區(qū)大小的下限
·MAX_EXTENTS:區(qū)大小的上限
我們可以通過(guò)以下SQL語(yǔ)句分別查詢表空間、段、區(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ù)文件磁盤(pán)存儲(chǔ)空間單位,也是數(shù)據(jù)庫(kù)I/O 的最小單位,數(shù)據(jù)塊大小由DB_BLOCK_SIZE參數(shù)決定,不同的oracle版本DB_BLOCK_SIZE的默認(rèn)值是不同的。
六、模式對(duì)象(Schema Object)
oracle 模式對(duì)象包括了表,索引,約束,過(guò)程,函數(shù),觸發(fā)器等等應(yīng)用結(jié)構(gòu)。我們可以通過(guò)以下語(yǔ)句查詢表空間或當(dāng)前用戶下的所有schema對(duì)象:
SQL>select * from dba_source;
SQL>select * from user_source;
以上就是Oracle體系結(jié)構(gòu)之邏輯結(jié)構(gòu)的一個(gè)介紹,希望能幫助到你們。
上一篇: 成都打造“中國(guó)軟件名城”
下一篇: T-DM裝飾管理軟件 7月隆重推出2.0版本
文章來(lái)自: 本站原創(chuàng)
引用通告: 查看所有引用 | 我要引用此文章
Tags: Oracle 邏輯結(jié)構(gòu) 邏輯結(jié)構(gòu) Oracle 邏輯結(jié)構(gòu)
相關(guān)日志:
下一篇: T-DM裝飾管理軟件 7月隆重推出2.0版本
文章來(lái)自: 本站原創(chuàng)
引用通告: 查看所有引用 | 我要引用此文章
Tags: Oracle 邏輯結(jié)構(gòu) 邏輯結(jié)構(gòu) Oracle 邏輯結(jié)構(gòu)
相關(guān)日志:
評(píng)論: 0 | 引用: 0 | 查看次數(shù): -
發(fā)表評(píng)論