Oracle資料庫之建立表空間與使用者
一、建立表空間
基本文法表述:
CREATE TABLESPACE tablespace_name
[DATAFILE datafile_spec1 [,datafile_spec2] ......]
[ { MININUM EXTENT integer [K|M]
|BLOCKSIZE integer [K]
|[ONLINE|OFFLINE]
|logging clause
|[PERMANENT|TEMPORARY]
|extent_manager_clause
|segment_manager_clause}
]
詳細的
CREATE TABLESPACE
文法描述請參考:http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_7003.htm#SQLRF01403
說明:
1.tablespace_name:
指出表空間的名稱。
2.datafile_spec1:
指出表空間包含的資料檔案。
[filename]
[SIZE integer [ K | M ]]
[REUSE]
[AUTOEXTEND { OFF | ON
[NEXT integer [ K | M ]]
[MAXSIZE { UNLIMITED | integer [ K | M ] }]
}]
其中filename是資料檔案的全路徑名;SIZE是檔案的大小;REUSE表示檔案是否被重用;AUTOEXTEND表明是否自動擴充;NEXT表示資料檔案滿了以後,擴充的大小。
3.MININUM EXTENT integer [K|M]:
指出在表空間中區的最小值。這個參數可以減小空間碎片,保證在表空間的範圍是這個數值的整數倍。
4.BLOCKSIZE integer [K]
這個參數可以設定一個不标準的塊的大小。如果要設定這個參數,必須設定db_block_size,至少一個db_nk_block_size,并且聲明的integer的值必須等于db_nk_block_size。
注意:在臨時表空間不能設定這個參數。
5.[ONLINE|OFFLINE]
改變表空間的狀态。online使表空間建立後立即有效,這是預設值,offline使表空間建立後無效。
6.logging clause
{ LOGGING | NOLOGGING }
這個子句聲明這個表空間上所有的使用者對象的日志屬性(預設是LOGGING),包括表,索引,分區,物化視圖,物化視圖上的索引,分區。
7.[PERMANENT|TEMPORARY]
指出表空間的屬性,是永久表空間還是臨時表空間。永久表空間存放的是永久對象,臨時表空間存放的是session生命期中存在的臨時對象。這個參數生成的臨時表空間建立後一直都是字典管理,不能使用extent management local選項。如果要建立本地管理表空間,必須使用create temporary tablespace。
8.extent_management_clause
EXTENT MANAGEMENT
{ LOCAL
[ AUTOALLOCATE
| UNIFORM
[ SIZE size_clause ]
]
| DICTIONARY
}
說明了表空間如何管理區。一旦你聲明了這個子句,隻能通過移植的方式改變這些參數。
如果希望表空間本地管理的話,聲明local選項。本地管理表空間是通過位圖管理的。autoallocate說明表空間自動配置設定範圍,使用者不能指定範圍的大小。隻有9.0以上的版本具有這個功能。uniform說明表空間的區的固定大小,預設是1m。
9.segment_manager_clause
SEGMENT SPACE MANAGEMENT { AUTO | MANUAL }
說明了如何管理段。隻為永久性的,本地管理表空間有關。可以指定是否應該跟蹤在使用空閑清單或位圖的表空間段的使用和自由空間。本選項不适用于臨時表空間。
示例:
CREATE TABLESPACE tbs_01
DATAFILE 'demo.dbf'
SIZE 40M
AUTOEXTEND ON NEXT 5M MAXSIZE 100M
ONLINE
LOGGING
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 2M
SEGMENT SPACE MANAGEMENT AUTO;
我們可以使用DROP TABLESPACE語句從資料庫中删除表空間:
DROP TABLESPACE tablespace
[ INCLUDING CONTENTS [ {AND | KEEP} DATAFILES ]
[ CASCADE CONSTRAINTS ]
] ;
使用詳情見:http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_9004.htm#SQLRF01807
DROP TABLESPACE tbs_01
INCLUDING CONTENTS AND DATAFILES;
二、建立使用者
基本文法描述:
CREATE USER user
IDENTIFIED BY password
[DEFAULT TABLESPACE tablespace]
[TEMPORARY TABLESPACE tablespace]
詳細的文法與使用見:http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_8003.htm#SQLRF01503
1.user
使用者名。
2.password
密碼
3.DEFAULT TABLESPACE tablespace
使用者預設使用的表空間。
4.TEMPORARY TABLESPACE tablespace
使用者使用的臨時表空間。
CREATE USER sidney
IDENTIFIED BY out_standing1
DEFAULT TABLESPACE tbs_01
TEMPORARY TABLESPACE temp
使用者建立完畢後,并不能馬上使用,我們還需要為使用者配置設定權限或角色:
GRANT privileges or role TO user;
若要撤銷權限或角色:
REVOKE privileges or role FROM user;
-- 把CONNECT、RESOURCE角色授予使用者sidney
GRANT CONNECT,RESOURCE TO sidney;
-- 撤銷使用者sidney的RESOURCE角色
REVOKE RESOURCE FROM sidney;
-- 允許使用者檢視 EMP 表中的記錄
GRANT SELECT ON emp TO sidney;
-- 允許使用者更新 EMP 表中的記錄
GRANT UPDATE ON emp TO sidney;