CREATE TABLESPACE命令詳解

victorymoshui發表於2011-05-06

CREATE [UNDO]  TABLESPACE tablespace_name

[DATAFILE datefile_spec1 [,datefile_spec2] ......

[ { MININUM EXTENT integer [k|m]

| BLOCKSIZE integer [k]

|logging clause

|FORCE LOGGING

|DEFAULT  {data_segment_compression} storage_clause

|[online|offline]

|[PERMANENT|TEMPORARY]

|extent_manager_clause

|segment_manager_clause}]

1undo

說明系統將建立一個回滾表空間。

9i中資料庫管理員可以不必管理回滾段,只有建立了undo表空間,系統就會自動管理回滾段的分配,回收的工作。當然,也可以建立一般的表空間,在上面建立回滾段.不過對於使用者來說,系統管理比自己管理要好很多.如果需要自己管理,請參見回滾段管理的命令詳解.

當沒有為系統指定回滾表空間時,系統將使用system系統回滾段來進行事務管理。

2tablespace

    指出表空間的名稱。

3datafile  datefile_spec1

指出表空間包含什麼空間檔案。datefile_spec1 是形如  ['filename'] [SIZE integer [ K | M ]] [REUSE] [autoextend_clause]

[autoextend_clause]是形如: AUTOEXTEND { OFF | ON [ NEXT integer [ K | M ] ] [maxsize_clause] }

其中filename是資料檔案的全路徑名,size是檔案的大小,REUSE表示檔案是否被重用.

AUTOEXTEND表明是否自動擴充套件. OFF | ON  表示自動擴充套件是否被關閉.NEXT 表示資料檔案滿了以後,擴充套件的大小.

maxsize_clause表示資料檔案的最大大小.形如MAXSIZE { UNLIMITED | integer [ K | M ] }.UNLIMITED 表示無限的表空間.integer是資料檔案的最大大小.

 DATAFILE 'D:\oracle\oradata\IMAGEDATA01.dbf' SIZE 2000M,

    'D:\oracle\oradata\IMAGEDATA02.dbf' SIZE 2000M

4MININUM EXTENT integer [k|m]

指出在表空間中範圍的最小值。這個引數可以減小空間碎片,保證在表空間的範圍是這個數值的整數倍。

5BLOCKSIZE integer [k]

這個引數可以設定一個不標準的塊的大小。如果要設定這個引數,必須設定db_block_size,至少一個db_nk_block_size,並且宣告的integer的值必須等於db_nk_block_size.

注意:在臨時表空間不能設定這個引數。

6logging clause

這個子句宣告這個表空間上所有的使用者物件的日誌屬性(預設是logging),包括表,索引,分割槽,物化檢視,物化檢視上的索引,分割槽。

7FORCE LOGGING

使用這個子句指出表空間進入強制日誌模式。此時,系統將記錄表空間上物件的所有改變,除了臨時段的改變。這個引數高於物件的nologging選項。

注意:設定這個引數資料庫不行open並且出於讀寫模式。而且,在臨時表空間和回滾表空間中不能使用這個選項。

8DEFAULT storage_clause

宣告預設的儲存子句。

9online|offline

改變表空間的狀態。online使表空間建立後立即有效.這是預設值.offline使表空間建立後無效.這個值,可以從dba_tablespace中得到。

10PERMANENT|TEMPORARY

指出表空間的屬性,是永久表空間還是臨時表空間。永久表空間存放的是永久物件,臨時表空間存放的是session生命期中存在的臨時物件。這個引數 生成的臨時表空間建立後一直都是字典管理,不能使用extent management local選項。如果要建立本地管理表空間,必須使用create temporary tablespace

注意,宣告瞭這個引數後,不能宣告block size

11extent_management_clause

這是最重要的子句,說明了表空間如何管理範圍。一旦你宣告瞭這個子句,只能通過移植的方式改變這些引數。

如果希望表空間本地管理的話,宣告local選項。本地管理表空間是通過點陣圖管理的。autoallocate說明表空間自動分配範圍,使用者不能指定範圍的大小。只有9.0以上的版本具有這個功能。uniform說明表空間的範圍的固定大小,預設是1m

不能將本地管理的資料庫的system表空間設定成字典管理。

oracle公司推薦使用本地管理表空間。

如果沒有設定extent_management_clauseoracle會給他設定一個預設值。如果初始化引數compatible小於9.0.0,那麼系統建立字典管理表空間。如果大於9.0.0,那麼按照如下設定:

如果沒有指定default storage_clause,oracle建立一個自動分配的本地管理表空間。

否則,如果指定了mininum extent,那麼oracle判斷mininum extent initialnext是否相等,以及pctincrease是否=0.如果滿足以上的條件,oracle建立一個本地管理表空間,extent sizeinitial.如果不滿足以上條件,那麼oracle將建立一個自動分配的本地管理表空間。

如果沒有指定mininum extentinitial、那麼oracle判斷next是否相等,以及pctincrease是否=0。如果滿足oracle建立一個本地管理表空間並指定uniform。否則oracle將建立一個自動分配的本地管理表空間。

注意:本地管理表空間只能儲存永久物件。如果你宣告瞭local,將不能宣告default storage_clause,mininum extenttemporary.

EXTENT MANAGEMENT LOCAL

12segment_management_clause

SEGMENT SPACE MANAGEMENT { MANUAL | AUTO }
segment_management 子句表明了對segment中自由空間的
管理方式(manual,auto),
即表明
oracle追蹤segment中的自由空間是通過Freelist(manual)還是Bitmaps(auto);如果設為auto那麼在此tablespace中相應物件pctused,freelist,fresslist groups儲存引數將被忽略;

segment space management子句有一定的限制:only for permanent, locally managed tablespaces,並且不能對system tablespace使用;

查詢:
select tablespace_name,segment_space_management
from dba_tablespaces;


 

 

下面是實際應用中的一個例子:

使用例子1:

CREATE TABLESPACE "IMAGEDATA" 
    NOLOGGING 
    DATAFILE 'D:\oracle\oradata\DATA01.dbf' SIZE 2000M, 
    'D:\oracle\oradata\DATA02.dbf' SIZE 2000M, 
    'D:\oracle\oradata\DATA03.dbf' SIZE 2000M, 
    'D:\oracle\oradata\DATA04.dbf' SIZE 2000M, 
    'D:\oracle\oradata\DATA05.dbf' SIZE 2000M EXTENT 
    MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT  AUTO

使用例子2:

CREATE TABLESPACE "IMAGEDATA"
LOGGING
DATAFILE 'E:\ORACLE\ORADATA\DATA_01.DBF' SIZE
2000M REUSE AUTOEXTEND
ON NEXT 51200K MAXSIZE 3900M,
'E:\ORACLE\ORADATA\XL\DATA_02.DBF' SIZE 2000M REUSE
AUTOEXTEND
ON NEXT 51200K MAXSIZE 3900M,
'E:\ORACLE\ORADATA\XL\DATA_03.DBF' SIZE 2000M REUSE
AUTOEXTEND
ON NEXT 51200K MAXSIZE 3900M,
'E:\ORACLE\ORADATA\XL\DATA_04.DBF' SIZE 2000M REUSE
AUTOEXTEND
ON NEXT 51200K MAXSIZE 3900M

EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO

 

---------------------------------------------------------------------------------------------------------------------------------------------

CREATE SMALLFILE TABLESPACE "TBS" DATAFILE '/u01/app/oracle/oradata/ORACLR10G/datafile/tbs01.dbf' SIZE 100M

 AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED LOGGING

EXTENT MANAGEMENT LOCAL

UNIFORM. SIZE 1M

SEGMENT SPACE MANAGEMENT AUTO

上面是一個標準的建立表空間的語句。

--------------------------------------------------------------------------------------

引自:http://blog.csdn.net/radkitty/archive/2007/11/09/1875476.aspx

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9390331/viewspace-694580/,如需轉載,請註明出處,否則將追究法律責任。

相關文章