第3章 ORACLE數(shù)據(jù)庫結(jié)構(gòu)(邏輯)2v1.ppt_第1頁
第3章 ORACLE數(shù)據(jù)庫結(jié)構(gòu)(邏輯)2v1.ppt_第2頁
第3章 ORACLE數(shù)據(jù)庫結(jié)構(gòu)(邏輯)2v1.ppt_第3頁
第3章 ORACLE數(shù)據(jù)庫結(jié)構(gòu)(邏輯)2v1.ppt_第4頁
第3章 ORACLE數(shù)據(jù)庫結(jié)構(gòu)(邏輯)2v1.ppt_第5頁
已閱讀5頁,還剩106頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第3章 ORACLE數(shù)據(jù)庫結(jié)構(gòu)(邏輯),福建工程學(xué)院軟件學(xué)院 盧民榮 QQ:137955086(周一,五下午在線),第7章 Oracle 10g邏輯結(jié)構(gòu)及其管理,7.1 數(shù)據(jù)塊、范圍和段及其管理 7.2 表空間及其管理 7.3 回滾段及其管理,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),Oracle數(shù)據(jù)庫是一個(gè)數(shù)據(jù)集合,它的主要功能是存儲(chǔ)和檢索數(shù)據(jù)。為了更加有效地對(duì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行存儲(chǔ)和管理,Oracle數(shù)據(jù)庫采用了兩種存儲(chǔ)結(jié)構(gòu):邏輯存儲(chǔ)結(jié)構(gòu)和物理存儲(chǔ)結(jié)構(gòu),這兩種結(jié)構(gòu)相互獨(dú)立,互不影響。邏輯存儲(chǔ)結(jié)構(gòu)主要是指在Oracle內(nèi)部使用的組織和管理數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu);物理存儲(chǔ)結(jié)構(gòu)是Oracle在操作系統(tǒng)中存儲(chǔ)和管

2、理數(shù)據(jù)的方式,即保存數(shù)據(jù)的Oracle文件在操作系統(tǒng)中的存儲(chǔ)結(jié)構(gòu)。,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),Oracle存儲(chǔ)結(jié)構(gòu) 1.邏輯存儲(chǔ)結(jié)構(gòu) 塊(Block) 塊是Oracle存儲(chǔ)結(jié)構(gòu)中最小的邏輯存儲(chǔ)單元,是讀寫數(shù)據(jù)文件的最小單位。 區(qū)(Extent) 區(qū)是由一定數(shù)量連續(xù)的塊組成的邏輯存儲(chǔ)結(jié)構(gòu),是Oracle進(jìn)行存儲(chǔ)分配的單位。 段(Segment) 段是由一個(gè)或多個(gè)區(qū)組成的邏輯存儲(chǔ)結(jié)構(gòu),可以用來保存特定的模式對(duì)象(表、索引等)。段可以分為數(shù)據(jù)段、索引段、臨時(shí)段和回退段四類。 表空間(Tablespace) 表空間是最高一級(jí)的邏輯存儲(chǔ)單元,是連接邏輯存儲(chǔ)結(jié)構(gòu)和物理 。,Oracle 數(shù)據(jù)庫邏輯

3、存儲(chǔ)結(jié)構(gòu),Oracle存儲(chǔ)結(jié)構(gòu) 2.物理存儲(chǔ)結(jié)構(gòu) 在操作系統(tǒng)級(jí),Oracle以文件的形式組織和管理數(shù)據(jù),而這些文件是存儲(chǔ)在物理存盤上的,是具體的物理存在,因此把這種結(jié)構(gòu)叫物理存儲(chǔ)結(jié)構(gòu)。Oracle物理存儲(chǔ)結(jié)構(gòu)組成包括: 數(shù)據(jù)文件 數(shù)據(jù)文件用來存儲(chǔ)所有的數(shù)據(jù)庫數(shù)據(jù)。 控制文件 控制文件用來存儲(chǔ)數(shù)據(jù)庫的物理結(jié)構(gòu)等信息。 重做日志文件 重做日志文件用來記錄對(duì)數(shù)據(jù)庫的所有修改信息。,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),Oracle存儲(chǔ)結(jié)構(gòu) 3.模式對(duì)象 模式是一個(gè)數(shù)據(jù)庫對(duì)象的集合。 表 Oracle數(shù)據(jù)庫中基本的數(shù)據(jù)單元。 視圖 從表或視圖中抽取出來的數(shù)據(jù)的表現(xiàn)形式。 序列 Oracle自動(dòng)生成的一個(gè)代

4、碼唯一的連續(xù)數(shù)值列。 索引 一種與表相關(guān)的數(shù)據(jù)結(jié)構(gòu)。利用索引,Oracle能夠提高數(shù)據(jù)檢索的性能。 程序單元 包括存儲(chǔ)過程、函數(shù)、程序包、觸發(fā)器等。 同義詞 表、索引、視圖或其它模式對(duì)象的一個(gè)別名。 簇 一組由于共享公共列而在物理上存放在一起的一個(gè)或多個(gè)表。,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),塊 1.標(biāo)準(zhǔn)塊 是Oracle存儲(chǔ)結(jié)構(gòu)的最小單位,是Oracle進(jìn)行存儲(chǔ)管理的最小單元。 初始化參數(shù)DB_BLOCK_SIZE指定的數(shù)據(jù)塊被稱為標(biāo)準(zhǔn)塊。標(biāo)準(zhǔn)數(shù)據(jù)塊是在創(chuàng)建數(shù)據(jù)庫時(shí)設(shè)定的,數(shù)據(jù)庫創(chuàng)建完成后,該參數(shù)就不能改變。 標(biāo)準(zhǔn)塊的大小可以通過以下方式獲得: SHOW PARAMETER DB_BLOCK

5、_SIZE 或者 SELECT NAME,TYPE,VALUE FROM V$PARAMETER WHERE NAME=db_block_size;,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),塊 2.非標(biāo)準(zhǔn)塊 在Oracle 9i中,還允許另外使用5種非標(biāo)準(zhǔn)大小的塊。這些非標(biāo)準(zhǔn)塊必須在創(chuàng)建表空間時(shí)設(shè)置的,它表示該表空間的數(shù)據(jù)塊將采用非標(biāo)準(zhǔn)數(shù)據(jù)塊。 DB_2K_CACHE_SIZE 2KB非標(biāo)準(zhǔn)數(shù)據(jù)塊 DB_4K_CACHE_SIZE 4KB非標(biāo)準(zhǔn)數(shù)據(jù)塊 DB_8K_CACHE_SIZE 8KB非標(biāo)準(zhǔn)數(shù)據(jù)塊 DB_16K_CACHE_SIZE 16KB非標(biāo)準(zhǔn)數(shù)據(jù)塊 DB_32K_CACHE_SIZE 3

