现在的位置: 首页 > 数据库 > 正文

Oracle表空间基础

2014年11月03日 数据库 ⁄ 共 2257字 暂无评论 ⁄ 阅读 1,118 次
文章目录

基础概念

Oracle数据库由一个或多个表空间组成,表空间可以存储数据文件,数据文件中存放着数据库中的数据。一个表空间可以存储一个或多个数据文件,一个数据文件只对应一个表空间。

表空间的逻辑存储单元是段(segment),段由区(extent)组成,区由块(block)组成。每个区只能存在于一个数据文件,段则由不同数据文件中的区组成。块是Oracle中最小的空间分配单元,常见块大小是2、4、8、16KB。

Oracle 11g数据库存在6个默认表空间,EXAMPLE表空间(用于使用示例数据库)、SYSAUX表空间(EXAMPLE的辅助表空间)、SYSTEM表空间(存储SYS用户的表、视图以及存储过程等数据库对象)、TEMP表空间(存储SQL语句处理的表和索引的信息)、UNDOTBS1表空间(用于存储撤销信息)和USER表空间(存储数据库用户创建的数据库对象)。

查看表空间

  • 查看所有默认表空间:借助数据字典DBA_TABLESPACES,使用语句“select tablespace_name from dba_tablespaces;”。
  • 查看指定用户默认表空间:借助数据字典DBA_USERS,使用语句“select default_tablespace from dba_users where username = ‘username’;”。

创建表空间

表空间创建语法

CREATE TABLESPACE tablespace_name

DATAFILE filename SIZE size

[AUTOEXTEND ON|OFF NEXT size]

[MAXSIZE size]

[PERMANENT|TEMPORARY]

[EXTENT MANAGEMENT DICTIONARY|LOCAL]

[SEGMENT SPACE MANAGEMENT AUTO|MANUAL]

其中,tablespace_name是表空间表,filename是指定创建的数据文件路径及名称(创建表空间时一定创建了数据文件,创建数据文件必须指定表空间),SIZE指定创建数据文件的大小,AUTOEXTEND指定数据文件是否自增NEXT指定自增大小,MAXSIZE指定数据文件最大值,PERMANENT指永久表空间(默认),TEMPORARY指临时表空间。SEGMENT SPACE MANAGMENT确定表空间段管理采用自动方式还是手动方式。

表空间重命名语法:

ALTER TABLESPACE oldname RENAME TO newname;

表空间读写状态:

创建时不指定状态默认是读写状态,还可通过命令改为只读模式,如下:

ALTER TABLESPACE tablespace READ {ONLY|WRITE};

其中,READ ONLY是只读状态,READ WRITE是默认的读写状态。

表空间可用状态:

设置表空间是否可用语法:

ALTER TABLESPACE tablespace {ONLINE|OFFLINE};

建立大文件表空间:

大文件表空间是在正常表空间不够用的情况下需要创建的,创建语法与普通表空间类似,不同的是在TABLESPACE关键字前有BIGFILE关键字,如下:

CREATE BIGFILE TABLESPACE tablespace

DATAFILE filename SIZE size

…;

删除表空间:

由于使用本地方式管理的表空间在删除时速度更快一些,因此,在删除表空间时可以考虑把表空间的管理方式修改为本地管理后再删除。删除语法如下:

DROP TABLESPACE tablespace_name [INCLUDING CONTENTS] [CASCADE CONSTRAINS]

如果在删除表空间时要把表空间中的数据文件也删除,可以在语句中加INCLUEDING CONTENTS。

如果在删除表空间时要把表空间中的完整性也删除,可以在语句中加CASCADE CONSTRAINS。

临时表空间

临时表空间一般是指数据库中存储数据,当内存不够时写入的空间,当执行完数据库的操作后,该空间的内容自动清空。

创建语法:

CREATE TEMPORARY TABLESPACE tablespace

TEMPFILE ‘filename.dbf’ SIZE …

设置临时表空间语法:

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tablespace;

查询临时表空间:

使用数据字典DBA_TEMP_FILES,语法:

SELECT TABLESPACE_NAME FROM DBA_TEMP_FILES;

移动数据文件

如果想把当前表空间中的数据文件移动到其他表空间中,可使用如下步骤:

1)把要存放数据文件的目标表空间设置为脱机状态,语法:

ALTER TABLESPACE tablespace OFFLINE;

2)手动把要移动的文件移动到目标表空间。

3)更改数据文件名称,语法:

ALTER TABLESPACE tablespace RENAME DATAFILE oldfilename TO newfilename;

4)把表空间设置成联机状态,语法:

ALTER TABLESPACE tablespace ONLINE;

删除数据文件

有3种情况数据文件无法被删除:

  • 数据文件中存在数据;
  • 数据文件是表空间中唯一或第一个的数据文件;
  • 数据文件或其所在表空间处于只读状态;

删除语法:

ALTER TABLESPACE tablespace DROP DATAFILE ‘filename’;

声明:该笔记转载自《Oracle从入门到精通》,仅用于个人学习,若侵犯到您的版权敬请告知!

» 声明:本站文章源于个人经验总结或书籍、互联网转载,内容仅用于个人学习,请勿转载,否则后果自负!

给我留言

留言无头像?