一般情况下,建立表空间是特权用户或是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:就是在创建表空间时生成重做日志

最后修改:2023 年 10 月 03 日
如果觉得我的文章对你有用,请随意赞赏