6、2KB非標(biāo)準(zhǔn)數(shù)據(jù)塊,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),塊 3.塊的結(jié)構(gòu) 塊的內(nèi)部劃分成塊頭,表目錄,行目錄,可存取空間等。,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),塊 4.塊的管理方式 數(shù)據(jù)塊對(duì)Oracle性能最主要的影響在于行遷移現(xiàn)象。因此,對(duì)塊的管理主要是針對(duì)塊中可用存儲(chǔ)區(qū)的管理,減少行遷移現(xiàn)象的發(fā)生。 自動(dòng)管理方式 手工管理方式,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),塊 5.存儲(chǔ)參數(shù) PCTFREE 該參數(shù)是一個(gè)百分?jǐn)?shù),是空閑存儲(chǔ)區(qū)與整個(gè)數(shù)據(jù)塊大小的比值。 PCTUSED 該參數(shù)是一個(gè)百分?jǐn)?shù),是已用存儲(chǔ)空間與整個(gè)數(shù)據(jù)塊大小的比值,是塊重新處于可用狀態(tài)的標(biāo)志。,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),塊

7、5.存儲(chǔ)參數(shù) 查詢SCOTT用戶的所有表的PCTFREE和PCTUSED參數(shù)。 SELECT TABLE_NAME,PCT_FREE,PCT_USED FROM DBA_TABLES WHERE OWNER = SCOTT; 輸出結(jié)果為: TABLE_NAME PCT_FREE PCT_USED - BONUS 10 40 DEPT 10 40 EMP 10 40 SALGRADE 10 40,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),塊 5.存儲(chǔ)參數(shù) 通過ALTER直接對(duì)每一個(gè)表修改它的PCTFREE和PCTUSED參數(shù)。 如修改用戶SCOTT的DEPT表的這兩個(gè)參數(shù)。 ALTER TABLE SC

8、OTT.DEPT PCTFREE 20 PCTUSED 30; 輸出結(jié)果為: 表已更改。,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),塊 5.存儲(chǔ)參數(shù) INITTRANS 數(shù)據(jù)塊中事務(wù)處理?xiàng)l目的初始數(shù)量,可以為1到 255 之間的值,缺省值為1。 MAXTRANS 數(shù)據(jù)塊中事務(wù)處理?xiàng)l目的最大數(shù)量,可以為1到255之間的值,缺省值為255。,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),塊 5.存儲(chǔ)參數(shù) 查詢SCOTT用戶的所有表的INITTRANS和MAXTRANS參數(shù)。 SELECT TABLE_NAME,INI_TRANS,MAX_TRANS FROM DBA_TABLES WHERE OWNER = SCOT

9、T; 輸出結(jié)果為: TABLE_NAME INI_TRANS MAX_TRANS - - - BONUS 1 255 DEPT 1 255 EMP 1 255 SALGRADE 1 255,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),塊 5.存儲(chǔ)參數(shù) 通過ALTER直接對(duì)每一個(gè)表修改它的MAXTRANS參數(shù),INITTRANS不允許修改。 如修改用戶SCOTT的DEPT表的這兩個(gè)參數(shù)。 ALTER TABLE SCOTT.DEPT MAXTRANS 200; 輸出結(jié)果為: 表已更改。,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),塊 6. 行遷移和記錄鏈接 當(dāng)UPDATE語句更新一條記錄時(shí),由于塊中沒有足夠的存儲(chǔ)空

10、間,Oracle無法把這條記錄完全存儲(chǔ)在原有的塊中。這時(shí),Oracle將這條記錄全部移到另一個(gè)新的塊中,但在原來的塊中留下一個(gè)指針指向新的塊,這種處理方式叫行遷移。,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),塊 6. 行遷移和記錄鏈接 如果一條記錄太大(如字段的類型為LONG 或LONG RAW),一個(gè)完整的數(shù)據(jù)塊都無法保存一條記錄,Oracle將把這條記錄分成較小的片段(行片段),每一個(gè)行片段放在一個(gè)塊中,然后通過指針連接所有的塊,這種存儲(chǔ)方式叫記錄鏈接。,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),區(qū) 區(qū)(Extent)是Oracle進(jìn)行存儲(chǔ)空間分配的最小單位,是由一系列物理上連續(xù)的塊組成的邏輯存儲(chǔ)結(jié)構(gòu)。區(qū)

11、存在于段中,是段的組成單位。一個(gè)或多個(gè)數(shù)據(jù)塊組成區(qū),一個(gè)或多個(gè)區(qū)組成一個(gè)段。 1.區(qū)的類型 從區(qū)的功能上看,所有區(qū)都是都是一樣的,都是用來存儲(chǔ)數(shù)據(jù)的,都是由連續(xù)的塊組成。但是從區(qū)的位置上分,區(qū)可以分為初始區(qū)(Initial Extent)和后續(xù)區(qū)(Incremental Extent)兩種。,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),區(qū) 2.區(qū)的分配方法 本地管理方式 自動(dòng)分配 區(qū)大小由系統(tǒng)自動(dòng)確定。由于 Oracle 可確定各區(qū)的最佳大小,所以區(qū)大小是可變的。 統(tǒng)一分配 區(qū)的大小由Oracle參數(shù)統(tǒng)一大小,可以指定區(qū)大小,也可使用默認(rèn)值 (1 MB)。 字典管理方式,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu)

12、,區(qū) 3.區(qū)的大小和數(shù)量 如果采用字典管理方式,必須對(duì)初始區(qū)和后續(xù)區(qū)的大小都要手工管理。設(shè)置區(qū)大小的參數(shù)有三個(gè): INITIAL 用來指定初始區(qū)的大小。 NEXT 用以指定第1個(gè)后續(xù)區(qū)的大小。 PCTINCREASE 用以指定第2個(gè)后續(xù)區(qū)及其它后續(xù)區(qū)的增長比例。,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),區(qū) 3.區(qū)的大小和數(shù)量 對(duì)于區(qū)的數(shù)量控制有兩個(gè)參數(shù): MINEXTENTS 段中分配的最小區(qū)數(shù),默認(rèn)值為為1。 MAXEXTENTS 段中分配的最大區(qū)數(shù),可以設(shè)置為無限制。在Windows 2000中,其默認(rèn)值為2147483645。,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),區(qū) 3.區(qū)的大小和數(shù)量 查詢SC

