




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第7章邏輯存儲結構第7章邏輯存儲結構1本章內容Oracle邏輯存儲結構概述表空間數據塊區段本章內容Oracle邏輯存儲結構概述2本章要求掌握Oracle數據庫邏輯結構組成掌握表空間的作用及其管理掌握擴展區的結構,了解擴展區的管理掌握段的作用,了解段的管理本章要求掌握Oracle數據庫邏輯結構組成37.1邏輯存儲結構概述概念邏輯存儲結構是從邏輯的角度來分析數據庫的構成的,是數據庫創建后利用邏輯概念來描述Oracle數據庫內部數據的組織和管理形式。在操作系統中,沒有數據庫邏輯存儲結構信息,而只有物理存儲結構信息。數據庫的邏輯存儲結構概念存儲在數據庫的數據字典中,可以通過數據字典查詢邏輯存儲結構信息。
邏輯結構單元類型數據塊:BLOCK區:EXTENT段:SEGMENT表空間:TABLESPACE7.1邏輯存儲結構概述概念4數據庫的存儲層次關系DatabaseLogicalPhysicalTablespaceDatafileOSblockOracle
blockSegmentExtent數據庫的存儲層次關系DatabaseLogicalPhysi5數據庫邏輯存儲結構之間的關系表空間數據段………
區間數據塊(段片)數據庫邏輯存儲結構之間的關系表空間數據段………區67.2表空間表空間概述表空間的管理7.2表空間表空間概述77.2.1表空間概述表空間的概念表空間的分類表空間的管理方式表空間的管理策略7.2.1表空間概述表空間的概念8(1)表空間概念Oracle數據庫在邏輯上可以劃分為一系列的邏輯空間,每一個邏輯空間就可以稱為一個表空間。一個數據庫由有一個或多個表空間構成,不同表空間用于存放不同應用的數據,表空間大小決定了數據庫的大小。一個表空間對應一個或多個數據文件,數據文件大小決定了表空間的大小。一個數據文件只能從屬于一個表空間。表空間是存儲模式對象的容器,一個數據庫對象只能存儲在一個表空間中(分區表和分區索引除外),但可以存儲在該表空間所對應的一個或多個數據文件中。若表空間只有一個數據文件,則該表空間中所有對象都保存在該文件中;若表空間對應多個數據文件,則表空間中的對象可以分布于不同的數據文件中。(1)表空間概念Oracle數據庫在邏輯上可以劃分為一系列的9數據庫、表空間、數據文件、數據庫對象之間的關系:數據庫、表空間、數據文件、數據庫對象之間的關系:10通過表空間,可以實現對數據庫存儲的管理:控制整個數據庫占用空間的大小;控制數據庫在磁盤上的分配,提高數據庫的I/O性能;控制用戶所占用的存儲空間的大小。通過表空間,可以實現對數據庫存儲的管理:11(2)表空間的分類系統表空間——包括SYSTEM和SYSAUXSYSTEM表空間,主要存儲:數據庫的數據字典;PL/SQL程序的源代碼和解釋代碼,包括存儲過程、函數、包、觸發器等;數據庫對象的定義,如表、視圖、序列、同義詞等。SYSAUX表空間SYSAUX表空間是Oracle10g新增的輔助系統表空間,主要用于存儲數據庫組件等信息,以減小SYSTEM表空間的負荷。在通常情況下,不允許刪除、重命名及傳輸SYSAUX表空間。(2)表空間的分類系統表空間——包括SYSTEM和SYSAU12非系統表空間撤銷表空間專門進行回滾信息的自動管理,由回滾段構成。一個數據庫可以有多個撤銷表空間,但每個數據庫實例只能使用一個由UNDO_TABLESPACE參數設置的撤銷表空間。初始化參數UNDO_MANAGEMENT=AUTO時,系統使用撤銷表空間自動進行回滾信息管理。臨時表空間專門進行臨時數據管理的表空間。在數據庫實例運行過程中,執行排序等SQL語句時會產生大量的臨時數據,這些臨時數據將保存在數據庫臨時表空間中。建議為數據庫單獨定義默認的臨時表空間。非系統表空間13用戶表空間保存用戶數據。大文件表空間與小文件表空間所謂大文件表空間(BigfileTablespace)是指一個表空間只包含一個大數據文件,該文件的最大尺寸為128TB(數據塊大小為32KB)或只32TB(數據塊大小為8KB)。與大文件表空間相對應,系統默認創建的表空間稱為小文件表空間(SmallfileTablespace),如SYSTEM表空間、SYSAUX表空間等。小文件表空間可以包含多達1024個數據文件。小文件表空間的總容量與大文件表空間的容量基本相似。用戶表空間14(3)表空間的管理方式字典管理方式表空間使用數據字典來管理存儲空間的分配,當進行區的分配與回收時,Oracle將對數據字典中的相關基礎表進行更新,同時會產生回滾信息和重做信息。字典管理方式將漸漸被淘汰。本地管理方式在本地管理方式中,區的分配和管理信息都存儲在表空間的數據文件中,而與數據字典無關。表空間在每個數據文件中維護一個“位圖”結構,用于記錄表空間中所有區的分配情況,因此區在分配與回收時,Oracle將對數據文件中的位圖進行更新,不會產生回滾信息或重做信息。(3)表空間的管理方式字典管理方式15表空間本地管理方式的優勢:
由于在區分配與回收過程中不需要對數據字典進行訪問,提高了表空間存儲管理操作的速度和并發性。能夠避免表空間存儲管理操作中的遞歸現象,提高了存儲空間管理操作性能。能夠在保留可查詢性同時,將整個數據庫設置為只讀狀態。這種數據庫可以作為備用數據庫使用。簡化了表空間的存儲管理,由Oracle自動完成存儲管理操作。降低了用戶對數據字典的依賴性。不存在磁盤碎片問題,因為必要的信息都存儲在數據文件的位圖中,而不是保存在數據字典中。表空間本地管理方式的優勢:16(4)表空間管理策略將數據字典與用戶數據分離,避免由于數據字典對象和用戶對象保存在一個數據文件中而產生I/O沖突。將回滾數據與用戶數據分離,避免由于硬盤損壞而導致永久性的數據丟失。將表空間的數據文件分散保存到不同的硬盤上,平均分布物理I/O操作。為不同的應用創建獨立的表空間,避免多個應用之間的相互干擾。能夠將表空間設置為脫機狀態或聯機狀態,以便對數據庫的一部分進行備份或恢復。能夠將表空間設置為只讀狀態,從而將數據庫的一部分設置為只讀狀態。能夠為某種特殊用途專門設置一個表空間,如臨時表空間,優化表空間的使用效率。能夠更加靈活地為用戶設置表空間配額。(4)表空間管理策略將數據字典與用戶數據分離,避免由于數據字177.2.2表空間的管理(本地管理方式)創建表空間修改表空間表空間的備份刪除表空間大文件表空間的管理表空間信息查詢利用OEM管理表空間7.2.2表空間的管理(本地管理方式)創建表空間18(1)創建表空間
在創建本地管理方式下的表空間時,應該確定表空間的名稱、類型、對應的數據文件的名稱和位置以及區的分配方式、段的管理方式。表空間名稱不能超過30個字符,必須以字母開頭,可以包含字母、數字以及一些特殊字符(如#、_、$)等;表空間的類型包括普通表空間、臨時表空間和撤銷表空間;表空間中區的分配方式包括兩種方式:自動擴展(AUTOALLOCATE)和定制(UNIFORM);段的管理包括兩種方式:自動管理(AUTO)和手動管理(MANUAL)。(1)創建表空間在創建本地管理方式下的表空間時,應該確定表19創建永久表空間
創建永久表空間使用CREATETABLESPACE語句來實現,該語句包含以下幾個子句:DATAFILE:設定表空間對應的數據文件。EXTENTMANAGEMENT:指定表空間的管理方式,取值為LOCAL(默認)或DICTIONARY。AUTOALLOCATE(默認)或UNIFORM:設定區的分配方式。SEGMENTSPACEMANAGEMENT:設定段的管理方式,其取值為MANUAL或AUTO(默認)。創建永久表空間創建永久表空間使用CREATETABLES20例1:為ORCL數據庫創建一個永久性的表空間ORCLTBS1,區自動擴展,段采用自動管理方式。例2:為ORCL數據庫創建一個永久性的表空間ORCLTBS2,區定制分配,段采用自動管理方式。SQL>CREATETABLESPACEORCLTBS1DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS1_1.DBF'SIZE50M;SQL>CREATETABLESPACEORCLTBS2DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS2_1.DBF'SIZE50MEXTENTMANAGEMENTLOCALUNIFORMSIZE512K;例1:為ORCL數據庫創建一個永久性的表空間ORCLTBS121例3:為ORCL數據庫創建一個永久性的表空間ORCLTBS3,區自動擴展,段采用手動管理方式。例4:為ORCL數據庫創建一個永久性的表空間ORCLTBS4,區定制分配,段采用手動管理方式。SQL>CREATETABLESPACEORCLTBS3DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS3_1.DBF'SIZE50MSEGMENTSPACEMANAGEMENTMANUAL;SQL>CREATETABLESPACEORCLTBS4DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS4_1.DBF'SIZE50MEXTENTMANAGEMENTLOCALUNIFORMSIZE512KSEGMENTSPACEMANAGEMENTMANUAL;數據文件的名稱分別為ORCLTBS3_1.DBF和ORCLTBS4_1.DBF例3:為ORCL數據庫創建一個永久性的表空間ORCLTBS322創建臨時表空間使用CREATETEMPORARYTABLESPACE語句創建臨時表空間,用TEMPFILE子句設置臨時數據文件。注意:臨時表空間中區的分配方式只能是UNIFORM,而不能是AUTOALLOCATE,因為這樣才能保證不會在臨時段中產生過多的存儲碎片。例5:為ORCL數據庫創建一個臨時表空間ORCLTEMP1。SQL>CREATETEMPORARYTABLESPACEORCLTEMP1TEMPFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTEMP1_1.DBF'SIZE20MEXTENTMANAGEMENTLOCALUNIFORM
SIZE
16M;創建臨時表空間使用CREATETEMPORARYTABL23臨時表空間組將一個或多個臨時表空間構成一個表空間組。優點:避免由于單個臨時表空間的空間不足而導致數據庫運行故障。可以保證在一個簡單并行操作中多個并行服務的執行。臨時表空間組不需要顯式創建,為臨時表空間組指定第一個臨時表空間時隱式創建,當臨時表空間組中最后一個臨時表空間刪除時而隱式地刪除。通過在CREATETEMPORARYTABLSPACE或ALTERTABLESPACE語句中使用TABLESPACEGROUP短語創建臨時表空間組。臨時表空間組24例6:為ORCL數據庫創建一個臨時表空間ORCLTEMP2,并放入臨時表空間組temp_group1。同時,將臨時表空間ORCLTEMP1也放入該temp_group1中。SQL>CREATETEMPORARYTABLESPACEORCLTEMP2TEMPFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTEMP2_1.DBF'SIZE20MEXTENTMANAGEMENTLOCALUNIFORMSIZE16M
TABLESPACE
GROUPtemp_group1;SQL>ALTERTABLESPACEORCLTEMP1TABLESPACE
GROUPtemp_group1;例6:為ORCL數據庫創建一個臨時表空間ORCLTEMP2,25創建撤銷表空間如果數據庫中沒有創建撤銷表空間,那么將使用SYSTEM表空間來管理回滾段。如果數據庫中包含多個撤銷表空間,那么一個實例只能使用一個處于活動狀態的撤銷表空間,可以通過參數UNDO_TABLESPACE來指定;如果數據庫中只包含一個撤銷表空間,那么數據庫實例啟動后會自動使用該撤銷表空間。如果要使用撤銷表空間對數據庫回滾信息進行自動管理,則必須將初始化參數UNDO_MANAGEMENT=AUTO。創建撤銷表空間如果數據庫中沒有創建撤銷表空間,那么將使用SY26可以使用CREATEUNDOTABLESPACE語句創建撤銷表空間,但是在該語句中只能指定DATAFILE和EXTENTMANAGEMENTLOCAL兩個子句,而不能指定其他子句。例7:為ORCL數據庫創建一個撤銷表空間。注意:如果要在數據庫使用該撤銷表空間,需要設置參數UNDO_MANAGEMENT=AUTOUNDO_TABLESPACE=ORCLUNDO1SQL>CREATEUNDOTABLESPACEORCLUNDO1DATAFILE'D:\ORACLE\ORADATA\ORCL\ORCLUNDO1_1.DBF'SIZE20M;可以使用CREATEUNDOTABLESPACE語句創建27(2)修改表空間可以對表空間進行下列修改操作:擴展表空間修改表空間可用性修改表空間讀/寫性設置默認表空間表空間重命名注意:不能將本地管理的永久性表空間轉換為本地管理的臨時表空間,也不能修改本地管理表空間中段的管理方式。(2)修改表空間可以對表空間進行下列修改操作:28擴展表空間為表空間添加數據文件通過ALTERTABLESPACE…ADD
DATAFILE語句為永久表空間添加數據文件,通過ALTERTABLESPACE…ADD
TEMPFILE語句為臨時表空間添加臨時數據文件。例8:為ORCL數據庫的ORCLTBS1表空間添加一個大小為10MB的新數據文件。例9:為ORCL數據庫的ORCLTEMP1表空間添加一個大小為10MB的臨時數據文件。SQL>ALTERTABLESPACEORCLTBS1ADDDATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS1_2.DBF'SIZE10M;SQL>ALTERTABLESPACEORCLTEMP1ADDTEMPFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTEMP1_2.DBF'SIZE10M;擴展表空間為表空間添加數據文件SQL>ALTERTABL29改變數據文件的大小可以通過改變表空間已有數據文件的大小,達到擴展表空間的目的。例10:將ORCL數據庫的ORCLTBS1表空間的數據文件ORCLTBS1_2.DBF大小增加到20MB。SQL>ALTERDATABASE
DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS1_2.DBF'
RESIZE20M;改變數據文件的大小SQL>ALTERDATABASED30改變數據文件的擴展方式如果在創建表空間或為表空間增加數據文件時沒有指定AUTOEXTENDON選項,則該文件的大小是固定的。如果為數據文件指定了AUTOEXTENDON選項,當數據文件被填滿時,數據文件會自動擴展,即表空間被擴展了。例11:將ORCL數據庫的ORCLTBS1表空間的數據文件ORCLTBS1_2.DBF設置為自動擴展,每次擴展5MB空間,文件最大為100MB。SQL>ALTERDATABASEDATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS1_2.DBF'AUTOEXTENDONNEXT5MMAXSIZE100M;改變數據文件的擴展方式SQL>ALTERDATABASE31修改表空間可用性
離線狀態的表空間是不能進行數據訪問的,所對應的所有數據文件也都處于脫機狀態。一些表空間必須是在線狀態:SYSTEM表空間存放在線回退信息的撤銷表空間臨時表空間語法ALTERTABLESPACE…ONLINE|OFFLINE例12、13:SQL>ALTERTABLESPACEORCLTBS1OFFLINE;SQL>ALTERTABLESPACEORCLTBS1ONLINE;修改表空間可用性離線狀態的表空間是不能進行數據訪問的,所對32修改表空間讀寫性語法:ALTERTABLESPACE…READONLY|READWRITE設置“只讀”的目的:避免對DB中大量靜態數據進行備份;避免用戶對歷史數據進行修改。表空間只有滿足下列要求才可以轉換為只讀狀態:表空間處于聯機狀態;表空間中不能包含任何活動的回退段;如果表空間正在進行聯機數據庫備份,不能將它設置為只讀狀態。因為聯機備份結束時,Oracle更新表空間數據文件的頭部信息。例14、15:SQL>ALTERTABLESPACEORCLTBS1READONLY;SQL>ALTERTABLESPACEORCLTBS1READWRITE;修改表空間讀寫性語法:SQL>ALTERTABLESPA33設置默認表空間在Oracle10g數據庫中,默認表空間為USERS表空間,默認臨時表空間為TEMP表空間。設置數據庫的默認表空間ALTERDATABASEDEFAULTTABLESPACE設置數據庫的默認臨時表空間ALTERDATABASEDEFAULT
TEMPORARYTABLESPACE例16、17、18:SQL>ALTERDATABASEDEFAULTTABLESPACEORCLTBS1;SQL>ALTERDATABASEDEFAULTTEMPORARYTABLESPACETEMP;SQL>ALTERDATABASEDEFAULTTEMPORARYTABLESPACEtemp_group1;設置默認表空間在Oracle10g數據庫中,默認表空間為US34表空間重命名語句ALTERTABLESPACE…RENAMETO當重命名一個表空間時:數據庫會自動更新數據字典、控制文件以及數據文件頭部中對該表空間的引用。表空間ID號并沒有修改,如果該表空間是數據庫默認表空間,那么重命名后仍然是數據庫的默認表空間。注意:不能重命名SYSTEM表空間和SYSAUX表空間;不能重命名處于脫機狀態或部分數據文件處于脫機狀態的表空間。表空間重命名語句35(3)表空間的備份語法ALTERTABLESPACE…BEGIN|ENDBACKUP在數據庫進行熱備份(聯機備份)時,需要分別對表空間進行備份。基本步驟為:使用ALTERTABLESPACE…BEGINBACKUP語句將表空間設置為備份模式。在操作系統中備份表空間所對應的數據文件。使用ALTERTABLESPACE…ENDBACKUP語句結束表空間的備份模式。(3)表空間的備份語法36例20:備份ORCL數據庫的ORCLTBS1表空間。SQL>ALTERTABLESPACEORCLTBS1BEGINBACKUP;復制ORCLTBS1表空間的數據文件ORCLTBS1_1.DBF和ORCLTBS1_2.DBF到目標位置。SQL>ALTERTABLESPACEORCLTBS1ENDBACKUP;例20:備份ORCL數據庫的ORCLTBS1表空間。SQL>37(4)刪除表空間
語法DROPTABLESPACEtablespace_name說明:如果表空間非空,應帶有子句INCLUDINGCONTENTS若要刪除操作系統下的數據文件,應帶有子句ANDDATAFILES刪除參照完整性約束,應帶有子句CASCADECONSTRAINTS(4)刪除表空間語法38例21:刪除ORCL數據庫的ORCLTBS1表空間及其所有內容。例22:刪除ORCL數據庫的ORCLUNDO1表空間及其所有內容,同時刪除其所對應的數據文件。例23:刪除ORCL數據庫的ORCLUNDO1表空間及其所有內容,同時刪除其所對應的數據文件,以及其他表空間中與ORCLUNDO1表空間相關的參照完整性約束。SQL>DROPTABLESPACEORCLTBS1INCLUDINGCONTENTS;SQL>DROPTABLESPACEORCLUNDO1INCLUDINGCONTENTSANDDATAFILES;SQL>DROPTABLESPACEORCLUNDO1INCLUDINGCONTENTSANDDATAFILES
CASCADECONSTRAINTS;例21:刪除ORCL數據庫的ORCLTBS1表空間及其所有內39(5)大文件表空間的管理
概念大文件表空間只包含一個數據文件,可以減少數據庫中數據文件的數量,減少SGA中用于存放數據文件信息的內存需求,同時減小控制文件。通過對大文件表空間的操作可以實現對數據文件的透明操作,簡化了對數據文件的管理。大文件表空間只能采用本地管理方式,其段采用自動管理方式。如果在數據庫創建時設置系統默認的表空間類型為BIGFILE,則使用CREATETABLESPACE語句默認創建的就是大文件表空間。此時要創建傳統的小文件表空間,則需要使用CREATESMALLFILETABLESPACE語句。(5)大文件表空間的管理概念40創建大文件表空間的語句CREATEBIGFILETABLESPACE例24:創建一個大文件表空間ORCLTBS5。SQL>CREATEBIGFILETABLESPACEORCLTBS5DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS5_1.DBF'SIZE20M;創建大文件表空間的語句SQL>CREATEBIGFILE41大文件表空間的操作例25:將大文件表空間ORCLTBS5的數據文件D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS5_1.DBF大小修改為30MB。例26:將大文件表空間ORCLTBS5的數據文件D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS5_1.DBF修改為可以自動擴展。SQL>ALTERTABLESPACEORCLTBS5RESIZE30M;SQL>ALTERTABLESPACEORCLTBS5AUTOEXTEND
ONNEXT10MMAXSIZEUNLIMITED;大文件表空間的操作SQL>ALTERTABLESPACE42(6)表空間信息查詢
V$TABLESPACE:從控制文件中獲取的表空間名稱和編號信息。DBA_TABLESPACES:數據庫中所有表空間的信息。DBA_TABLESPACE_GROUPS:表空間組及其包含的表空間信息。DBA_SEGMENTS:所有表空間中段的信息。DBA_EXTENTS:所有表空間中區的信息。DBA_FREE_SPACE:所有表空間中空閑區的信息。V$DATAFILE:所有數據文件信息,包括所屬表空間的名稱和編號。V$TEMPFILE:所有臨時文件信息,包括所屬表空間的名稱和編號。DBA_DATA_FILES:數據文件及其所屬表空間信息。DBA_TEMP_FILES:臨時文件及其所屬表空間信息。DBA_USERS:所有用戶的默認表空間和臨時表空間信息。DBA_TS_QUOTAS:所有用戶的表空間配額信息。V$SORT_SEGMENT:數據庫實例的每個排序段信息。V$SORT_USER:用戶使用臨時排序段信息。(6)表空間信息查詢V$TABLESPACE:從控制文件中43查詢表空間基本信息查詢表空間數據文件信息查詢表空間空閑空間大小
SQL>SELECTTABLESPACE_NAME,EXTENT_MANAGEMENT,ALLOCATION_TYPE,CONTENTSFROMDBA_TABLESPACES;SQL>SELECTFILE_NAME,BLOCKS,TABLESPACE_NAMEFROMDBA_DATA_FILES;SQL>SELECTTABLESPACE_NAME,SUM(BYTES)FREE_SPACESFROMDBA_FREE_SPACE
GROUPBYTABLESPACE_NAME;查詢表空間基本信息SQL>SELECTTABLESPA44統計表空間空閑空間信息SQL>SELECTTABLESPACE_NAME"TABLESPACE",FILE_ID,COUNT(*)"PIECES",MAX(blocks)"MAXIMUM",MIN(blocks)"MINIMUM",AVG(blocks)"AVERAGE",SUM(blocks)
"TOTAL"FROMDBA_FREE_SPACE
GROUPBYTABLESPACE_NAME,FILE_ID;統計表空間空閑空間信息SQL>SELECTTABLESP45(7)利用OEM管理表空間創建表空間編輯表空間查看表空間信息刪除表空間臨時表空間組的管理(7)利用OEM管理表空間創建表空間46Oracle-10g數據庫基礎教程之邏輯存儲結構課件47Oracle-10g數據庫基礎教程之邏輯存儲結構課件48Oracle-10g數據庫基礎教程之邏輯存儲結構課件49Oracle-10g數據庫基礎教程之邏輯存儲結構課件50Oracle-10g數據庫基礎教程之邏輯存儲結構課件517.3數據塊(BLOCK)數據塊的概念數據塊結構數據塊的管理7.3數據塊(BLOCK)數據塊的概念52(1)數據塊的概念最小的I/O單元包括一個或者多個OSBLOCK在數據庫創建時設置,大小不可更改分為標準塊和非標準塊數據庫創建時,DB_BLOCK_SIZE參數設置標準塊大小(1)數據塊的概念最小的I/O單元53(2)數據庫塊結構Header(塊頭部)Freespace(空閑區)Data(行數據區)存儲區(2)數據庫塊結構Header(塊頭部)Freespace54塊頭部包括標題、表目錄、行目錄三部分。標題包含塊的一般屬性信息,如塊的物理地址、塊所屬段的類型等;表目錄包含數據塊中保存的表的信息;行目錄包含數據塊中的行地址等信息。存儲區包括行數據區和空閑區兩部分。行數據區是已經使用的空間,保存數據庫的對象數據;空閑區是尚未使用的存儲空間,用于存放新的行或用來更新已存在的行。塊頭部包括標題、表目錄、行目錄三部分。55(3)數據塊的管理
對塊的管理主要是對塊中可用存儲空間的管理,確定保留多少空閑空間,避免產生行鏈接、行遷移而影響數據的查詢效率。當向表格中插入數據時,如果行的長度大于塊的大小,行的信息無法存放在一個塊中,就需要使用多個塊存放行信息,這稱為行鏈接。當表格數據被更新時,如果更新后的數據長度大于塊長度,Oracle會將整行的數據從原數據塊遷移到新的數據塊中,只在原數據塊中留下一個指針指向新數據塊,這稱為行遷移。(3)數據塊的管理對塊的管理主要是對塊中可用存儲空間的管理56對塊的管理分為自動和手動兩種。如果建立表空間時使用本地管理方式,并且將段的管理方式設置為AUTO,則采用自動方式管理塊。否則,DBA可以采用手動管理方式,通過為段設置PCTFREE和PCTUSED兩個參數來控制數據塊中空閑空間的使用。對塊的管理分為自動和手動兩種。57PCTFREE指定塊中必須保留的最小空閑空間比例。當數據塊的自由空間百分率低于PCTFREE時,此數據塊被標志為USED,此時在數據塊中只可以進行更新操作,而不可以進行插入操作。該參數默認為10。PCTUSED指定可以向塊中插入數據時塊已使用的最大空間比列。當數據塊使用空間低于PCTUSED時,此塊標志為FREE,可以對數據塊中數據進行插入操作;反之,如果使用空間高于PCTUSED,則不可以進行插入操作。該參數默認為10。同時設置這兩個參數就能夠控制塊存儲空間的使用方式。插入操作只能向位于可用塊列表中的塊寫入數據。插入數據不能占用保留空閑空間,只有在對塊中的已有數據進行更新時,才能使用保留空閑空間。PCTFREE5880%80%40%Inserts1234InsertsPCTFREE=20
PCTUSED=40Insert(onfreelist)Inserts(offfreelist)80%80%40%Inserts1234InsertsPCT59INITRANS可以同時對此數據塊進行DML操作的事務的個數。MAXTRANS可以同時對此數據塊進行DML操作的最多事務的個數。INITRANS607.4區區的概念區的管理7.4區區的概念61(1)區的概念
區是由一系列連續的數據塊構成的邏輯存儲單元,是存儲空間分配與回收的最小單位。當創建一個數據庫對象時,Oracle為對象分配若干個區,以構成一個段來為對象提供初始的存儲空間。當段中已分配的區都寫滿后,Oracle會為段分配一個新區,以容納更多的數據。(1)區的概念區是由一系列連續的數據塊構成的邏輯存儲單元,62(2)區的管理區的分配在本地管理方式的表空間中,自動進行區的分配。可以通過使用UNIFORM選項,指定所有段的初始區和后續區具有統一大小,也可以使用AUTOALLOCATE選項指定由Oracle自動決定后續區大小。用戶不能通過其他參數來干預區的分配。在字典管理方式的表空間中,創建表空間時可以使用DEFAULTSTORAGE子句設置存儲參數,也可以在該表空間定義對象時通過STORAGE子句設置存儲參數。如果在定義對象時沒有設置存儲參數,則繼承表空間存儲參數的設置。(2)區的管理區的分配63例27:創建一個本地管理方式的表空間,區分配采用自動擴展方式進行。例28:創建一個本地管理方式的表空間,區分配采用固定大小,每個區5MB。SQL>CREATETABLESPACEORCLTBS6DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS6_1.DBF'SIZE20MEXTENTMANAGEMENTLOCALAUTOALLOCATE;SQL>CREATETABLESPACEORCLTBS7DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS7_1.DBF'SIZE10MEXTENTMANAGEMENTLOCALUNIFORMSIZE5M;例27:創建一個本地管理方式的表空間,區分配采用自動擴展方式64區的回收通常分配給段的區將一直保留在段中,不論區中的數據塊是否被使用。只有當段所屬的對象被刪除時,段中所有的區才會被回收。此外,在一些特殊情況下,也能夠回收未使用的區。例如,如果在創建回滾段時指定了OPTIMAL關鍵字,Oracle會定期回收回滾段中未使用的區。區的回收657.5段段概述回滾段7.5段段概述667.5.1段概述段的概述段是由一個或多個連續或不連續的區組成的邏輯存儲單元。
數據庫模式對象在邏輯上是以段來占據表空間的大小。段代表特定數據類型的數據存儲結構。一個對象只擁有一個段,一個段至少包含一個區。段的類型:數據段索引段臨時段回滾段7.5.1段概述段的概述67數據段數據段用來存儲表或簇的數據,可以細分為普通表數據段、索引表數據段、分區表數據段及簇數據段四種。索引段用來存放索引信息,主要包括ROWID和索引鍵。索引段與其相應的表段經常會被同時訪問,為了減少硬盤訪問的沖突,索引段與表段可以放到處于不同物理位置的表空間中。數據段68臨時段當用戶進行排序查詢時,如果在指定的內存無法完成排序,Oracle將自動從用戶默認的臨時表空間中指派臨時段進行排序。會話結束,數據將從臨時段中自動刪除。回滾段回滾段用于保存數據庫的回滾信息,包含當前未提交事務所修改的數據的原始版本。一個事務只能使用一個回滾段存放它的回滾信息,但是一個回滾段可以存放多個事務的回滾信息。回滾段可以動態創建和撤銷。臨時段697.5.2回滾段回滾段的工作方式回滾段的作用回滾段的種類回滾段的管理回滾段的查詢7.5.2回滾段回滾段的工作方式70(1)回滾段的工作方式回滾段采用循環寫的方式進行寫入。當回滾段中最后一個區寫滿時,Oracle將覆蓋寫入回滾段的第一個區,如果此時第一個區保存得回滾條目所對應的事務依然處于活動狀態(事務未提交),則此時該區不能被覆蓋,Oracle將為回滾段分配一個新的區。一個回滾段至少需要兩個區。一個事務可以占用回滾段中的多個區,同一個區也能夠存放多個事務的數據(1)回滾段的工作方式回滾段采用循環寫的方式進行寫入。當回滾71UpdatetransactionOldimageNewimageUndosegmentTableUpdatetransactionOldimageNew72(2)回滾段的作用Transactionrollback(事務回滾)Transactionrecovery(事務恢復)UndosegmentReadconsistency(讀一致性)Flashbackquery(閃回查詢)(2)回滾段的作用TransactionrollbackT73事務回滾當啟動一個事務時,Oracle把一個回滾段指定給該事務。當事務修改數據時,該數據修改前的信息會保存在該回滾段中,當用戶執行事務回滾操作時(ROLLBACK),Oracle會利用保存在回滾段中的數據將修改的數據恢復到原來的值。數據庫恢復當數據庫實例運行失敗時,在數據庫恢復時,Oracle先利用重做日志文件中的信息對數據文件進行恢復(包括提交事務和未提交事務的恢復),然后利用回滾段中的信息回滾未提交事務對數據的修改。事務回滾74數據的讀一致性當一個用戶對數據庫進行修改,但還沒有提交時,系統將用戶修改的數據的原始信息保存在回滾段中,這樣就可以為正在訪問相同數據的其他用戶提供一份該數據的原始視圖,從而保證當前用戶未提交的修改其他用戶無法看到,保證了數據的讀一致性。閃回查詢閃回查詢技術是Oracle10g引入的新特性,利用該技術可以查詢某個表過去某個時間點的狀態。數據的讀一致性75(3)回滾段的種類
系統回滾段創建數據庫時Oracle系統自動在SYSTEM表空間中創建一個“SYSTEM”系統回滾段。該回滾段只用于系統事務的回退處理,保存系統表空間中對象的前影像。非系統回滾段用戶可以創建非SYSTEM回滾段,用于用戶事務的回退處理,保存非系統表空間中對象的前影像。非系統回滾段又分為私有回滾段和公有回滾段,其中私有回滾段只能被一個實例使用,其數目和名稱由ROLLBACK_SEGMENTS參數決定;公有回滾段可以被多個實例共享使用,其數目由TRANSACTIONS和TRANSACTION_PER_ROLLBACK_SEGMENT決定。(3)回滾段的種類系統回滾段76(4)回滾段的管理
自動撤銷管理如果將初始化參數UNDO_MANAGEMENT設置為AUTO,則啟動自動撤銷管理方式。此時,只需要為數據庫創建撤銷表空間,并將UNDO_TABLESPACE參數設置為創建的撤銷表空間。這樣,數據庫運行時的回滾信息就由撤銷表空間自動管理。手動撤銷管理如果將數據庫初始化參數UNDO_MANAGEMENT設置為MANUAL,則需要手動進行撤銷管理。手動撤銷管理增加了DBA的管理負擔,正逐漸被Oracle淘汰。(4)回滾段的管理自動撤銷管理77(5)回滾段的查詢
DBA_ROLLBACK_SEGS:包含所有回滾段信息,包括回滾段的名稱、所屬表空間;DBA_SEGMENTS:包含數據庫中所有段的信息;V$ROLLNAME:包含所有聯機回滾段的名稱;V$ROLLSTAT:包含回滾段的性能統計信息;V$UNDOSTAT:包含撤銷表空間的性能統計信息;V$TRANSACTION:包含事務所使用的回滾段的信息。(5)回滾段的查詢DBA_ROLLBACK_SEGS:包含78總結數據庫的邏輯結構組成及其之間的關系表空間及其管理數據塊及其管理區及其管理段及其管理總結數據庫的邏輯結構組成及其之間的關系79第7章邏輯存儲結構第7章邏輯存儲結構80本章內容Oracle邏輯存儲結構概述表空間數據塊區段本章內容Oracle邏輯存儲結構概述81本章要求掌握Oracle數據庫邏輯結構組成掌握表空間的作用及其管理掌握擴展區的結構,了解擴展區的管理掌握段的作用,了解段的管理本章要求掌握Oracle數據庫邏輯結構組成827.1邏輯存儲結構概述概念邏輯存儲結構是從邏輯的角度來分析數據庫的構成的,是數據庫創建后利用邏輯概念來描述Oracle數據庫內部數據的組織和管理形式。在操作系統中,沒有數據庫邏輯存儲結構信息,而只有物理存儲結構信息。數據庫的邏輯存儲結構概念存儲在數據庫的數據字典中,可以通過數據字典查詢邏輯存儲結構信息。
邏輯結構單元類型數據塊:BLOCK區:EXTENT段:SEGMENT表空間:TABLESPACE7.1邏輯存儲結構概述概念83數據庫的存儲層次關系DatabaseLogicalPhysicalTablespaceDatafileOSblockOracle
blockSegmentExtent數據庫的存儲層次關系DatabaseLogicalPhysi84數據庫邏輯存儲結構之間的關系表空間數據段………
區間數據塊(段片)數據庫邏輯存儲結構之間的關系表空間數據段………區857.2表空間表空間概述表空間的管理7.2表空間表空間概述867.2.1表空間概述表空間的概念表空間的分類表空間的管理方式表空間的管理策略7.2.1表空間概述表空間的概念87(1)表空間概念Oracle數據庫在邏輯上可以劃分為一系列的邏輯空間,每一個邏輯空間就可以稱為一個表空間。一個數據庫由有一個或多個表空間構成,不同表空間用于存放不同應用的數據,表空間大小決定了數據庫的大小。一個表空間對應一個或多個數據文件,數據文件大小決定了表空間的大小。一個數據文件只能從屬于一個表空間。表空間是存儲模式對象的容器,一個數據庫對象只能存儲在一個表空間中(分區表和分區索引除外),但可以存儲在該表空間所對應的一個或多個數據文件中。若表空間只有一個數據文件,則該表空間中所有對象都保存在該文件中;若表空間對應多個數據文件,則表空間中的對象可以分布于不同的數據文件中。(1)表空間概念Oracle數據庫在邏輯上可以劃分為一系列的88數據庫、表空間、數據文件、數據庫對象之間的關系:數據庫、表空間、數據文件、數據庫對象之間的關系:89通過表空間,可以實現對數據庫存儲的管理:控制整個數據庫占用空間的大小;控制數據庫在磁盤上的分配,提高數據庫的I/O性能;控制用戶所占用的存儲空間的大小。通過表空間,可以實現對數據庫存儲的管理:90(2)表空間的分類系統表空間——包括SYSTEM和SYSAUXSYSTEM表空間,主要存儲:數據庫的數據字典;PL/SQL程序的源代碼和解釋代碼,包括存儲過程、函數、包、觸發器等;數據庫對象的定義,如表、視圖、序列、同義詞等。SYSAUX表空間SYSAUX表空間是Oracle10g新增的輔助系統表空間,主要用于存儲數據庫組件等信息,以減小SYSTEM表空間的負荷。在通常情況下,不允許刪除、重命名及傳輸SYSAUX表空間。(2)表空間的分類系統表空間——包括SYSTEM和SYSAU91非系統表空間撤銷表空間專門進行回滾信息的自動管理,由回滾段構成。一個數據庫可以有多個撤銷表空間,但每個數據庫實例只能使用一個由UNDO_TABLESPACE參數設置的撤銷表空間。初始化參數UNDO_MANAGEMENT=AUTO時,系統使用撤銷表空間自動進行回滾信息管理。臨時表空間專門進行臨時數據管理的表空間。在數據庫實例運行過程中,執行排序等SQL語句時會產生大量的臨時數據,這些臨時數據將保存在數據庫臨時表空間中。建議為數據庫單獨定義默認的臨時表空間。非系統表空間92用戶表空間保存用戶數據。大文件表空間與小文件表空間所謂大文件表空間(BigfileTablespace)是指一個表空間只包含一個大數據文件,該文件的最大尺寸為128TB(數據塊大小為32KB)或只32TB(數據塊大小為8KB)。與大文件表空間相對應,系統默認創建的表空間稱為小文件表空間(SmallfileTablespace),如SYSTEM表空間、SYSAUX表空間等。小文件表空間可以包含多達1024個數據文件。小文件表空間的總容量與大文件表空間的容量基本相似。用戶表空間93(3)表空間的管理方式字典管理方式表空間使用數據字典來管理存儲空間的分配,當進行區的分配與回收時,Oracle將對數據字典中的相關基礎表進行更新,同時會產生回滾信息和重做信息。字典管理方式將漸漸被淘汰。本地管理方式在本地管理方式中,區的分配和管理信息都存儲在表空間的數據文件中,而與數據字典無關。表空間在每個數據文件中維護一個“位圖”結構,用于記錄表空間中所有區的分配情況,因此區在分配與回收時,Oracle將對數據文件中的位圖進行更新,不會產生回滾信息或重做信息。(3)表空間的管理方式字典管理方式94表空間本地管理方式的優勢:
由于在區分配與回收過程中不需要對數據字典進行訪問,提高了表空間存儲管理操作的速度和并發性。能夠避免表空間存儲管理操作中的遞歸現象,提高了存儲空間管理操作性能。能夠在保留可查詢性同時,將整個數據庫設置為只讀狀態。這種數據庫可以作為備用數據庫使用。簡化了表空間的存儲管理,由Oracle自動完成存儲管理操作。降低了用戶對數據字典的依賴性。不存在磁盤碎片問題,因為必要的信息都存儲在數據文件的位圖中,而不是保存在數據字典中。表空間本地管理方式的優勢:95(4)表空間管理策略將數據字典與用戶數據分離,避免由于數據字典對象和用戶對象保存在一個數據文件中而產生I/O沖突。將回滾數據與用戶數據分離,避免由于硬盤損壞而導致永久性的數據丟失。將表空間的數據文件分散保存到不同的硬盤上,平均分布物理I/O操作。為不同的應用創建獨立的表空間,避免多個應用之間的相互干擾。能夠將表空間設置為脫機狀態或聯機狀態,以便對數據庫的一部分進行備份或恢復。能夠將表空間設置為只讀狀態,從而將數據庫的一部分設置為只讀狀態。能夠為某種特殊用途專門設置一個表空間,如臨時表空間,優化表空間的使用效率。能夠更加靈活地為用戶設置表空間配額。(4)表空間管理策略將數據字典與用戶數據分離,避免由于數據字967.2.2表空間的管理(本地管理方式)創建表空間修改表空間表空間的備份刪除表空間大文件表空間的管理表空間信息查詢利用OEM管理表空間7.2.2表空間的管理(本地管理方式)創建表空間97(1)創建表空間
在創建本地管理方式下的表空間時,應該確定表空間的名稱、類型、對應的數據文件的名稱和位置以及區的分配方式、段的管理方式。表空間名稱不能超過30個字符,必須以字母開頭,可以包含字母、數字以及一些特殊字符(如#、_、$)等;表空間的類型包括普通表空間、臨時表空間和撤銷表空間;表空間中區的分配方式包括兩種方式:自動擴展(AUTOALLOCATE)和定制(UNIFORM);段的管理包括兩種方式:自動管理(AUTO)和手動管理(MANUAL)。(1)創建表空間在創建本地管理方式下的表空間時,應該確定表98創建永久表空間
創建永久表空間使用CREATETABLESPACE語句來實現,該語句包含以下幾個子句:DATAFILE:設定表空間對應的數據文件。EXTENTMANAGEMENT:指定表空間的管理方式,取值為LOCAL(默認)或DICTIONARY。AUTOALLOCATE(默認)或UNIFORM:設定區的分配方式。SEGMENTSPACEMANAGEMENT:設定段的管理方式,其取值為MANUAL或AUTO(默認)。創建永久表空間創建永久表空間使用CREATETABLES99例1:為ORCL數據庫創建一個永久性的表空間ORCLTBS1,區自動擴展,段采用自動管理方式。例2:為ORCL數據庫創建一個永久性的表空間ORCLTBS2,區定制分配,段采用自動管理方式。SQL>CREATETABLESPACEORCLTBS1DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS1_1.DBF'SIZE50M;SQL>CREATETABLESPACEORCLTBS2DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS2_1.DBF'SIZE50MEXTENTMANAGEMENTLOCALUNIFORMSIZE512K;例1:為ORCL數據庫創建一個永久性的表空間ORCLTBS1100例3:為ORCL數據庫創建一個永久性的表空間ORCLTBS3,區自動擴展,段采用手動管理方式。例4:為ORCL數據庫創建一個永久性的表空間ORCLTBS4,區定制分配,段采用手動管理方式。SQL>CREATETABLESPACEORCLTBS3DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS3_1.DBF'SIZE50MSEGMENTSPACEMANAGEMENTMANUAL;SQL>CREATETABLESPACEORCLTBS4DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS4_1.DBF'SIZE50MEXTENTMANAGEMENTLOCALUNIFORMSIZE512KSEGMENTSPACEMANAGEMENTMANUAL;數據文件的名稱分別為ORCLTBS3_1.DBF和ORCLTBS4_1.DBF例3:為ORCL數據庫創建一個永久性的表空間ORCLTBS3101創建臨時表空間使用CREATETEMPORARYTABLESPACE語句創建臨時表空間,用TEMPFILE子句設置臨時數據文件。注意:臨時表空間中區的分配方式只能是UNIFORM,而不能是AUTOALLOCATE,因為這樣才能保證不會在臨時段中產生過多的存儲碎片。例5:為ORCL數據庫創建一個臨時表空間ORCLTEMP1。SQL>CREATETEMPORARYTABLESPACEORCLTEMP1TEMPFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTEMP1_1.DBF'SIZE20MEXTENTMANAGEMENTLOCALUNIFORM
SIZE
16M;創建臨時表空間使用CREATETEMPORARYTABL102臨時表空間組將一個或多個臨時表空間構成一個表空間組。優點:避免由于單個臨時表空間的空間不足而導致數據庫運行故障。可以保證在一個簡單并行操作中多個并行服務的執行。臨時表空間組不需要顯式創建,為臨時表空間組指定第一個臨時表空間時隱式創建,當臨時表空間組中最后一個臨時表空間刪除時而隱式地刪除。通過在CREATETEMPORARYTABLSPACE或ALTERTABLESPACE語句中使用TABLESPACEGROUP短語創建臨時表空間組。臨時表空間組103例6:為ORCL數據庫創建一個臨時表空間ORCLTEMP2,并放入臨時表空間組temp_group1。同時,將臨時表空間ORCLTEMP1也放入該temp_group1中。SQL>CREATETEMPORARYTABLESPACEORCLTEMP2TEMPFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTEMP2_1.DBF'SIZE20MEXTENTMANAGEMENTLOCALUNIFORMSIZE16M
TABLESPACE
GROUPtemp_group1;SQL>ALTERTABLESPACEORCLTEMP1TABLESPACE
GROUPtemp_group1;例6:為ORCL數據庫創建一個臨時表空間ORCLTEMP2,104創建撤銷表空間如果數據庫中沒有創建撤銷表空間,那么將使用SYSTEM表空間來管理回滾段。如果數據庫中包含多個撤銷表空間,那么一個實例只能使用一個處于活動狀態的撤銷表空間,可以通過參數UNDO_TABLESPACE來指定;如果數據庫中只包含一個撤銷表空間,那么數據庫實例啟動后會自動使用該撤銷表空間。如果要使用撤銷表空間對數據庫回滾信息進行自動管理,則必須將初始化參數UNDO_MANAGEMENT=AUTO。創建撤銷表空間如果數據庫中沒有創建撤銷表空間,那么將使用SY105可以使用CREATEUNDOTABLESPACE語句創建撤銷表空間,但是在該語句中只能指定DATAFILE和EXTENTMANAGEMENTLOCAL兩個子句,而不能指定其他子句。例7:為ORCL數據庫創建一個撤銷表空間。注意:如果要在數據庫使用該撤銷表空間,需要設置參數UNDO_MANAGEMENT=AUTOUNDO_TABLESPACE=ORCLUNDO1SQL>CREATEUNDOTABLESPACEORCLUNDO1DATAFILE'D:\ORACLE\ORADATA\ORCL\ORCLUNDO1_1.DBF'SIZE20M;可以使用CREATEUNDOTABLESPACE語句創建106(2)修改表空間可以對表空間進行下列修改操作:擴展表空間修改表空間可用性修改表空間讀/寫性設置默認表空間表空間重命名注意:不能將本地管理的永久性表空間轉換為本地管理的臨時表空間,也不能修改本地管理表空間中段的管理方式。(2)修改表空間可以對表空間進行下列修改操作:107擴展表空間為表空間添加數據文件通過ALTERTABLESPACE…ADD
DATAFILE語句為永久表空間添加數據文件,通過ALTERTABLESPACE…ADD
TEMPFILE語句為臨時表空間添加臨時數據文件。例8:為ORCL數據庫的ORCLTBS1表空間添加一個大小為10MB的新數據文件。例9:為ORCL數據庫的ORCLTEMP1表空間添加一個大小為10MB的臨時數據文件。SQL>ALTERTABLESPACEORCLTBS1ADDDATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS1_2.DBF'SIZE10M;SQL>ALTERTABLESPACEORCLTEMP1ADDTEMPFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTEMP1_2.DBF'SIZE10M;擴展表空間為表空間添加數據文件SQL>ALTERTABL108改變數據文件的大小可以通過改變表空間已有數據文件的大小,達到擴展表空間的目的。例10:將ORCL數據庫的ORCLTBS1表空間的數據文件ORCLTBS1_2.DBF大小增加到20MB。SQL>ALTERDATABASE
DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS1_2.DBF'
RESIZE20M;改變數據文件的大小SQL>ALTERDATABASED109改變數據文件的擴展方式如果在創建表空間或為表空間增加數據文件時沒有指定AUTOEXTENDON選項,則該文件的大小是固定的。如果為數據文件指定了AUTOEXTENDON選項,當數據文件被填滿時,數據文件會自動擴展,即表空間被擴展了。例11:將ORCL數據庫的ORCLTBS1表空間的數據文件ORCLTBS1_2.DBF設置為自動擴展,每次擴展5MB空間,文件最大為100MB。SQL>ALTERDATABASEDATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS1_2.DBF'AUTOEXTENDONNEXT5MMAXSIZE100M;改變數據文件的擴展方式SQL>ALTERDATABASE110修改表空間可用性
離線狀態的表空間是不能進行數據訪問的,所對應的所有數據文件也都處于脫機狀態。一些表空間必須是在線狀態:SYSTEM表空間存放在線回退信息的撤銷表空間臨時表空間語法ALTERTABLESPACE…ONLINE|OFFLINE例12、13:SQL>ALTERTABLESPACEORCLTBS1OFFLINE;SQL>ALTERTABLESPACEORCLTBS1ONLINE;修改表空間可用性離線狀態的表空間是不能進行數據訪問的,所對111修改表空間讀寫性語法:ALTERTABLESPACE…READONLY|READWRITE設置“只讀”的目的:避免對DB中大量靜態數據進行備份;避免用戶對歷史數據進行修改。表空間只有滿足下列要求才可以轉換為只讀狀態:表空間處于聯機狀態;表空間中不能包含任何活動的回退段;如果表空間正在進行聯機數據庫備份,不能將它設置為只讀狀態。因為聯機備份結束時,Oracle更新表空間數據文件的頭部信息。例14、15:SQL>ALTERTABLESPACEORCLTBS1READONLY;SQL>ALTERTABLESPACEORCLTBS1READWRITE;修改表空間讀寫性語法:SQL>ALTERTABLESPA112設置默認表空間在Oracle10g數據庫中,默認表空間為USERS表空間,默認臨時表空間為TEMP表空間。設置數據庫的默認表空間ALTERDATABASEDEFAULTTABLESPACE設置數據庫的默認臨時表空間ALTERDATABASEDEFAULT
TEMPORARYTABLESPACE例16、17、18:SQL>ALTERDATABASEDEFAULTTABLESPACEORCLTBS1;SQL>ALTERDATABASEDEFAULTTEMPORARYTABLESPACETEMP;SQL>ALTERDATABASEDEFAULTTEMPORARYTABLESPACEtemp_group1;設置默認表空間在Oracle10g數據庫中,默認表空間為US113表空間重命名語句ALTERTABLESPACE…RENAMETO當重命名一個表空間時:數據庫會自動更新數據字典、控制文件以及數據文件頭部中對該表空間的引用。表空間ID號并沒有修改,如果該表空間是數據庫默認表空間,那么重命名后仍然是數據庫的默認表空間。注意:不能重命名SYSTEM表空間和SYSAUX表空間;不能重命名處于脫機狀態或部分數據文件處于脫機狀態的表空間。表空間重命名語句114(3)表空間的備份語法ALTERTABLESPACE…BEGIN|ENDBACKUP在數據庫進行熱備份(聯機備份)時,需要分別對表空間進行備份。基本步驟為:使用ALTERTABLESPACE…BEGINBACKUP語句將表空間設置為備份模式。在操作系統中備份表空間所對應的數據文件。使用ALTERTABLESPACE…ENDBACKUP語句結束表空間的備份模式。(3)表空間的備份語法115例20:備份ORCL數據庫的ORCLTBS1表空間。SQL>ALTERTABLESPACEORCLTBS1BEGINBACKUP;復制ORCLTBS1表空間的數據文件ORCLTBS1_1.DBF和ORCLTBS1_2.DBF到目標位置。SQL>ALTERTABLESPACEORCLTBS1ENDBACKUP;例20:備份ORCL數據庫的ORCLTBS1表空間。SQL>116(4)刪除表空間
語法DROPTABLESPACEtablespace_name說明:如果表空間非空,應帶有子句INCLUDINGCONTENTS若要刪除操作系統下的數據文件,應帶有子句ANDDATAFILES刪除參照完整性約束,應帶有子句CASCADECONSTRAINTS(4)刪除表空間語法117例21:刪除ORCL數據庫的ORCLTBS1表空間及其所有內容。例22:刪除ORCL數據庫的ORCLUNDO1表空間及其所有內容,同時刪除其所對應的數據文件。例23:刪除ORCL數據庫的ORCLUNDO1表空間及其所有內容,同時刪除其所對應的數據文件,以及其他表空間中與ORCLUNDO1表空間相關的參照完整性約束。SQL>DROPTABLESPACEORCLTBS1INCLUDINGCONTENTS;SQL>DROPTABLESPACEORCLUNDO1INCLUDINGCONTENTSANDDATAFILES;SQL>DROPTABLESPACEORCLUNDO1INCLUDINGCONTENTSANDDATAFILES
CASCADECONSTRAINTS;例21:刪除ORCL數據庫的ORCLTBS1表空間及其所有內118(5)大文件表空間的管理
概念大文件表空間只包含一個數據文件,可以減少數據庫中數據文件的數量,減少SGA中用于存放數據文件信息的內存需求,同時減小控制文件。通過對大文件表空間的操作可以實現對數據文件的透明操作,簡化了對數據文件的管理。大文件表空間只能采用本地管理方式,其段采用自動管理方式。如果在數據庫創建時設置系統默認的表空間類型為BIGFILE,則使用CREATETABLESPACE語句默認創建的就是大文件表空間。此時要創建傳統的小文件表空間,則需要使用CREATESMALLFILETABLESPACE語句。(5)大文件表空間的管理概念119創建大文件表空間的語句CREATEBIGFILETABLESPACE例24:創建一個大文件表空間ORCLTBS5。SQL>CREATEBIGFILETA
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論