oracle創建表空間

創建表空間參數詳解

語法描述:

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}]

1、undo

 說明系統將創建一個回滾表空間
 數據庫管理員可以不必管理回滾段,只有建立了undo表空間,系統就會自動管理回滾段的分配,回收的工作。當然,也可以創建一般的表空間,在上面創建回滾段.不過對於用戶來說,系統管理比自己理要好很多.如果需要自己管理,當沒有爲系統指定回滾表空間時,系統將使用system系統回滾段來進行事務管理

2、tablespace

 指出表空間的名稱

3、datafile  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

4、MININUM EXTENT integer [k|m]

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

5、BLOCKSIZE integer [k]

 這個參數可以設定一個不標準的塊的大小。如果要設置這個參數,必須設置db_block_size,至少一個db_nk_block_size,並且聲明的integer的值必須等於db_nk_block_size.
 注意:在臨時表空間不能設置這個參數

6、logging clause

 這個子句聲明這個表空間上所有的用戶對象的日誌屬性(缺省是logging),包括表,索引,分區,物化視圖,物化視圖上的索引,分區

7、FORCE LOGGING

 使用這個子句指出表空間進入強制日誌模式。此時,系統將記錄表空間上對象的所有改變,除了臨時段的改變。這個參數高於對象的nologging選項。
 注意:設置這個參數數據庫不行open並且出於讀寫模式。而且,在臨時表空間和回滾表空間中不能使用這個選項

8、DEFAULT storage_clause

 聲明缺省的存儲子句

9、online|offline

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

10、PERMANENT|TEMPORARY

 指出表空間的屬性,是永久表空間還是臨時表空間。永久表空間存放的是永久對象 ,臨時表空間存放的是session生命期中存在的臨時對象。這個參數 生成的臨時表空間創建後一直都是字典管理,不能使用extent management local選項。如果要創建本地管理表空間,必須使用create temporary tablespace
 注意,聲明瞭這個參數後,不能聲明block size

11、extent_management_clause

 說明了表空間如何管理範圍。一旦聲明瞭這個子句,只能通過移植的方式改變這些參數。
 如果希望表空間本地管理的話,聲明local選項。本地管理表空間是通過位圖管理的。autoallocate說明表空間自動分配範圍,用戶不能指定範圍的大小。只有9.0以上的版本具有這個功能。uniform說明表空間的範圍的固定大小,缺省是1m。
 不能將本地管理的數據庫的system表空間設置成字典管理。
 如果沒有設置extent_management_clause,oracle會給他設置一個默認值。如果初始化參數compatible小於9.0.0,那麼系統創建字典管理表空間。如果大於9.0.0,那麼按照如下設置:
 如果沒有指定default storage_clause,oracle創建一個自動分配的本地管理表空間。
 否則,如果指定了mininum extent,那麼oracle判斷mininum extent 、initial、next是否相等,以及pctincrease是否=0.如果滿足以上的條件,oracle創建一個本地管理表空間,extent size是initial.如果不滿足以上條件,那麼oracle將創建一個自動分配的本地管理表空間。
 如果沒有指定mininum extent。initial、那麼oracle判斷next是否相等,以及pctincrease是否=0。如果滿足oracle創建一個本地管理表空間並指定uniform。否則oracle將創建一個自動分配的本地管理表空間。
 注意:本地管理表空間只能存儲永久對象。如果你聲明瞭local,將不能聲明default storage_clause,mininum extent、temporary.
 EXTENT MANAGEMENT LOCAL

12、segment_management_clause

SEGMENT SPACE MANAGEMENT AUTO

實例:

CREATE TABLESPACE YNCCIP  --表空間名
DATAFILE  '/home/u02/oradata/orcl/YNCCIP01.dbf'   --表空間對應的數據文件
SIZE 100M  --數據文件大小
AUTOEXTEND ON NEXT 10M  --數據文件不夠用自動擴展,每次擴展大小
MAXSIZE 1000M   --數據文件最大文件大小
LOGGING   --啓動重做日誌
PERMANENT --指定表空間爲永久性的表空間
EXTENT MANAGEMENT LOCAL AUTOALLOCATE  --指定新建表空間爲本地管理方式的表空間
BLOCKSIZE 16K    --塊大小
SEGMENT SPACE MANAGEMENT auto    --指定本地管理表空間中段的存儲管理方式,AUTO自動,MANUAL手工。