13、OTT用戶所有表的區(qū)存儲(chǔ)參數(shù)。 SQLSELECT TABLE_NAME TABLENAME,INITIAL_EXTENT INI, 2 NEXT_EXTENT NEXT,MIN_EXTENTS MIN, 3 MAX_EXTENTS MAX,PCT_INCREASE PCT 4 FROM DBA_TABLES 5 WHERE OWNER = SCOTT; 顯示結(jié)果為: TABLENAME INI NEXT MIN MAX PCT - - - - - - BONUS 65536 1 2147483645 DEPT 65536 1 2147483645 EMP 65536 1 2147483645

14、,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),區(qū) 3.區(qū)的大小和數(shù)量 通過查詢DBA_EXTENTS,獲得SCOTT用戶所有表的區(qū)信息。 SQLSELECT SEGMENT_NAME,EXTENT_ID,BLOCK_ID,BYTES,BLOCKS 2 FROM DBA_EXTENTS 3 WHERE OWNER = SCOTT 4 ORDER BY BLOCK_ID; 顯示結(jié)果為: SEGMENT_NAME EXTENT_ID BLOCK_ID BYTES BLOCKS - - - - - DEPT 0 50449 65536 8 PK_DEPT 0 50457 65536 8 EMP 0 50465

15、65536 8 PK_EMP 0 50473 65536 8 BONUS 0 50481 65536 8 SALGRADE 0 50489 65536 8,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),區(qū) 4.區(qū)的回收 通過以下方式可以回收一些空閑的區(qū): 刪除不用的模式對(duì)象,如表、索引等。刪除模式對(duì)象時(shí),Oracle會(huì)將該對(duì)象所在段的所有區(qū)回收。因此,對(duì)一些不用的模式對(duì)象要及時(shí)刪除。 DBA執(zhí)行ALTER TABLE DEALLOCATE UNUSED命令,Oracle可以收回表中未使用的區(qū)。 表的所有者或?qū)Ρ砭哂蠨ELETE ANY權(quán)限的用戶,執(zhí)行TRUNCATE TABLE tableDROP STO

16、RAGE 語句,Oracle可以回收表中未使用的區(qū)。 在創(chuàng)建回退段時(shí)使用OPTIMAL關(guān)鍵字,Oracle自動(dòng)回收該回退段中空閑的區(qū)。,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),段 1.段的類型 在Oracle中,不同類型的模式對(duì)象擁有不同類型的段,主要段的類型包括: 數(shù)據(jù)段(Data Segment) 數(shù)據(jù)段用來存儲(chǔ)表和簇的數(shù)據(jù)。主要包括表、分區(qū)的表和簇。 索引段(Index Segment) 索引段保存索引的索引條目。 臨時(shí)段(Temporary Segment) 在臨時(shí)表空間中保存臨時(shí)操作的段。 回退段(Rollback Segment) 回退段主要用來保存數(shù)據(jù)被事務(wù)修改之前的原始數(shù)據(jù) 。,Or

17、acle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),段 2.段的管理方式 段管理是指如何管理段中的空閑空間和已用空間。段管理主要有兩種方式: 自動(dòng)管理方式 Oracle采用位圖管理段的存儲(chǔ)空間。位圖是一個(gè)映射,表示某段中可以插入數(shù)據(jù)的各個(gè)數(shù)據(jù)塊的空間狀態(tài)。數(shù)據(jù)塊中的空閑空間增加或減少后,其新狀態(tài)都會(huì)在位圖中反映出來。 手工管理方式 Oracle采用空閑列表管理段的存儲(chǔ)空間??臻e列表保存有可以插入數(shù)據(jù)的可用空間的數(shù)據(jù)塊的列表。 Oracle建議采用自動(dòng)管理方式,保存手工管理方式只是為了向后兼容。,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),段 3.段的大小和數(shù)量 查詢SCOTT用戶所有段的使用情況。 SQL SELECT SE

18、GMENT_NAME,SEGMENT_TYPE, 2 TABLESPACE_NAME,EXTENTS,BLOCKS 3 FROM DBA_SEGMENTS WHERE OWNER=SCOTT; 顯示結(jié)果為: SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME EXTENTS BLOCKS - - - - - DEPT TABLE SYSTEM 1 8 EMP TABLE SYSTEM 1 8 BONUS TABLE SYSTEM 1 8 ,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),段 3.段的大小和數(shù)量 查詢所有所有回退段的信息。 SQLSELECT TABLESPAC

19、E_NAME,INITIAL_EXTENT , 2 MIN_EXTENTS,STATUS FROM DBA_ROLLBACK_SEGS; 顯示結(jié)果為: TABLESPACE_NAME INITIAL_EXTENT MIN_EXTENTS STATUS - - - - SYSTEM 114688 1 ONLINE UNDOTBS1 131072 2 ONLINE UNDOTBS1 131072 2 ONLINE ,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),表空間 表空間(Tablespace)是Oracle數(shù)據(jù)庫最高層次的邏輯存儲(chǔ)結(jié)構(gòu),是由一系列數(shù)據(jù)文件組成的集合,其中保存著由段、區(qū)和塊等邏輯存儲(chǔ)結(jié)構(gòu)描

20、述的各種模式對(duì)象。表空間是數(shù)據(jù)文件的集合,也是段的集合。因此,可以將表空間看作是邏輯存儲(chǔ)結(jié)構(gòu)和物理存儲(chǔ)結(jié)構(gòu)之間的橋梁,表空間建立起了兩者之間的對(duì)應(yīng)關(guān)系。,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),表空間 一個(gè)表空間必須包含一個(gè)或多個(gè)數(shù)據(jù)文件,但是一個(gè)數(shù)據(jù)文件只能屬于一個(gè)表空間。一個(gè)數(shù)據(jù)庫對(duì)象可以在一個(gè)數(shù)據(jù)文件中,也可以在多個(gè)數(shù)據(jù)文件中。,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),表空間 1.表空間管理方式 字典管理表空間,在數(shù)據(jù)字典中管理表空間的空間分配 本地管理的表空間,在每個(gè)數(shù)據(jù)文件中使用位圖來管理空間的分配。 本地管理的表空間有速度快,無碎片等優(yōu)點(diǎn),建議用戶表空間都采用本地管理方式。 2.表空間的類型

