段概述
段(segment)由一組資料擴充套件(extent)構成,其中儲存了表空間內各種邏輯儲存結構的資料。例如,oracle能為每個表的資料段(data segment)分配資料擴充套件,還能為每個索引的索引段(index segment)分配資料擴充套件。
資料段簡介
在oracle資料庫中,乙個資料段可以供以下方案物件(或方案物件的一部分)容納資料:
1、非分割槽表或非簇表
2、分割槽表的乙個分割槽
3、乙個簇表
當使用者使用create
語句建立表或簇表時,oracle建立相應的資料段。表或簇表的儲存參 數(storage parameter)用來決定對應資料段的資料擴充套件如何被分配。使用者可以使用create
或alter語句直接設定這些儲存引數。這些引數將會影響與方案物件(object)相關的資料段的儲存與訪問效率。
索引段
oracle 資料庫中每個非分割槽索引(nonpartitioned index)使用乙個索引段(index segment)來容納其資料。而對於分割槽索引(partitioned index),每個分割槽使用乙個索引段來容納其資料。
使用者可以使用create index語句為索引或索引的分割槽建立索引段。在建立語句中,使用者可以設定索引段的資料擴充套件(extent)的儲存引數(storage parameter)以及此索引段應儲存在哪個表空間中。(表的資料段和與其相關的索引段不一定要儲存在同一表空間中。)索引段的儲存引數將會影響資料的儲存與訪問效率。
臨時段簡介
當oracle處理乙個查詢時,經常需要為sql語句的解析與執行的中間結果(intermediate stage)準備臨時空間。oracle會自動地分配被稱為臨時段(temporary segment)的磁碟空間。例如,oracle在進行排序操作時就需要使用臨時段。當排序操作可以在記憶體中執行,或oracle設法利用索引就執行時,就不必建立臨時段。
需要使用臨時段的操作:
1、create index
2、select ... order by
3、select distinct ...
4、select ... group by
5、select . . . union
6、select ... intersect
7、select ... minus
有些不能使用索引的關聯操作(unindexed join),或者需要在子查詢間建立相互關係(correlated subqueries),也可能需要使用臨時段(temporary segment)。所以當查詢包含distinct ,group by ,或 order by 子句時,oracle有可能使用兩個臨時段。
臨時表及索引使用的臨時段
oracle可以為臨時表及其索引分配臨時段。臨時表中的資料只在會話或事務的執行期內存在。
臨時段如何被分配
oracle為查詢(query)與臨時表(temporary table)分配臨時段(temporary segment)的過程是不同的。
為查下分配臨時段
在使用者會話(session)期間,如果使用者需要,oracle可以在使用者的臨時表空間內為使用者建立臨時段。管理員可以使用create user 或 alter user 語句中的 temporary tablespace 子句指定使用者預設使用的臨時表空間 。
tips:使用者預設使用的永久表空間(permanent tablespace) 也可以同時被設定為(temporary tablespace)。
在字典管理模式下的表空間,如果沒有為使用者指定臨時表空間,那麼預設的臨時表空間為 system 。同時在$oracle_base/admin/bdump/alert.log下會有相關的報錯資訊。臨時表空間的預設儲存引數決定了臨時段的資料擴充套件如何分配。在語句結束時oracle負責移除臨時段
因為臨時段的分配與**經常發生,所以有必要為建立臨時段準備乙個專用的表空間。這樣可以分流磁碟裝置的i/o,也可以減少由於在 system 或其他表空間內頻繁建立臨時段而造成的碎片。
參考至:oracle concepts (10g r2)
如有錯誤,歡迎指正
Oracle 備份 恢復概念的總結
oracle 備份恢復概念 資料庫維護中,備份或恢復是重中之重的問題。儘管很多時候資料庫系統執行緩慢,但對資料庫資料的丟失而言,顯然後者損失的代價是 不言而喻的。因此dba至少在保證資料不丟失的情況下來提高系統的效能是最起碼的要求。關於什麼是備份與恢復,在此不做贅言。一 物理備份與邏輯備份 物理備份...
原創 Oracle天大的Bug
任何發現都需要痛苦的經理,而我就是被這樣折磨後發現了這個bug 可執行檔案在開發的時候好好的,隨便怎樣都能執行 可當我把它考到別的目錄下,它始終連不上資料庫 我的開發工具是delphi5,資料庫是oracle9i 它報的errorcode為06421。從網上搜尋了好久也沒有找到任何答案.只找到了很多...
原創 oracle的歸檔模式
一。檢視oracle資料庫是否為歸檔模式 1.select name,log mode from v database name log mode query noarchivelog 2.使用archive log list 命令 database log mode no archive mode...