表空間建立過程步驟

-建立表空間(oracle中的tablespace(表空間)就相當於sqlserver的database) deJ

CREATE TABLESPACE data01deJ 
DATAFILE 'D:/oracle/ora92/oradata/db/DATA01.dbf' SIZE 200MdeJ 
UNIFORM SIZE 128k;deJ 

#指定區尺寸爲128k,如不指定,區尺寸默認爲64k

--建立臨時表空間deJ 
CREATE TEMPORARY TABLESPACE temp_datadeJ 
TEMPFILE 'D:/TEMP_DATA.dbf' SIZE 100MdeJ 

--建立用戶deJ

CREATE USER peter IDENTIFIED BY peterdeJ 
DEFAULT TABLESPACE data01 deJ 
TEMPORARY TABLESPACE temp_data;deJ 

--給用戶授權deJ

grant connect,resource,dba to peter;deJ 
-- 從 '建立表空間' 到 '建立臨時表空間' 到 ’建立用戶‘ 到 ’給用戶授權’ , deJ 
-- 到此就可以用建立的用戶進行登陸,然後建立table了deJ 
-- 並且以某個用戶的身份進行登陸,進行備份與還原了deJ  
deJ 

一、建立表空間deJ

CREATE TABLESPACE data01deJ 
DATAFILE '/oracle/oradata/db/DATA01.dbf' deJ 
SIZE 500MdeJ 
UNIFORM SIZE 128k; #指定區尺寸爲128k,如不指定,區尺寸默認爲64kdeJ 
(注意,必須先寫datafile才能寫size和uniform size,只有先指定了文件才能夠指定文件的大小)deJ 

二、建立UNDO表空間deJ

CREATE UNDO TABLESPACE UNDOTBS02deJ 
DATAFILE '/oracle/oradata/db/UNDOTBS02.dbf' SIZE 50MdeJ 
#注意:在OPEN狀態下某些時刻只能用一個UNDO表空間,如果要用新建的表空間,必須切換到該表空間:deJ 
ALTER SYSTEM SET undo_tablespace=UNDOTBS02;deJ 

三、建立臨時表空間deJ

CREATE TEMPORARY TABLESPACE temp_datadeJ 
TEMPFILE '/oracle/oradata/db/TEMP_DATA.dbf' SIZE 50MdeJ 

四、改變表空間狀態deJ

1.使表空間脫機deJ

ALTER TABLESPACE game OFFLINE;deJ 
如果是意外刪除了數據文件,則必須帶有RECOVER選項deJ 
ALTER TABLESPACE game OFFLINE FOR RECOVER;deJ 

2.使表空間聯機deJ

ALTER TABLESPACE game ONLINE;deJ 
deJ 

3.使數據文件脫機deJ
ALTER DATABASE DATAFILE 3 OFFLINE;deJ

4.使數據文件聯機deJ
ALTER DATABASE DATAFILE 3 ONLINE;deJ

5.使表空間只讀deJ
ALTER TABLESPACE game READ ONLY;deJ \

6.使表空間可讀寫deJ

ALTER TABLESPACE game READ WRITE;deJ

五、刪除表空間(刪除臨時表空間也是同樣的寫法)

deJ 
DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;deJ 
drop tablespace temp_data including contents and datafiles;(刪除臨時表空間)deJ 

六、擴展表空間deJ

首先查看錶空間的名字和所屬文件deJ

select tablespace_name, file_id, file_name,deJ 
round(bytes/(1024*1024),0) total_spacedeJ 
from dba_data_filesdeJ 
order by tablespace_name;deJ

1.增加數據文件deJ

ALTER TABLESPACE gamedeJ 
ADD DATAFILE '/oracle/oradata/db/GAME02.dbf' SIZE 1000M;deJ

2.手動增加數據文件尺寸deJ

ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf'deJ 
RESIZE 4000M;deJ

3.設定數據文件自動擴展deJ

ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbfdeJ 
AUTOEXTEND ON NEXT 100MdeJ 
MAXSIZE 10000M;deJ 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章