21、系統(tǒng)表空間(System Tablespace) 臨時(shí)表空間(Temp Tablespace) 撤銷表空間(UNDO Tablespace ) 用戶表空間(USER Tablespace ),Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),表空間 3.表空間的狀態(tài) 表空間有兩種狀態(tài): 聯(lián)機(jī)狀態(tài) 脫機(jī)狀態(tài)。 當(dāng)表空間處于聯(lián)機(jī)狀態(tài)時(shí),用戶可以訪問該表空間中的數(shù)據(jù)。當(dāng)表空間處于脫機(jī)狀態(tài)時(shí),用戶不能訪問該表空間中的數(shù)據(jù)。聯(lián)機(jī)狀態(tài)變?yōu)槊摍C(jī)狀態(tài)在DBA或Oracle的管理下可以相互切換。,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),表空間 3.表空間的查詢 SQLSELECT TABLESPACE_NAME,STATUS 2 F

22、ROM DBA_TABLESPACES 3 WHERE CONTENTS = UNDO; TABLESPACE_NAME STATUS - - SYSTEM ONLINE UNDOTBS1 ONLINE TEMP ONLINE ,Oracle 數(shù)據(jù)庫邏輯存儲(chǔ)結(jié)構(gòu),表空間 3.表空間的查詢 通過數(shù)據(jù)字典DBA_FREE_SPACE查詢表空間的可用空間狀態(tài)。 SQLSELECT TABLESPACE_NAME,SUM(BYTES) 2 FROM DBA_FREE_SPACE 3 GROUP BY TABLESPACE_NAME; 結(jié)果顯示為: TABLESPACE_NAME SUM(BYTES)

23、- - CWMLITE 11141120 DRSYS 10813440 EXAMPLE 524288 其中,SUM(BYTES)為總的可用空間。,表空間概述,表空間的類型 系統(tǒng)表空間 臨時(shí)表空間 撤銷表空間 用戶表空間,表空間概述,表空間管理原則 創(chuàng)建多個(gè)表空間 設(shè)置表空間的默認(rèn)存儲(chǔ)參數(shù) 為用戶設(shè)置表空間限額,創(chuàng)建表空間,創(chuàng)建表空間命令 創(chuàng)建表空間的CREATE TABLESPACE 命令語法如下: CREATE UNDO TABLESPACE tablespace DATAFILE datafile_file_spec , datafile_file_spec. MINIMUM EXTENT

24、 integer K | M | BLOCKSIZE integer K | LOGGING | NOLOGGING | DEFAULT storage_clause | ONLINE | OFFLINE | PERMANENT | TEMPORARY | extent_management_clause | segment_management_clause ;,創(chuàng)建表空間,創(chuàng)建表空間命令 命令中各關(guān)鍵字和參數(shù)說明如下: UNDO 創(chuàng)建的表空間為撤銷表空間。 tablespace 定義要?jiǎng)?chuàng)建的表空間名字。表空間的名稱不能超過30個(gè)字符,必須以字母開頭,可以包括字母、數(shù)字以及一些特殊字符(如#

25、、_和$)。 datafile_file_spec 表空間中數(shù)據(jù)文件的定義子句。可以在創(chuàng)建表空間命令中設(shè)置多個(gè)datafile_file_spec參數(shù),這樣能夠在表空間中同時(shí)建立多個(gè)數(shù)據(jù)文件。 MINIMUM EXTENT 指定表空間中區(qū)的最小值。如果指定該參數(shù),表中所有區(qū)的大小均是其整數(shù)倍。,創(chuàng)建表空間,創(chuàng)建表空間命令 命令中各關(guān)鍵字和參數(shù)說明如下: BLOCKSIZE 該表中數(shù)據(jù)塊的大小。在創(chuàng)建非標(biāo)準(zhǔn)數(shù)據(jù)塊的表空間中需要定義,并且需要在初始化參數(shù)文件中通過DB_nK_CACHE_SIZE設(shè)置。缺省為標(biāo)準(zhǔn)數(shù)據(jù)塊大小。 DEFAULT storage_clause 表空間缺省存儲(chǔ)子句,其參數(shù)決

26、定表空間中缺省的區(qū)分配方式。存儲(chǔ)子句的語法和參數(shù)已在上一節(jié)中介紹過。 LOGGING | NOLOGGING 指定日志屬性,設(shè)置將來的表、索引等是否需要進(jìn)行日志處理。缺省為要記錄日志。 ONLINE | OFFLINE 設(shè)置表空間創(chuàng)建后為聯(lián)機(jī)狀態(tài)還是脫機(jī)狀態(tài),缺省值為聯(lián)機(jī)。,創(chuàng)建表空間,創(chuàng)建表空間命令 命令中各關(guān)鍵字和參數(shù)說明如下: PERMANENT TEMPORARY 是說明表空間是用戶表空間或是臨時(shí)表空間。缺省值為用戶表空間。 extent_management_clause 區(qū)存儲(chǔ)管理子句,定義該表空間中區(qū)的存儲(chǔ)管理方式。 segment_management_clause 段存儲(chǔ)管理

27、子句,定義該表空間中段的存儲(chǔ)管理方式。,創(chuàng)建表空間,創(chuàng)建用戶表空間 .創(chuàng)建本地管理方式的表空間 提高了存儲(chǔ)分配的速度。 改善了存儲(chǔ)管理的性能。 支持只讀數(shù)據(jù)庫。 簡化了表空間的存儲(chǔ)管理操作。 降低了表空間對(duì)數(shù)據(jù)字典的依賴性。,創(chuàng)建表空間,創(chuàng)建用戶表空間 .創(chuàng)建本地管理方式的表空間 SQLCREATE TABLESPACE USER01 2 DATAFILE 3 D:ORACLEORADATAORADB01USERDATA01.DBF 4 SIZE 5M 5 EXTENT MANAGEMENT LOCAL; 結(jié)果顯示為: 表空間已創(chuàng)建。 其中EXTENT MANAGEMENT LOCAL子句可以

28、省略。 Oracle 9i默認(rèn)使用本地管理方式創(chuàng)建表空間。,創(chuàng)建表空間,創(chuàng)建用戶表空間 .創(chuàng)建本地管理方式的表空間 (1)本地管理表空間中指定區(qū)的分配管理方式 在用CREATE TABLESPACE語句創(chuàng)建本地管理的表空間時(shí),可以通過區(qū)存儲(chǔ)管理子句(EXTENT MANAGEMENT)來為表空間設(shè)置區(qū)的分配管理方式。區(qū)的分配管理方式有兩種:AUTOALLOCATE和UNIFORM。,創(chuàng)建表空間,創(chuàng)建用戶表空間 .創(chuàng)建本地管理方式的表空間 (1)本地管理表空間中指定區(qū)的分配管理方式 創(chuàng)建一個(gè)AUTOALLOCATE方式的本地管理表空間: SQL CREATE TABLESPACE USER02

