標籤:io ar 使用 for sp 檔案 資料 on art
概念:
oracle的邏輯結構一般可以分成:
資料表空間(tablespace)、段(segment)、區(extent)、資料區塊(data block)。oracle由資料表空間組成,資料表空間由段組成,段由區組成,區由資料區塊組成。
分類:
資料表空間:
1.資料表空間是資料庫中最大的邏輯單位,幾個資料表空間組成了資料庫。
2.資料表空間由一個或多個資料檔案在物理上構成,一個資料檔案只能屬於一個資料表空間,這裡通過資料檔案位置的不同形成資料表空間在多個磁碟的分布。3.根據組成的段類型,資料表空間分成:資料區段資料表空間、索引段資料表空間、臨時段資料表空間、回退段資料表空間。4.可以通過修改資料檔案大小或者添加刪除資料檔案來管理資料表空間大小。5.資料表空間可以線上(ONLINE)或者離線(OFFLINE),也可以將空間中的部分表線上或離線。也有唯讀(read only)或者讀寫(read write)的屬性。--system等某些特殊資料表空間不得設定成離線或者唯讀6.可以通過QUOTA參數限制使用者在資料表空間上的使用大小。7.特殊的暫存資料表空間,主要儲存在使用ORDER BY語句進行排序或者匯總時所需的臨時空間。9i後一般都用TEMP資料表空間做為暫存資料表空間,不建議用system等特殊空間當暫存資料表空間使用。基表不能在暫存資料表空間上建立。系統指定預設暫存資料表空間後不得使用其他資料表空間作為暫存資料表空間。
分類1:系統資料表空間和非系統資料表空間。系統資料表空間主要用於儲存系統資料,非系統資料表空間用於儲存使用者及其他非系統資料。系統資料表空間:1.系統資料表空間對於資料庫是必須存在的,不能離線或者唯讀。一旦癱瘓,整個資料庫將無法正常運作。2.系統資料表空間包含了全部的資料字典、預存程序、包和觸發器。你可以通過ALL_OBJECTS查看所有系統對象。3.系統資料表空間可以包含非系統對象,比如使用者資料,但是不推薦這樣做。4.系統資料表空間包含了系統回退段.通過查詢 select segment_name,owner,tablespace_name from dba_rollback_seg;非系統資料表空間:1.更加靈活的管理資料庫、2.強化資料庫安全和最佳化運行效能分類2:資料字典管理資料表空間(Dictionary-Managed Tablespaces)和本地化管理資料表空間(Locally Managed Tablespaced).資料欄位管理資料表空間:必須手動為資料表空間設定各種參數,容易引起磁碟片段,管理難度較大本地化管理資料表空間:8i以上版本使用,區管理全由系統自動進行,磁碟片段自動消除,管理難度低且效率高。通過語句:select tablespace_name,extent_management,allocation_type from dba_tablespaces;一些關於資料表空間的查詢:a.查詢資料表空間內的資料檔案select file_id,bytes,maxbytes,tablespace_name,file_name from dba_data_files;b.查詢資料表空間的自由空間相關資訊select tablespace_name,sum(bytes),sum(blocks) from dba_free_space group by tablespace_name;c.查詢臨時檔案的資訊select file#,status,name from v$tempfile;d.查詢使用者所使用的暫存資料表空間資訊select username,temporary_tablespace from dba_users;段:按照儲存資料的不同分成4類:資料區段,索引段,回退段,臨時段。資料區段:用於儲存資料,每建立一個表,就在資料表空間裡面建立一個資料區段(CLUSTER聚集除外,聚集2個表只有一個資料區段)。表內資料不斷增加,就是段增大的過程,從而引起段內區的個數的增加。資料區段資訊的查詢:select segment_name,tablespace_name,bytes from user_extents;某些資料區段分佈於多個資料表空間(表分區):select segment_name,partition_name,tablespace_name from user_extents;索引段:用於儲存索引資料,如果建立了索引,就在索引空間內自動建立一個索引段。查詢索引及其相關資訊:select a.table_name,a.index_name,uniqueness,column_namefrom user_ind_columns b,user_indexes a where b.index_name=a.index_name and b.table_name = a.table_name and rownum<10;索引分成B+樹索引、位元影像索引和反向索引。一般預設使用B+樹索引,在一些唯讀資料庫或者大表查詢中可以使用位元影像索引。所謂的反向索引就是把索引值反過來查詢。回退段:用於儲存使用者資料修改之前的值,產生讀一致性,在資料庫恢複的時候回退未提交的事務。一個事務只能用一個回退段儲存,但是一個回退段可以儲存多個事務。在oracle9i後,管理回退段從非常麻煩的事情變成了一個簡單事情,因為提供了Undo空間的自動管理,你只要保證undo空間的大小足夠即可,不必擔心回退段個數、大小之類的事情。是否使用自動管理,可以查看初始化參數UNDO_MANAGEMENT的值是否為AUTO。諾是,則為自動管理。反之諾為MANUAL,則表示使用回退段管理。回退段分成系統回退段和非系統回退段及DEFERED回退段。系統回退段:資料庫建立後,oracle自動建立一個回退段SYSTEM,只能用於儲存系統資料表空間system的回退資訊。非系統回退段:資料庫至少含有一個非系統回退段,用於儲存非系統資料表空間的回退資訊。DEFERED回退段:在資料表空間離線時自動建立,在資料表空間線上時自動刪除,用於儲存在離線時產生的回退資訊。查詢系統回退段資訊:select segment_name,owner,tablespace_name from dba_rollback_segs;select segment_name,tablespace_name,bytes,blocks from sys.dba_segements where segment_type=‘ROLLBACK‘;臨時段:用於儲存進行排序或者匯總及執行如串連、分組、建立索引等操作的時候需要的暫存資料表空間,用完後自動消失。當記憶體安排的大小不夠排序的時候,自動使用磁碟臨時段。可以通過參數 sort_area_size 進行記憶體排序區大小的查看。查看臨時檔案的資訊:select file#,status,name from v$tempfile;
區:區或者叫做範圍,是磁碟分配空間的最小單位。磁碟按區分配,每次至少分配一個區。隨著區數目的增多,所在的段也不斷變大,資料表空間自然也就大起來了。當區的個數超過MAXEXTENTS的限制時候,不能再增加區的個數,段的大小也不能在增大,表資料不能再增加。查詢資料表空間的儲存參數:select tablespace_name,contents,initial_extent,next_extent,min_extents,max_extents,extent_management,allocation_type from dba_tablespaces; 管理:分成資料字典資料表空間(9i Release2中取消了)和本地化管理空間。 上述查詢語句的extent_management表明了管理方式,allocation_type表示管理方式下的區的分配方式。UNIFORM表示區大小為統一大小,SYSTEM表示區大小自動管理。這裡管理方式的區別決定了磁碟片段的管理。在資料字典方式中,會造成很多磁碟片段,一般需要通過命令ALTER TABLESPACE TEMP COALESCE進行整理。而在本地化管理中,由於區時統一的大小原因或者自動管理,不需要擔心這個磁碟問題。查詢使用者建立的基表的儲存空間大小及儲存方法:select initial_extent,next_extent,min_extents,max_extents,pct_increase from user_tables where table_name=‘XXXX‘;initial_extent表示分配給段的第一個區大小;next_extent表示下一個分配區的大小。min_extents表示第一次建立段時候分配的區的最小個數;max_extents表示段中區的最大個數。pct_increase表示從第三個區開始後,相對於上一個區所增加的百分比===>next=next*(1+pctincrease).查詢資料區段中的區分配情況:select segment_name,table_name,extent_id,bytes,blocks from user_extents where segment_name=‘XXXX‘; 資料區塊:資料區塊是資料庫中最小的資料群組織單位和管理單位,也是最小的I/O單位。大小由參數DB_BLOCK_SIZE確定,範圍在2k-64k之間。對於系統資料表空間與預設資料表空間使用且只能使用參數db_block_size指定的資料區塊,對於其他資料表空間則可以使用不同的資料區塊組合。查詢資料區塊大小:1.show parameter db_block_size 2.select name,value from v$parameter where name like ‘%size%;3.參數檔案..資料區塊通常由塊頭、表目錄、行目錄、行資料和空閑空間組成。可以通過一系列的參數來控制資料區塊的行為,如空閑率(PCTFREE)、使用率(PCTUSED)、最小事務數(INITRANS)和最大事務數(MAXTRANS).如PCTFREE用於指定塊中要保留的空間率,比如取值20%,那麼你的塊最多儲存80%的塊空間。這些閒置空間可以用於已經存在的行修改的時候可能要使用。PCTUSED用於指定塊中使用率的限定值。比如取值60%,在沒有儲存滿的時候可以繼續插入新的行值。它主要還是用於插入語句。INITRANS指定在每一個資料區塊中分配的事務入口的初始數,範圍1-255,初始為1。MAXTRANS指定在每一個資料區塊中分配的事務入口的最大數,範圍1-255,預設為255。查詢資料區塊參數設定:select table_name,pct_free,pct_used,ini_trans,max_trans from user_tables;
Oracle資料邏輯組件