加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle表空间

发布时间:2020-12-12 13:32:00 所属栏目:百科 来源:网络整理
导读:一、表空间 ?在数据库系统中,存储空间是较为重要的资源,合理利用空间,不但能节省空间,还可以提高系统的效率和工作性能。Oracle可以存放海量数据,所有数据都在数据文件中存储。而数据文件大小受操作系统限制,并且过大的数据文件对数据的存取性能影响非

一、表空间

?在数据库系统中,存储空间是较为重要的资源,合理利用空间,不但能节省空间,还可以提高系统的效率和工作性能。Oracle可以存放海量数据,所有数据都在数据文件中存储。而数据文件大小受操作系统限制,并且过大的数据文件对数据的存取性能影响非常大。同时Oracle是跨平台式的数据库,Oracle数据可以轻松的在不同平台上移植,那么如何才能提供统一存取格式的大容量呢?Oracle采取表空间来解决。

表空间只是一个逻辑概念,若干操作系统文件(文件可以不是很大)可以组成一个表空间。表空间统一管理空间中的数据文件,一个数据文件只能属于一个表空间。一个数据库空间由若干个表空间组成。如图所示:?

Oracle中所有的数据(包括系统数据),全部保存在表空间中,常见的表空间有:

  • 系统表空间:存放系统数据,系统表空间在数据库创建时创建。表空间名称为SYSTEM。存放数据字典和视图以及数据库结构等重要系统数据信息,在运行时如果SYSTEM空间不足,对数据库影像会比较大,虽然在系统运行过程中可以通过命令扩充空间,但还是会影响数据库的性能,因此有必要在创建数据库时适当的把数据文件设置大一些。?
  • TEMP表空间:临时表空间,安装数据库时创建,可以在运行时通过命令增大临时表空间。临时表空间的重要作用是数据排序。比如当用户执行了诸如order by等命令后,服务器需要对所选取数据进行排序,如果数据很大,内存的排序区可能装不下太大数据,就需要把一些中间的排序结果写在硬盘的临时表空间中。
  • 用户表自定义空间:用户可以通过CREATE TABLESPACE命令创建表空间。

创建表空间需要考虑数据库对分区(Extent,一个Oracle分区是数据库文件中一段连续的空间,Oracle分区是Oracle管理中最小的单位)的管理,比如当一个表创建后先申请一个分区,在insert执行过程中,如果分区数据已满,需要重新申请另外的分区。如果一个数据库中的分区大小不一,创建表空间时需要考虑一系列问题。因此在Oracle8i之后,创建表空间都推荐使用“本地管理表空间”,这种表空间中的分区是一个固定大小的值,创建表空间的语法是:

语法结构:创建表空间:


?

CREATE TABLESPACE空间名称

DATAFILE‘文件名1’SIZE数字M

[‘文件名2’SIZE 数字……]

EXTENT MANAGEMENT LOCAL

UNIFORM SIZE 数字M


?

语法解析:

  1. 文件名包括完整路径和文件名,每个数据文件定义了文件的初始大小,初始大小一般以“M”为单位。一个表空间中可以有多个数据文件。
  2. EXTENT MANAGEMENT LOCAL指明表空间类型是“本地管理表空间。本地管理表空间要求Oracle中的数据分区大小统一。
  3. UNIFORM SIZE:制定每个分区的统一大小。

案例:创建一个表空间,包含两个数据文件大小分别是10MB,5MB,要求extent的大小统一问1M。

代码演示:创建表空间?


?

SQL>CREATE TABLESPACE MYSPACE

2 ?DATAFILE ‘D:/A.ORA‘SIZE 10M,

3 ? ? ? ? ? ? ? ? ? ?‘D:/B.ORA‘SIZE 5M

4 ?EXTENT MANAGEMENT LOCAL?

5 ?UNIFORM SIZE 1M

6 ?/

Tablspace created


?

必须是管理员用户才能创建表空间,当表空间的空间不足时可以使用ALTER TABLESPACE命令向表中追加数据文件扩充表空间。

代码演示:扩充表空间??


?

SQL>CREATE USER ACONG IDENTIFIED BY ACONG?

2 DEFAULT TABLESPACE MYSPACE

3 ?/

User created


?

在创建表时,表中数据存放在用户的默认表空间中,也可以通过tablespace子句为表指定表中数据存放在其他表空间中。

代码演示:为表指定表空间


?

SQL>CREATE TABLE SCORES

2 ?(

3 ? ? ? ? ? ? ? ? ID NUMBER,

4 ? ? ? ? ? ? ? ?TERM VARCHAR2(2),

5 ? ? ? ? ? STUID VARCHAR2(7) NOT NULL,

6 ? ? ? ? ? EXAMND VARCHAR2(7) NOT NULL,

7 ? ? ? ? ? WRITTENSCORE NUMBER(4,1) NOT NULL,

8 ? ? ? ? ?LABSCORE ?NUMBER(4,1) NOT NULL

9 ?)

10 ? TABLESPACE MYSPACE

11 ?/

Table created


?

在创建用户之前需要创建表空间

创建表空间


?

?创建索引时也可以为索引指定表空间。

代码演示:为索引指定表空间?


?

SQL>CREATE INDEX UQ_ID ON SCORES(ID)

2 ?TABLESPACE MYSPACE;

Index created


?

表和索引一旦创建,表空间无法修改。?

CREATE SMALLFILE TABLESPACE "XZ_JCDL"
DATAFILE ‘+REC/XZ_JCDL.DBF‘
SIZE 3072M AUTOEXTEND ON NEXT 1024M
MAXSIZE UNLIMITED
LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;


?

删除表空间


?

drop tablespace XZ_JCDL including contents and datafiles;


?

若报:表空间不存在,由于创建时表空间名加“”,创建用户应用时或删除表空间时,表空间名需加“”


?

二、练习

在plsql工具中执行以下语句,可建立Oracle表空间。

?/*分为四步 */

/*第1步:创建临时表空间? */


?

create temporary tablespace yuhang_temp?
tempfile ‘D:oracledatayuhang_temp.dbf‘?
size 50m??
autoextend on??
next 50m maxsize 20480m??
extent management local;??



?
/*第2步:创建数据表空间? */



create tablespace yuhang_data??
logging??
datafile ‘D:oracledatayuhang_data.dbf‘?
size 50m??
autoextend on??
next 50m maxsize 20480m??
extent management local;??



?
/*第3步:创建用户并指定表空间? */



create user yuhang identified by yuhang??
default tablespace yuhang_data??
temporary tablespace yuhang_temp;??



?
/*第4步:给用户授予权限? */



grant connect,resource,dba to yuhang;

?

----------------------------------------------------------------------------------

?内容来源于网络,

----------------------------------------------------------------------------------

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读