29、2 DATAFILE 3 D:ORACLEORADATAORADB01USERDATA02.DBF 4 SIZE 5M 5 EXTENT MANAGEMENT LOCAL AUTOALLOCATE;,創(chuàng)建表空間,創(chuàng)建用戶表空間 .創(chuàng)建本地管理方式的表空間 (1)本地管理表空間中指定區(qū)的分配管理方式 創(chuàng)建一個(gè)UNIFORM方式的本地管理表空間,表空間所有區(qū)的大小都是128KB: SQL CREATE TABLESPACE USER03 2 DATAFILE 3 D:ORACLEORADATAORADB01USERDATA03.DBF SIZE 5M 4 EXTENT MANAGEMENT LOC

30、AL UNIFORM SIZE 128K;,創(chuàng)建表空間,創(chuàng)建用戶表空間 .創(chuàng)建本地管理方式的表空間 (2)本地管理表空間中指定段的存儲(chǔ)管理方式 在創(chuàng)建表空間的命令中,段存儲(chǔ)管理子句(SEGMENT SPACE MANAGEMENT)設(shè)置段管理方式。段的存儲(chǔ)管理方式分為MANUAL和AUTO兩種。,創(chuàng)建表空間,創(chuàng)建用戶表空間 .創(chuàng)建本地管理方式的表空間 (2)本地管理表空間中指定段的存儲(chǔ)管理方式 下面的語句創(chuàng)建一個(gè)MANUAL方式段存儲(chǔ)管理的本地管理表空間: SQL CREATE TABLESPACE USER04 2 DATAFILE 3 D:ORACLEORADATAORADB01USERD

31、ATA04.DBF SIZE 5M 4 EXTENT MANAGEMENT LOCAL 5 SEGMENT SPACE MANAGEMENT MANUAL;,創(chuàng)建表空間,創(chuàng)建用戶表空間 .創(chuàng)建本地管理方式的表空間 (2)本地管理表空間中指定段的存儲(chǔ)管理方式 下面的語句創(chuàng)建了一個(gè)AUTO方式進(jìn)行段存儲(chǔ)管理的本地管理表空間: SQL CREATE TABLESPACE USER05 2 DATAFILE 3 D:ORACLEORADATAORADB01USERDATA05.DBF SIZE 5M 4 EXTENT MANAGEMENT LOCAL 5 SEGMENT SPACE MANAGEMEN

32、T AUTO;,創(chuàng)建表空間,創(chuàng)建用戶表空間 2.創(chuàng)建字典管理的表空間 下面的語句創(chuàng)建一個(gè)字典管理的表空間: SQLCREATE TABLESPACE USER06 2 DATAFILE 3 D:ORACLEORADATAORADB01USERDATA06.DBF SIZE 5M 4 EXTENT MANAGEMENT DICTIONARY 5 DEFAULT STORAGE ( 6 INITIAL 50K 7 NEXT 50K 8 MINEXTENTS 2 9 PCTINCREASE 0 10 MAXEXTENTS 50);,創(chuàng)建表空間,創(chuàng)建臨時(shí)表空間 1.創(chuàng)建本地管理方式的臨時(shí)表空間 SQL

33、CREATE TEMPORARY TABLESPACE USERTEMP 2 TEMPFILE 3 D:ORACLEORADATAORADB01USERTEMP01.DBF 4 SIZE 50M REUSE 5 EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M;,創(chuàng)建表空間,創(chuàng)建臨時(shí)表空間 1.創(chuàng)建本地管理方式的臨時(shí)表空間 在一個(gè)數(shù)據(jù)庫實(shí)例中,只能有一個(gè)默認(rèn)臨時(shí)表空間。如果需要將新建的臨時(shí)表空間設(shè)置為默認(rèn)臨時(shí)表空間,還必須執(zhí)行下列語句: SQLALTER DATABASE DEFAULT 2 TEMPORARY TABLESPACE 3 USERTEMP;,創(chuàng)建

34、表空間,創(chuàng)建臨時(shí)表空間 2. 創(chuàng)建字典管理方式的臨時(shí)表空間 SQL CREATE TABLESPACE USERTEMP02 2 DATAFILE D:ORACLEORADATAORADB01USERTEMP02 3 SIZE 50M 4 EXTENT MANAGEMENT DICTIONARY 5 DEFAULT STORAGE ( 6 INITIAL 2M 7 NEXT 2M 8 MINEXTENTS 1 9 PCTINCREASE 0) 10 TEMPORARY;,創(chuàng)建表空間,創(chuàng)建非標(biāo)準(zhǔn)塊的表空間 2. 創(chuàng)建字典管理方式的臨時(shí)表空間 SQLCREATE TABLESPACE USERDA

35、TA07 2 DATAFILE 3 D:ORACLEORADATAORADB01USERDATA07.DBF SIZE 5M 4 EXTENT MANAGEMENT DICTIONARY 5 BLOCKSIZE 16K 6 DEFAULT STORAGE ( 7 INITIAL 128K NEXT 256K MINEXTENTS 2 PCTINCREASE 20 MAXEXTENTS 50);,修改表空間默認(rèn)存儲(chǔ)參數(shù),如果表空間是本地管理方式的,在創(chuàng)建時(shí)不能指定默認(rèn)存儲(chǔ)參數(shù),只能設(shè)置為AUTOALLOCATE或UNIFORM方式,并且在表空間創(chuàng)建之后不能更改;如果表空間是字典管理方式的,則不僅

36、可以在創(chuàng)建時(shí)設(shè)置默認(rèn)存儲(chǔ)參數(shù),而且還可以在創(chuàng)建后通過修改存儲(chǔ)參數(shù)對(duì)表空間的存儲(chǔ)管理方式進(jìn)行更改。,修改表空間默認(rèn)存儲(chǔ)參數(shù),對(duì)于字典管理方式的表空間,影響表空間中段的存儲(chǔ)分配的參數(shù),即存儲(chǔ)參數(shù),包含在CREATE TABLESPACE的存儲(chǔ)子句中。這些參數(shù)有: INITIAL 定義分配給段的第一個(gè)區(qū)大小。表空間一旦創(chuàng)建后,不能修改INITIAL的大小 NEXT 定義分配給段的第二個(gè)區(qū)大小 PCTINCREASE 定義第二個(gè)區(qū)以后分配的區(qū)增長比例 MINEXTENTS 段在創(chuàng)建時(shí)初始分配的區(qū)數(shù)目 MAXEXTENTS 段可以分配的最大區(qū)數(shù)目,修改表空間默認(rèn)存儲(chǔ)參數(shù),修改默認(rèn)表空間的命令為ALTER

