一般情况下,建立表空间是特权用户或是dba来执行的.
语法:
Create [TEMPORARY] TABLESPACE tablespace_name TEMPFILE|DATAFILE 'fileName.dbf' size xxx
#[TEMPORARY] 如果创建临时表空间,需在create后加TEMPORARY的关键字,且用TEMPFILE关键字。
#TEMPFILE|DATAFILE 存储的数据文件的类型和名字。
#size 表示数据文件的大小
注意:如果没有指定数据文件存放的路径,默认会将数据文件存放到Oracle的安装目录下
几个常见语法格式
格式1
create tablespace sample1
datafile 'E:\oradata\GSDoorDB\sample1_1.dbf' size 5M
extent management local autoallocate
segment space management auto
logging
permanent
flashback on
格式2
create tablespace sample2
datafile 'E:\oradata\GSDoorDB\sample2_1.dbf' size 5M
extent management local uniform
segment space management auto
logging
permanent
flashback on
格式3
create tablespace sample3
datafile 'E:\oradata\GSDoorDB\sample3_1.dbf' size 5M autoextend on next 2M maxsize 15M
extent management local autoallocate //区的分配方式:自动
segment space management auto //段的管理:自动分配
logging //表空间重做日志
permanent //表空间永久
online //表空间在线
flashback on //表空间闪回
格式4
create tablespace sample4
datafile 'E:\oradata\GSDoorDB\sample4_1.dbf' size 100M autoextend off
extent management local uniform size 1M
blocksize 8k
segment space management auto
logging
permanent
offline
flashback on
格式5
create tablespace sample5
datafile 'E:\oradata\GSDoorDB\sample5_1.dbf' size 100M autoextend off
extent management local uniform size 1M blocksize 8k
segment space management manual //段管理:手动
logging
permanent
online
flashback on
创建结果如下:
语法格式中的语句解说
第一句:
create tablespace sample1 创建一个名为sample1的表空间
ORACLE可创建表空间有三种类型:
1), temporary: 临时表空间,用于临时数据的存放
create temporaray tablespace sample1 ……
2), undo: 还原表空间. 用于存入重做日志文件
create undo tablespace sample1 ……
3),用户表空间: 最重要的,存放用户数据的表空间
create tablesapce sample ……
第二句:
datafile 用于指定数据文件的具体位置和大小
如,datafile 'E:\oradata\GSDoorDB\sample1_1.dbf' size 5M
存放位置是 'E:\oradata\GSDoorDB'目录, sample1_1.dbf文件的大小为5M。
如果有多个文件,可以用逗号隔开:
datafile 'E:\oradata\GSDoorDB\sample1_1.dbf' size 5M
datafile 'E:\oradata\GSDoorDB\sample1_2.dbf' size 10M
指定文件名时,必须为绝对地址,不能使用相对地址;但是每个文件都需要指明大小,如 5M 或 10M。
第三句:
extent management local 存储区管理方法
Oracle 8i以前, 区的分配方式的不同,有两种方式:字典管理方式(dictionary-managed tablespace,DMT)和本地管理方式(local-managed tablespace,LMT)。
从9I开始,只能是本地管理方式,Oracle 10g开始强烈建议使用 LMT 方式。因为LOCAL 管理方式有很多优点。
备注:在自动分配的本地管理的表空间中,区间尺寸可能由以下尺寸组成64k, 1m, 8m, 64m ,256m。但不管多大,都有一个通用尺寸64k,所以64K就是该表空间的位大小。
演示范例
1)创建空间
SQL>
create tablespace dummy datafile 'E:\oradata\GSDoorDB\dummy_1.dbf' size 100M
extent management local uniform size 1M
segment space management auto
logging
permanent
online
flashback on
2)建表
SQL> create table tb1 (x number) tablespace dummy storage (initial 50M);
3)确认数据文件的存在
SQL> select file# from v$datafile where name like '%DUMMY%';
4)查看一个数据表被分配到的区数量
SQL> select extents from user_segments where segment_name = 'TB1';
第四句:
segment space management auto 段管理方法——磁盘扩展管理方法
auto: 只能使用在本地管理的表空间中,段大小由系统自动确定。
第五句:
nologging和logging
nologging:创建表空间时,不创建重做日志
logging:就是在创建表空间时生成重做日志