下面是小編為大家精心整理的創建表空間 創建\\文章,供大家閱讀參考。
Create tablespace 表空間名
[datafile 子句]
[minimum extent 正整數[K|M]
[blocksize 正整數[K]]
[logging|nologging]
[default 存儲子句]
[online|offline]
[permanent|temporary]
[區段管理子句]
[段管理子句]
表空間名:所要創建的表空間名.
Datafileb子句:組成所要創建的表空間的文件說明. Minimum extent:表空間中所使用的每個EXTENT都必須是該參數所指定數的整數倍.
Blocksize:為該表空間說明非標準決的大小.在使用這一子句之前,必須先設置DB_CACHE_SIZE和DB_nK_CACHE_SIZE參數,而且該子句中所說明的正整數一定與DB_nK_CACHE_SIZE參數的設定相對應.
Logging:說明在該表空間中所有數據的變化都將寫入重做日志文件中,這也是默認方式.
Nologging:說明在該表空間中所有數據的變化不都寫入重做
日志文件中,nologging只影響一些DML和DDL命令.
Default 存儲子句:說明所有在該表空間中所創建的對象的默認存儲參數.
Offline:說明該表空間在創建后立即被置為脫機,即不能使用.
在數據字典管理的表空間中所有的EXTENTS的管理都是在數據字典中進行的,而且每一個存儲在同一個表空間中的段可以具有不同的存儲子句。在這種表空間的管理方法中可以按您的需要修改存儲參數,所以存儲管理比較靈活但系統的效率較低。如果使用這種表空間的管理方法,有時需要合并碎片。
本地管理的表空間其空閑EXTENTS是在表空間中管理的,它是使用位圖來記錄空閑EXTENTS,位圖中的每一位對應于一塊或一組塊,而每位的值批示空閑或分配。當一個EXTENT 被分配或釋放時,ORACLE服務器就會修改位圖中相應位的值以反映該EXTENT的新的狀態。位圖存放在表空間所對應的數據文件的文件頭中。
使用本地管理的表空間減少了數據字典表的競爭,而且當磁盤空間分配或收回時也不會產生回滾(還原),它也不需要合并碎片。在本地管理的表空間中無法按實際需要來隨
意修改存儲參數,所以存儲管理不像數據字典(系統)管理的表空間那樣靈活,但系統的效率很高。
在這里為了給大家演示表空間的創建及其管理,我們假設我們在做一個探月工程的項目需要為這個項目創建自己的表空間和其他相應的輔助表空間,以及模擬如何管理我們這個項目這涉及到的表空間和它的相關結構。
好,讓我們開始吧,大家跟著我,我帶你們去探月。
一.創建數據字典管理的表空間:
SQL> connect / as sysdba
已連接。
SQL> create tablespace moon
2 datafile "e:\disk2\moon\moon01.dbf" size 50 m,
3 "e:\disk4\moon\moon02.dbf" size 50 m
4 minimum extent 50k extent management dictionary
5 default storage (initial 50k next 50k maxextents 100 pctincrease 0);
create tablespace moon
*
第 1 行出現錯誤:
ORA-12913: 無法創建字典管理的表空間
二.創建本地管理的表空間
讓我們為探月工程創建一個存儲工程所需要數據的表空間MOON。
SQL> create tablespace moon
2 datafile "e:\disk2\moon\moon01.dbf" size 50 m,
3 "e:\disk4\moon\moon02.dbf" size 50 m
4 extent management local
5 uniform size 1m;
表空間已創建。
接下來還要為這個項目創建一個名為MOON_INDEX的索引表空間。該表空間只基于一個數據文件,其文件名為e:\disk6\moon\moon_index.dbf,其大小為50M(在實際當中可能是幾百M)。為了方便磁盤存儲的管理,我們研究決定使用本地管理的表空間(EXTENT MANAGEMENT LOCAL)。
讓我們來創建這個表空間
SQL> create tablespace moon_index
2 datafile "e:\disk6\moon\moon_index.dbf"
3 size 50 M
4 extent management local
5 uniform size 1M;
表空間已創建。
我們在創建完表空間后要養成良好習慣利用dba_tablespaces 視圖去查看一下自己創建的表空間是否滿足要求:
SQL> select tablespace_name,block_size,extent_management,segment_spa ce_management
2 from dba_tablespaces
3 where tablespace_name like "moon%";
未選定行//這里沒有信息并非是我們的表空間沒創建成功而是表空間名以大寫存儲
SQL> select tablespace_name,block_size,extent_management,segment_spa ce_management
2 from dba_tablespaces
3 where tablespace_name like "MOON%";
TABLESPACE_NAME BLOCK_SIZE EXTENT_MAN SEGMEN
------------------------------ ---------- ---------- ------
MOON 8192 LOCAL MANUAL
MOON_INDEX 8192 LOCAL MANUAL
接著,再讓我們查看一下表空間的參數配置:
SQL> select tablespace_name,initial_extent,next_extent,
2 max_extents,pct_increase,min_extlen
3 from dba_tablespaces
4 where tablespace_name like "MOON%"; TABLESPACE_NAME INITIAL_EXTENT
NEXT_EXTENT MAX_EXTENTS PCT_INCREASE MIN_EXTLEN
------------------------------ -------------- ----------- ----------- ------------ ----------
MOON 1048576 1048576 2147483645 0 1048576
MOON_INDEX 1048576 1048576 2147483645 0 1048576
再讓我們查看一下表空間中的數據文件是否已經成功創建,因為表空間是由多數據文件構成如果表空間中沒有數據文件那表空間也就不存在了:
SQL> select file_id,file_name,tablespace_name,autoextensible
2 from dba_data_files
3 order by file_id;
FILE_ID FILE_NAME TABLESPACE_NAME AUT
---------- ------------------------------ ------------------------------ ---
1 E:\ORACLE\PRODUCT\10.1.0\ORADA SYSTEM YES
TA\TEST\SYSTEM01.DBF
2 E:\ORACLE\PRODUCT\10.1.0\ORADA UNDOTBS1 YES
TA\TEST\UNDOTBS01.DBF
3 E:\ORACLE\PRODUCT\10.1.0\ORADA SYSAUX YES
TA\TEST\SYSAUX01.DBF
4 E:\ORACLE\PRODUCT\10.1.0\ORADA USERS YES
TA\TEST\USERS01.DBF
FILE_ID FILE_NAME TABLESPACE_NAME AUT
---------- ------------------------------ ------------------------------ ---
5 E:\DISK2\MOON\MOON01.DBF MOON NO
6 E:\DISK4\MOON\MOON02.DBF MOON NO
7 E:\DISK6\MOON\MOON_INDEX.DBF MOON_INDEX NO
已選擇7行。
在為我們宏大探月項目創建完成前兩個所需的表空間去,這只是我們浩大工程冰山一角,還需要我們做更多的工作,再讓我們為探月工程創建一個很重要的表空間“還原表空間”:在數據庫初始創建時庫中有一個叫UNDOTBS1的還原表空間,但對于我們這個項目建議大家為我們這個項目單獨創建一個“moon_undo”的表空間,它也是基于操作系統本地管理的數據文件名為‘e:\disk7\moon\moon_undo.dbf,其大小為20m:
SQL> create undo tablespace moon_undo
2 datafile "e:\disk7\moon\moon_undo.dbf"
3 size 20 m;
表空間已創建。
在創建完成后一定要查看一下,保證你創建的表空間是滿足要求的:
SQL> select tablespace_name,block_size,extent_management,segment_spa ce_management
2 from dba_tablespaces
3 where tablespace_name like "MOON%";
TABLESPACE_NAME BLOCK_SIZE EXTENT_MAN SEGMEN
------------------------------ ---------- ---------- ------
MOON 8192 LOCAL MANUAL
MOON_INDEX 8192 LOCAL MANUAL
MOON_UNDO 8192 LOCAL MANUAL
然后再確認一下,我們所創建表空間的類型:
SQL> select tablespace_name,status,contents
2 from dba_tablespaces
3 where tablespace_name like "MOON%";
TABLESPACE_NAME STATUS CONTENTS ------------------------------ --------- ---------
MOON ONLINE PERMANENT
MOON_INDEX ONLINE PERMANENT
MOON_UNDO ONLINE UNDO
好了,已經做了一些準備工作了,我們在一步一步的接近我們的目標,但是不要高興太早,因為我們才剛剛開始,大家是否還記得臨時表空間,還記得它的作用嗎?如果忘記了希望你回去注意復習,古人云:“溫故而知新”,對于我們學習oracle來說這是非常重要,畢竟它的中文名稱叫“甲古文”。在我們這個項目中一定會存儲大量數據,在我們實施工程時也一定會用到這些數據,那么這么大量的數據在查看時會非常困難,那么我們可以借助order by 和group by 子句來進行查詢以幫助我們把數據排序分組以便我們能夠更快的分析數據。
那么基于以上項目需要,我們需要創建一個臨時表空間“MOON_TEMP“,臨時表空間可以由多個用戶共享,在其中不能包含任何永久對象。臨時表空間中的排序段是在實例啟
動后當有第一個排離操作時創建的,排序段在需要時可通過分配EXTENTS來擴展,并一直可以擴展到大于或等于在該實例上所運行的所有排序活動的總和。
當創建臨時表空間時,必須使用標準數據塊。建議大家用本地管理:
SQL> create temporary tablespace moon_temp
2 tempfile "e:\disk8\moon\moon_temp.dbf"
3 size 10 m
4 extent management local
5 uniform size 2 m;
表空間已創建。
做項目態度一定要嚴謹,保持良好習慣我們來查看一下:
SQL> select tablespace_name,status,contents
2 from dba_tablespaces
3 where tablespace_name like "MOON%";
TABLESPACE_NAME STATUS CONTENTS ------------------------------ --------- ---------
MOON ONLINE PERMANENT
MOON_INDEX ONLINE PERMANENT
MOON_TEMP ONLINE TEMPORARY
MOON_UNDO ONLINE UNDO
SQL> select tablespace_name,block_size,extent_management,
2 segment_space_management,min_extlen
3 from dba_tablespaces
4 where tablespace_name like "MOON%";
TABLESPACE_NAME BLOCK_SIZE EXTENT_MAN SEGMEN MIN_EXTLEN
------------------------------ ---------- ---------- ------ ----------
MOON 8192 LOCAL MANUAL 1048576
MOON_INDEX 8192 LOCAL MANUAL 1048576
MOON_TEMP 8192 LOCAL MANUAL 2097152
MOON_UNDO 8192 LOCAL MANUAL 65536
注:本地管理的臨時表空間是基于臨時數據文件(TEMP FILES)的,這些文件與普通的數據文件非常相似,但它們還具有如下的特性:
1.臨時數據文件的狀態不能置為只讀。
2.不能將臨時數據文件重新命名。
3.臨時數據文件總是置為NOLOGGING狀態。
4.不能使用ALTER DATABASE命令創建臨時數據文件。5.以只讀方式運行的數據庫需要臨時數據文件。
6.介質恢復是不能恢復臨時數據文件的。
7.另外,為了優化某一臨時表空間中排序的效率,應該將UNIFORM SIZE 設為SORT_AREA_SIZE(PGA中排序區的大?。﹨档恼麛当?。
那么還需要注意的一點是,只有我們把MOON_TEMP表空間設置為“默認臨時表空間”我們的探月工程項目才能使用這個MOON_TEMP表空間作為為我們工程服務的臨時表空間。那么接下教會大家如何將普通的臨時表空間改為默認臨時表空間,這個過程非常簡單,但它的意義非凡:
首先,讓我們來查看一下當前的默認臨是表空間是“誰”,
SQL> col property_value for a30
SQL> col description for a50
SQL> select * from database_properties
2 where property_name like "DEFAULT%";
PROPERTY_NAME PROPERTY_VALUE DESCRIPTION
------------------------------ ------------------------------ --------------------------------------
DEFAULT_TEMP_TABLESPACE TEMP Name of default temporary tablespace
DEFAULT_PERMANENT_TABLESPACE USERS Name of default permanent tablespace
DEFAULT_TBS_TYPE SMALLFILE Default tablespace type
我們看到當前數據庫的默認臨時表空間是TEMP,現在我們可以把默認臨時表空間改為我們探月工程所需要的
MOON_TEMP,為我們的工程服務。
SQL> alter database default temporary tablespace moon_temp;數據庫已更改。
再讓我們來查詢一下是不是修改了默認表空間:
SQL> select * from database_properties
2 where property_name like "DEFAULT%";
PROPERTY_NAME PROPERTY_VALUE DESCRIPTION
------------------------------ ------------------------------ --------------------------------------
DEFAULT_TEMP_TABLESPACE MOON_TEMP Name of default temporary tablespace
DEFAULT_PERMANENT_TABLESPACE USERS Name of default permanent tablespace
DEFAULT_TBS_TYPE SMALLFILE Default tablespace type
注:在默認臨時表空間上有一些限制:
首先,默認臨時表空間不能被刪除,除非有一個新的可以使用的默認臨時表空間。也就是必須先使用ALTER DATABASE將一個新的臨時表空間設置為默認臨時表空間,之后才能刪除舊的(默認)臨時表空間。使用舊的(默認)臨時表空間的用戶被自動地賦予新的默認臨時表空間。
因為默認臨時表空間必須是臨時表空間所以不能將默認臨時表空間改為一個永久表空間,也不能將默認臨時表空間設置為脫機。
從顯示結果中我們看到確定被我們修改了,做到這大家是不是有一點小小的成就感呢,不要洋洋得意啊,后面還有很多工作要做呢,我們需要努力吧!
當表空間需要維護或其中數據需要保護時,我們該怎么辦?請大家想想!
答:可以把表空間設置為脫機。
一個表空間的正常狀態是聯機狀態,此時數據庫用戶可以訪問該表空間中的數據。然而,有時數據庫管理員需要將某一
表空間設置為脫機狀態,以進行數據庫的維護其維護工作包括:
1.在數據庫處于打開狀態下移動數據文件。
2.在數據庫處于打開狀態下恢復一個表空間或一個數據文件。
3.執行對表空間的脫機備份(雖然對表空間可以進行聯機備份)。
4.使數據庫的一部分不可以被訪問,而其他的部分可以被正常地訪問。
當一個表空間被設置為脫機狀態時,該表空間上的數據是不可以訪問的。如果用戶試圖訪問該表空間上的數據就會收到出錯信息。
當一個表空間被設置為脫機狀態時或重新被設置為聯機狀態時,oracle會把這一事件記錄在數據字典和控制文件中,也會記錄在報警文件中。如果當數據庫被關閉時,某一表空間為脫機狀態,那么當數據庫被加載(MOUNT)和重新打開時該表空間仍保持為脫機狀態。
注:并不是所有的表空間都可以被設置為脫機狀態,以下的表空間不能被設置為脫機狀態:
1.系統(SYSTEM)表空間
2.上面有活動的還原/回滾段的表空間。
3.默認臨時表空間。
如何將表空間進行脫機/聯機:
SQL> alter tablespace moon offline;
表空間已更改。
讓我們來查看一下:
SQL> select tablespace_name,status,contents
2 from dba_tablespaces
3 where tablespace_name like "MOON%";
TABLESPACE_NAME STATUS CONTENTS ------------------------------ --------- ---------
MOON OFFLINE PERMANENT
MOON_INDEX ONLINE PERMANENT
MOON_TEMP ONLINE TEMPORARY
MOON_UNDO ONLINE UNDO
SQL> select file#,name,status
2 from v$datafile
3 ;
FILE# NAME STATUS
---------- -------------------------------------------------- -------
1
E:\ORACLE\PRODUCT\10.1.0\ORADATA\TEST\SYSTEM01.DBF SYSTEM
2
E:\ORACLE\PRODUCT\10.1.0\ORADATA\TEST\UNDOTBS01.DB ONLINE
F
3
E:\ORACLE\PRODUCT\10.1.0\ORADATA\TEST\SYSAUX01.DBF ONLINE
4
E:\ORACLE\PRODUCT\10.1.0\ORADATA\TEST\USERS01.DBF ONLINE
5 E:\DISK2\MOON\MOON01.DBF OFFLINE
6 E:\DISK4\MOON\MOON02.DBF OFFLINE
7 E:\DISK6\MOON\MOON_INDEX.DBF ONLINE
8 E:\DISK7\MOON\MOON_UNDO.DBF ONLINE
已選擇8行。
當需要向MOON表空間寫入新的重要數據時,我們需要把這個表空間重新聯機:
SQL> alter tablespace moon online;
表空間已更改。
SQL> select tablespace_name,status,contents
2 from dba_tablespaces
3 where tablespace_name like "MOON%";
TABLESPACE_NAME STATUS CONTENTS
------------------------------ --------- ---------
MOON ONLINE PERMANENT
MOON_INDEX ONLINE PERMANENT
MOON_TEMP ONLINE TEMPORARY
MOON_UNDO ONLINE UNDO
SQL> select file#,name,status
2 from v$datafile
3 ;
FILE# NAME STATUS
---------- -------------------------------------------------- -------
1
E:\ORACLE\PRODUCT\10.1.0\ORADATA\TEST\SYSTEM01.DBF SYSTEM
2
E:\ORACLE\PRODUCT\10.1.0\ORADATA\TEST\UNDOTBS01.DB ONLINE
F
3
E:\ORACLE\PRODUCT\10.1.0\ORADATA\TEST\SYSAUX01.DBF ONLINE
4
E:\ORACLE\PRODUCT\10.1.0\ORADATA\TEST\USERS01.DBF ONLINE
5 E:\DISK2\MOON\MOON01.DBF ONLINE
6 E:\DISK4\MOON\MOON02.DBF ONLINE
7 E:\DISK6\MOON\MOON_INDEX.DBF ONLINE
8 E:\DISK7\MOON\MOON_UNDO.DBF ONLINE
對于我們這個探月工程來說,這可是世界矚目的,所以我重要表空間中的數據是絕對保密的,既使是我們自己的技術人員也只能看而不能取走,因此我們要把MOON表空間設置為只讀:
當一個表空間處在只讀狀態時,在該表空間中的數據只能進行讀操作,也就是說在上面的數據是不會變化的,因此也就不需要重做日志的保護,所以操作只讀狀態表空間上的數據時不會產生重做操作。這也就提高了系統的效率。由于只讀表空間上的數據是不變的,所以對該表空間只要做一次備份就夠了。這不但減少數派數據庫系統的維護工作量還使系統的負荷減輕。因此如果將一個數據庫精心設計把許多不變的數據歸類放在一個或幾個表空間中,然后將它們的狀態改為只讀,將會使該數據庫的維護更加容易而且效率更高。
當使命令將一個表空間的狀態改為只讀時,一開始該表空間處于一種中間的狀態。在這種狀態下,除了那些沒有完成的事務之處在該表空間中不能進行任何的寫操作。一旦那些沒有完成的事務結束(即可以是提交也可以是回滾),該表空間就被置為只讀狀態。
將一個表空間的狀態改為只讀時,oracle會產生檢查點??梢詣h除只讀表空間中的對象,如表和索引,這是因為刪除對象的命令是DDL語句,它們只個性數據字典而不是數據文件。將一個表空間的狀態改為只讀時或反過來將一個表空間的狀態改為可讀可寫(正常)狀態時,該表空間必須處于聯機狀態。
現在我們就將重要的MOON表空間置為只讀:
SQL> alter tablespace moon read only;
表空間已更改。
SQL> select tablespace_name,status,contents
2 from dba_tablespaces
3 where tablespace_name like "MOON%";
TABLESPACE_NAME STATUS CONTENTS ------------------------------ --------- ---------
MOON READ ONLY PERMANENT
MOON_INDEX ONLINE PERMANENT
MOON_TEMP ONLINE TEMPORARY
MOON_UNDO ONLINE UNDO
隨著這個工程的進展不斷向前,產生了許多新的重要數據需要存入到我們的MOON表空間中這時我們可以把它設置為讀/寫:
SQL> alter tablespace moon read write;
表空間已更改。
SQL> select tablespace_name,status,contents
2 from dba_tablespaces
3 where tablespace_name like "MOON%";
TABLESPACE_NAME STATUS CONTENTS ------------------------------ --------- ---------
MOON ONLINE PERMANENT
MOON_INDEX ONLINE PERMANENT
MOON_TEMP ONLINE TEMPORARY
MOON_UNDO ONLINE UNDO
根據工程的實際需要我們可以去改變表空間的存儲設置:但
是由于我們的oracle 10g不允許創建數據字典管理的表空間因此在這我們無法改變MOON表空間的存儲參數,但是在oracle9i版本中可以創建數據字典管理的表空間,因此可以修改存儲參數,在這我把操作給大家寫出來:
SQL> alter tablespace moon minimum extent 100 k;
alter tablespace moon minimum extent 100 k
*
第 1 行出現錯誤:
ORA-25143: 默認存儲子句與分配策略不兼容
SQL> alter tablespace moon
2 default storage (initial 100 k next 100 k maxextents 200); alter tablespace moon
*
第 1 行出現錯誤:
ORA-25143: 默認存儲子句與分配策略不兼容
當隨著探月工程的深入,它所產生的數據越來越多,快達到我們MOON表空間所能承受的限制,因此這時一定要給MOON表空間增加空間以保持我們工程的正常運行,讓我們
一起來完成這項任務:
可以通過下面的方法增加表空間的大?。?/p>
1.改變數據文件的大小
(1).在創建表空間時使用AUTOEXTEND ON自動地改變(擴
展)數據文件的大小.
(2).在創建表空間之后使用帶有AUTOEXTEND ON選項的
ALTER DATABASE命令手動地改變數據文件的大小.
2. 使用ALTER TABLESPACE語句來增加數據文件.
我們先用第一種方法來增加表空間的大小:
1.
(1).在創建表空間時使用AUTOEXTEND ON自動地改變(擴展)數據文件的大小.
SQL> alter database datafile
2 "e:\disk6\moon\moon_index.dbf" autoextend on
3 next 1 m;
數據庫已更改。
SQL> select file_id,tablespace_name,file_name,autoextensible
2 from dba_data_files
3 order by file_id;
FILE_ID TABLESPACE_NAME FILE_NAME AUT
---------- ------------------------------ ------------------------------ ---
1 SYSTEM E:\ORACLE\PRODUCT\10.1.0\ORADA YES
TA\TEST\SYSTEM01.DBF
2 UNDOTBS1 E:\ORACLE\PRODUCT\10.1.0\ORADA YES
TA\TEST\UNDOTBS01.DBF
3 SYSAUX E:\ORACLE\PRODUCT\10.1.0\ORADA YES
TA\TEST\SYSAUX01.DBF
4 USERS E:\ORACLE\PRODUCT\10.1.0\ORADA YES
TA\TEST\USERS01.DBF
FILE_ID TABLESPACE_NAME FILE_NAME AUT
---------- ------------------------------ ------------------------------ ---
5 MOON E:\DISK2\MOON\MOON01.DBF NO
6 MOON E:\DISK4\MOON\MOON02.DBF NO
7 MOON_INDEX E:\DISK6\MOON\MOON_INDEX.DBF YES
8 MOON_UNDO E:\DISK7\MOON\MOON_UNDO.DBF NO
已選擇8行。
(2). ALTER DATABASE命令手動地改變數據文件的大小.
SQL> select file_id,file_name,tablespace_name,
2 bytes/(1024*1024) MB
3 from dba_data_files
4 where tablespace_name like "MOON%"
5 order by tablespace_name;
FILE_ID FILE_NAME TABLESPACE_NAME MB
---------- ------------------------------ ------------------------------ ----------
5 E:\DISK2\MOON\MOON01.DBF MOON 50
6 E:\DISK4\MOON\MOON02.DBF MOON 50
7 E:\DISK6\MOON\MOON_INDEX.DBF MOON_INDEX 50
8 E:\DISK7\MOON\MOON_UNDO.DBF MOON_UNDO 20
SQL> alter database datafile "e:\disk2\moon\moon01.dbf" resize 100 M;
數據庫已更改。
SQL> select file_id,file_name,tablespace_name,
2 bytes/(1024*1024) MB
3 from dba_data_files
4 where tablespace_name like "MOON%"
5 order by tablespace_name;
FILE_ID FILE_NAME TABLESPACE_NAME MB
---------- ------------------------------ ------------------------------ ----------
5 E:\DISK2\MOON\MOON01.DBF MOON 100
6 E:\DISK4\MOON\MOON02.DBF MOON 50
7 E:\DISK6\MOON\MOON_INDEX.DBF MOON_INDEX 50
8 E:\DISK7\MOON\MOON_UNDO.DBF MOON_UNDO 20
2.增加數據文件:
SQL> alter tablespace moon
2 add datafile "e:\disk6\moon\moon02.dbf"
3 size 80 M;
表空間已更改。
SQL> select file_id,file_name,tablespace_name,
2 bytes/(1024*1024) MB
3 from dba_data_files
4 where tablespace_name like "MOON%"
5 order by tablespace_name;
FILE_ID FILE_NAME TABLESPACE_NAME MB
---------- ------------------------------ ------------------------------ ----------
5 E:\DISK2\MOON\MOON01.DBF MOON 100
6 E:\DISK4\MOON\MOON02.DBF MOON 50
9 E:\DISK6\MOON\MOON02.DBF MOON 80
7 E:\DISK6\MOON\MOON_INDEX.DBF
MOON_INDEX 50
8 E:\DISK7\MOON\MOON_UNDO.DBF MOON_UNDO 20
讓我們在創建表空間時就為表空間的數據文件設置最大的存儲空量,看我怎么做:
SQL> create tablespace tet
2 datafile "e:\disk1\test01.dbf"
3 size 20m
4 autoextend on next 10m maxsize 100m
5 extent management local;
表空間已創建。
再我們創建一個自動段管理的表空間:
SQL> create tablespace test
2 datafile "e:\disk2\test02.dbf"
3 size 20m
4 autoextend on next 10m maxsize 100m
5 extent management local
6 segment space management auto;
表空間已創建。
SQL>drop tablespace test;
SQL> create tablespace test
2 datafile "e:\disk1\ttt.dbf"
3 size 20m autoextend on next 1m//注意在使用autoextned on next #m 時要跟在數據文件之后。
4 uniform size 1m
5 extent management local
6 segment space management auto;
表空間已創建。
刪除表空間
Drop tablespace 表空間名稱
[including contents [and datafiles] [cascade constraints]]
其中:
1.Including contents 子句用來刪除段。
2.And datafiles 子句用來刪除數據文件。
3.Cascade constraints 子句用來刪除所有的引用完整性約束。
SQL> select file_id,file_name,tablespace_name,
2 bytes/(1024*1024) MB
3 from dba_data_files
4 where tablespace_name like "MOON%"
5 order by tablespace_name;
FILE_ID FILE_NAME TABLESPACE_NAME MB
---------- ------------------------------ ------------------------------ ----------
5 E:\DISK2\MOON\MOON01.DBF MOON 100
6 E:\DISK4\MOON\MOON02.DBF MOON 50
9 E:\DISK6\MOON\MOON02.DBF MOON
80
7 E:\DISK6\MOON\MOON_INDEX.DBF MOON_INDEX 50
8 E:\DISK7\MOON\MOON_UNDO.DBF MOON_UNDO 20
注:以上刪除表空間只是把表空間的定義信息從數據字典中刪除,而真正的數據文件并沒有從磁盤中刪除,需要管理員手動刪除。
SQL> drop tablespace moon_index including contents and datafiles;
表空間已刪除。
SQL> drop tablespace moon_undo including contents and datafiles;
表空間已刪除。
注:以上刪除表空間把表空間的定義信息和磁盤上的數據文件一并刪除。