37、 TABLESPACE命令,該命令的格式為: ALTER TABLESPACE tablespace datafile_tempfile_clauses | DEFAULT storage_clause | MINIMUM EXTENT integer K | M ; 例: 執(zhí)行下面的命令修改表空間默認(rèn)的存儲(chǔ)參數(shù): SQLALTER TABLESPACE USERDATA07 2 DEFAULT STORAGE ( 3 NEXT 512K 4 MAXEXTENTS UNLIMITED);,改變表空間的可用性,基于下列原因,有可能要將一個(gè)表空間設(shè)為脫機(jī)狀態(tài): 禁用數(shù)據(jù)庫的某一部分?jǐn)?shù)據(jù),但允許訪問

38、數(shù)據(jù)庫中的其他部分 進(jìn)行脫機(jī)表空間的備份(盡管表空間可以在聯(lián)機(jī)狀態(tài)和使用中備份) 在數(shù)據(jù)庫打開狀態(tài)下恢復(fù)表空間或數(shù)據(jù)文件 改變表空間可用性的命令為: ALTER TABLESPACE tablespace | ONLINE | OFFLINE NORMAL | TEMPORARY | IMMEDIATE | FOR RECOVER;,改變表空間的可用性,該語句中個(gè)參數(shù)的含義如下: ONLINE 切換表空間為聯(lián)機(jī)狀態(tài)。 OFFLINE 切換表空間為脫機(jī)狀態(tài)。它包括四個(gè)可選參數(shù): NORMAL 正常方式脫機(jī) IMMEDIATE 立即方式脫機(jī) TEMPORARY 臨時(shí)方式脫機(jī) FOR RECOVER

39、 恢復(fù)脫機(jī)方式,改變表空間的可用性,使用下面的語句將表空間設(shè)為脫機(jī)狀態(tài): SQLALTER TABLESPACE 2 USERDATA01 OFFLINE NORMAL; 使用下面的語句將表空間設(shè)為聯(lián)機(jī)狀態(tài): SQLALTER TABLESPACE 2 USERDATA01 ONLINE;,設(shè)置表空間的讀寫模式,任何表空間在初始創(chuàng)建時(shí)都是可讀寫的,但是可以根據(jù)需要改變表空間的讀寫屬性。只讀狀態(tài)下的表空間,用戶不能對(duì)表空間的數(shù)據(jù)文件進(jìn)行寫操作。設(shè)置只讀表空間可以消除數(shù)據(jù)庫操作過程中對(duì)大量靜態(tài)數(shù)據(jù)的備份操作,提高了數(shù)據(jù)庫的執(zhí)行速度,同時(shí)這也是一種很好的保護(hù)數(shù)據(jù)的方法,可以防止對(duì)不能修改的表空間中的

40、數(shù)據(jù)進(jìn)行寫操作。 只讀狀態(tài)的表空間不能創(chuàng)建和修改對(duì)象,但能夠從其中刪除對(duì)象,比如表或索引等,因?yàn)檫@些刪除操作只影響數(shù)據(jù)字典,而不會(huì)更改表空間對(duì)應(yīng)的數(shù)據(jù)文件。 設(shè)置表空間只讀語句為: ALTER TABLESPACE tablespace READ ONLY | WRITE,設(shè)置表空間的讀寫模式,1.設(shè)置表空間只讀 要將表空間設(shè)置為只讀,需要滿足下列條件: 表空間的所有數(shù)據(jù)文件必須處于聯(lián)機(jī)狀態(tài)。 表空間不包含任何活動(dòng)的回滾段?;谶@個(gè)原因,SYSTEM表空間不能設(shè)置為只讀表空間,因?yàn)槠渲邪粋€(gè)回滾段。 表空間不能正在進(jìn)行聯(lián)機(jī)備份操作。因?yàn)槁?lián)機(jī)備份結(jié)束后,Oracle將對(duì)數(shù)據(jù)文件的頭部信息進(jìn)行更

41、新。 設(shè)置只讀表空間的語句如下: SQLALTER TABLESPACE USERS READ ONLY;,設(shè)置表空間的讀寫模式,2.設(shè)置表空間為讀寫狀態(tài) 要將表空間恢復(fù)成讀寫狀態(tài),必須保證表空間的所有數(shù)據(jù)文件都處于聯(lián)機(jī)狀態(tài),同時(shí)表空間本身也處于聯(lián)機(jī)狀態(tài)。 下面的語句將表空間恢復(fù)成讀寫狀態(tài): SQLALTER TABLESPACE USERS 2 READ WRITE;,設(shè)置表空間的讀寫模式,3.在WORM設(shè)備上創(chuàng)建只讀表空間 WORM(Write Once-Read Many)設(shè)備是指類似CD-R的寫一次讀多次設(shè)備。WORM設(shè)備是存儲(chǔ)只讀表空間的理想設(shè)備。在WORM設(shè)備上創(chuàng)建只讀表空間的步驟

42、如下: (1)在硬盤中創(chuàng)建讀寫表空間,然后將靜態(tài)數(shù)據(jù)寫入其中。 (2)將表空間設(shè)置為只讀狀態(tài)。 (3)將表空間的數(shù)據(jù)文件復(fù)制到WORM設(shè)備中。 (4)將表空間設(shè)置為脫機(jī)狀態(tài)。 (5)使用帶有RENAME DATAFILE子句的ALTER TABLESPACE語句重命名組成表空間的數(shù)據(jù)文件,使其指向WORM設(shè)備中的數(shù)據(jù)文件。 (6)重新使表空間聯(lián)機(jī)。,刪除表空間,刪除無用的表空間。 刪除表空間命令的語法如下: DROP TABLESPACE tablespace INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS; 各參數(shù)的含義如下: tab

43、lespace 要?jiǎng)h除的表空間名。 INCLUDING CONTENTS 刪除表空間中的所有的數(shù)據(jù)庫對(duì)象。如果表空間中沒有任何對(duì)象,則可以不選此項(xiàng)。 AND DATAFILES 刪除表空間所包含的數(shù)據(jù)文件,但這些文件必須具有OMF特征。如果不選此項(xiàng),Oracle不會(huì)自動(dòng)刪除該表空間的數(shù)據(jù)文件,需要DBA手工刪除。 CASCADE CONSTRAINTS 如果其它表空間引用了該表空間中表的主鍵或者唯一鍵,選擇此項(xiàng)可以刪除其他表空間所有指示完整性的約束條件。,刪除表空間,如果一個(gè)表空間中包含了數(shù)據(jù)庫對(duì)象,使用下面的語句來進(jìn)行刪除: SQLDROP TABLESPACE USERDATA01 2 I

44、NCLUDING CONTENTS; 如果表空間是空的,沒有包含任何表、視圖或其他對(duì)象,那么無需使用INCLUDING CONTENTS子句。,刪除表空間,如果其他表空間引用了要?jiǎng)h除的表空間中表的主鍵或者唯一鍵,那么需要使用CASCADE CONSTRAINTS子句來刪除其他表空間所有指示完整性的約束條件,比如使用下面的語句: SQLDROP TABLESPACE USERDATA01 2 INCLUDING CONTENTS 3 CASCADE CONSTRAINTS;,刪除表空間,默認(rèn)情況下,刪除表空間時(shí),Oracle只是在控制文件和數(shù)據(jù)字典中刪除與表空間和數(shù)據(jù)文件間相關(guān)的信息,但不會(huì)在操

45、作系統(tǒng)中刪除相應(yīng)的數(shù)據(jù)文件。因此,成功執(zhí)行刪除表空間的操作后,需要手工刪除操作系統(tǒng)中的數(shù)據(jù)文件。如果要在刪除表空間的同時(shí)刪除對(duì)應(yīng)的數(shù)據(jù)文件,需要顯式指定INCLUDEING CONTENTS AND DATAFILES子句: SQLDROP TABLESPACE USERDATA01 2 INCLUDING CONTENTS AND DATAFILES;,刪除表空間,刪除表空間需要注意以下幾點(diǎn): 在表空間刪除之前,必須確認(rèn)其中的數(shù)據(jù)不需要再使用。 不選用INCLUDING CONTENTS參數(shù),則無法刪除包含有數(shù)據(jù)的表空間。 不能刪除SYSTEM表空間。 不選擇AND DATAFILES參數(shù),

46、只能刪除控制文件和數(shù)據(jù)字典中的數(shù)據(jù)文件信息,操作系統(tǒng)的數(shù)據(jù)文件仍然存在,需要手工刪除。選擇此項(xiàng)參數(shù),也只能自動(dòng)刪除具有OMF特征的數(shù)據(jù)文件。 可以刪除只讀狀態(tài)的表空間。 刪除表空間之前,最好將表空間設(shè)置為脫機(jī)狀態(tài),這樣可以確保該表空間中沒有活動(dòng)的事務(wù)。,查詢表空間信息,與表空間有關(guān)的數(shù)據(jù)字典用戶視圖和動(dòng)態(tài)性能視圖,查詢表空間信息,通過查詢V$TABLESPACE視圖可以獲得數(shù)據(jù)庫中所有的表空間。 SQLSELECT NAME FROM V$TABLESPACE; 顯示結(jié)果為: NAME - SYSTEM UNDOTBS1 TEMP ,查詢表空間信息,查詢DBA_TABLESPACES視圖可以獲

47、得數(shù)據(jù)庫中所有表空間的基本信息 SQLSELECT TABLESPACE_NAME TABLESPACE, 2 EXTENT_MANAGEMENT EXTENT, 3 ALLOCATION_TYPE ALLOCATION 4 CONTENTS , 5 SEGMENT_SPACE_MANAGEMENT SEGMENT 6 FROM DBA_TABLESPACES; 顯示結(jié)果為: TABLESPACE EXTENT ALLOCATION CONTENTS SEGMENT - SYSTEM LOCAL SYSTEM PERMANENT MANUAL UNDOTBS1 LOCAL SYSTEM UND

48、O MANUAL TEMP LOCAL UNIFORM TEMPORARY MANUAL ,查詢表空間信息,查詢?cè)撘晥D還可以獲得各表空間的存儲(chǔ)參數(shù),如: SQL SELECT TABLESPACE_NAME NAME, 2 INITIAL_EXTENT INIT, 3 NEXT_EXTENT NEXT, 4 MIN_EXTENTS MIN, 5 MAX_EXTENTS MAX, 6 PCT_INCREASE PCT, 7 MIN_EXTLEN EXTLEN 8 FROM DBA_TABLESPACES; 結(jié)果顯示為: NAME INIT NEXT MIN MAX PCT EXTLEN - -

49、- - - - - SYSTEM 65536 1 2147483645 65536 UNDOTBS1 65536 1 2147483645 65536 TEMP 1048576 1048576 1 0 1048576 ,撤消空間概述,用戶對(duì)數(shù)據(jù)庫進(jìn)行操作時(shí),Oracle數(shù)據(jù)庫將把事務(wù)提交前的原始數(shù)據(jù)保存下來,這些紀(jì)錄被稱作撤消紀(jì)錄,或者是回退紀(jì)錄。撤消紀(jì)錄對(duì)于數(shù)據(jù)庫的回退、恢復(fù)以及一致性維護(hù)是至關(guān)重要的。保存撤消紀(jì)錄的存儲(chǔ)空間就是撤消空間。 撤銷空間的主要功能: 使用ROLLBACK語句撤消事務(wù) 進(jìn)行數(shù)據(jù)庫恢復(fù) 提供數(shù)據(jù)的讀一致性,撤消空間概述,撤消空間 在Oracle中,撤銷管理分為兩種方式

50、: 自動(dòng)撤銷管理方式 通過撤銷表空間實(shí)現(xiàn)回退操作,并自動(dòng)為事務(wù)在撤銷表空間中分配回退段,保存撤消紀(jì)錄。 自動(dòng)撤銷管理方式采用撤銷表空間進(jìn)行撤銷管理。撤銷表空間是Oracle新增加的一種表空間,專門用來保存撤銷信息,撤銷表空間的存儲(chǔ)空間由Oracle自動(dòng)管理。每一個(gè)實(shí)例可以有多個(gè)撤銷表空間,但只能聯(lián)機(jī)一個(gè)撤銷表空間。 手工撤銷管理方式 通過回退段實(shí)現(xiàn)回退操作,需要人工在表空間中建立回退段保存撤消紀(jì)錄。,與自動(dòng)撤消管理方式相關(guān)的初始化參數(shù),撤消空間概述,手工撤消管理方式 手工撤消管理是采用回退段管理撤銷記錄的方式?;赝硕问荗racle傳統(tǒng)管理撤銷記錄的方式,需要DBA手工設(shè)計(jì)、創(chuàng)建和管理回退段,需

51、要考慮回退段的大小、多少、回退段空間利用率、回退段競爭等問題,管理工作比較復(fù)雜。,與手工撤消管理相關(guān)的初始化參數(shù),ORACLE回滾段管理,回滾段概述 回滾段用于存放數(shù)據(jù)修改之前的值(包括數(shù)據(jù)修改之前的位置和值)。回滾段的頭部包含正在使用的該回滾段事務(wù)的信息。一個(gè)事務(wù)只能使用一個(gè)回滾段來存放它的回滾信息,而一個(gè)回滾段可以存放多個(gè)事務(wù)的回滾信息。 回滾段工作原理 回滾段是磁盤上的一段存儲(chǔ)空間,用來保存數(shù)據(jù)變化前后的映像來提供一致性讀,保證事務(wù)完整性。,ORACLE回滾段管理,oracle基于兩個(gè)原則給事務(wù)分配回滾段。首先oracle試圖將一個(gè)新的事務(wù)指派給某個(gè)擁有最少活動(dòng)事務(wù)數(shù)的回滾段;如果沒有單

52、個(gè)段能滿足這 個(gè)需求,那么該事務(wù)將被指派給某個(gè)段來保存undo信息,以便此undo信息能夠盡可能長的時(shí)間內(nèi)被用于讀一致性視圖保留。讀一致性保證查詢或者返回?cái)?shù)據(jù),或者失敗。當(dāng)失敗時(shí)系統(tǒng)發(fā)出ora-01555錯(cuò)誤。所以,回滾段中已經(jīng)提交的事務(wù)數(shù)據(jù)是非常寶貴的。Oracle設(shè)法盡可能長的保留回滾段已經(jīng)提交的數(shù)據(jù)。 回滾段中的范圍以循環(huán)的方式被使用。一個(gè)事務(wù)僅僅使用一個(gè)回滾段。當(dāng)一個(gè)范圍裝滿回滾段數(shù)據(jù)后回滾段就自動(dòng)使用下一個(gè)范圍。多個(gè)事務(wù)可以使用一個(gè)范圍,但是一個(gè)回滾段的數(shù)據(jù)塊只能存放一個(gè)事務(wù)數(shù)據(jù)。當(dāng)回滾段使用完最后一個(gè)范圍時(shí),當(dāng)回滾段的第一個(gè)范圍是不活動(dòng)的或者不被使用后,回滾段的指針才指向第一個(gè)范圍

53、。,ORACLE回滾段管理,回滾段的作用 事務(wù)回滾:當(dāng)事務(wù)修改表中數(shù)據(jù)的時(shí)候,該數(shù)據(jù)修改前的值(即前影像)會(huì)存放在回滾段中,當(dāng)用戶回滾事務(wù)(ROLLBACK)時(shí),ORACLE將會(huì)利用回滾段中的數(shù)據(jù)前影像來將修改的數(shù)據(jù)恢復(fù)到原來的值。 事務(wù)恢復(fù):當(dāng)事務(wù)正在處理的時(shí)候,例程失敗,回滾段的信息保存在重做日志文件中,ORACLE將在下次打開數(shù)據(jù)庫時(shí)利用回滾來恢復(fù)未提交的數(shù)據(jù)。 讀一致性:當(dāng)一個(gè)會(huì)話正在修改數(shù)據(jù)時(shí),其他的會(huì)話將看不到該會(huì)話未提交的修改。而且,當(dāng)一個(gè)語句正在執(zhí)行時(shí),該語句將看不到從該語句開始執(zhí)行后的未提交的修改(語句級(jí)讀一致性)。當(dāng)ORACLE執(zhí)行SELECT語句時(shí),ORACLE依照當(dāng)前的

54、系統(tǒng)改變號(hào)(SYSTEM CHANGE NUMBER-SCN)來保證任何前于當(dāng)前SCN的未提交的改變不被該語句處理??梢韵胂螅寒?dāng)一個(gè)長時(shí)間的查詢正在執(zhí)行時(shí),若其他會(huì)話改變了該查詢要查詢的某個(gè)數(shù)據(jù)塊,ORACLE將利用回滾段的數(shù)據(jù)前影像來構(gòu)造一個(gè)讀一致性視圖。,ORACLE回滾段管理,事務(wù)級(jí)的讀一致性 ORACLE一般提供SQL語句級(jí)(SQL STATEMENT LEVEL)的讀一致性,可以用以下語句來實(shí)現(xiàn)事務(wù)級(jí)的讀一致性。 SET TRANSACTION READ ONLY; 或: SET TANNSACTION SERIALIZABLE; 以上兩個(gè)語句都將在事務(wù)開始后提供讀一致性。需要注意的

55、是,使用第二個(gè)語句對(duì)數(shù)據(jù)庫的并發(fā)性和性能將帶來影響。,ORACLE回滾段管理,回滾段的種類 系統(tǒng)回滾段:當(dāng)數(shù)據(jù)庫創(chuàng)建后,將自動(dòng)創(chuàng)建一個(gè)系統(tǒng)回滾段,該回滾段只用于存放系統(tǒng)表空間中對(duì)象的前影像。 非系統(tǒng)回滾段:擁有多個(gè)表空間的數(shù)據(jù)庫至少應(yīng)該有一個(gè)非系統(tǒng)回滾段,用于存放非系統(tǒng)表空間中對(duì)象的數(shù)據(jù)前影像。非系統(tǒng)回滾段又分為私有回滾段和公有回滾段,私有回滾段應(yīng)在參數(shù)文件的ROLLBACK SEGMENTS參數(shù)中列出,以便例程啟動(dòng)時(shí)自動(dòng)使其在線(ONLINE)。公有回滾段一般在OPS(ORACLE并行服務(wù)器)中出現(xiàn),將在例程啟動(dòng)時(shí)自動(dòng)在線。 DEFERED回滾段:該回滾段在表空間離線(OFFLINE)時(shí)由系統(tǒng)自動(dòng)創(chuàng)建,當(dāng)表空間再次在線(ONLINE)時(shí)由系統(tǒng)自動(dòng)刪除,用于存放表空間離線時(shí)產(chǎn)生的回滾信息。,ORACLE回滾段管理,回滾段的使用 分配回滾段:當(dāng)事務(wù)開始時(shí),ORACLE將為該事務(wù)分

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論