除了Oracle系统默认创建的表空间外,用户可根据应用系统的模式及其所要存储的对象类型创建多个表空间,以区分用户数据和系统数据。
创建表空间数据数据定义语言,语法如下:
在语法中:
tablespacename是表空间名称。
DATAFILE指定组成表空间的一个或多个数据文件,当有多个数据文件时使用逗号进行分隔。
filename是表空间中数据文件的路径和名称。
SIZE指定文件的大小,用K指定千字节大小,用M指定兆字节大小。
AUTOEXTEND子句用来启动或禁用数据文件的自动扩展。若设置AUTOEXTEND��数为ON,则空间用尽会自动扩展;当设置AUTOEXTEND参数为OFF时很容易出现表空间剩余容量为0,造成数据不能存储到数据库中的情况出现。
创建完表空间之后,可以对表空间进行相应的管理,主要包括以下几种操作。
调整表空间大小,当遇到数据插入失败,表空间已满的情况,可以通过ALTER语句来调整表空间的大小,此时有两种调整表空间大小的方式。
方法一:更改数据文件的大小,并指明数据文件的存放路径,其中还使用了RESIZE关键字,用于指定调整后的数据文件的大小,代码如下:
SQL> alter database datafile'/u01/app/oracle/oradata/benet.DBF' resize 50M; Database altered.方法二:向表空间内添加数据文件。为表空间添加一个新的数据文件的代码如下:
SQL> alter tablespace benet add datafile '/u01/app/oracle/oradata/benet01.DBF' size 20M autoextend no; Tablespace altered.改变表空间的读写状态。当数据是历史数据,只允许查询,不希望被修改使,可以将表空间设置为只读状态。READ ONLY表示该表空间为只读状态,READ WRITE表示该表空间为可读写状态。具体语法格式如下:
SQL> alter tablespace benet read only; <!--修改表空间为只读--> Tablespace altered. SQL> alter tablespace benet read write; <!--修改表空间为可读写文件--> Tablespace altered.删除表空间。可以通过DROP语句来删除表空间,只需要再加上表空间的名称即可。具体语法格式如下:
SQL> drop tablespace benet including contents; Tablespace dropped. (2)段段(Segment)存在于表空间中,是一种指定类型的逻辑存储结构,段由一组区组成。段可分成四类:数据段、索引段、回退段、临时段。例如,对于每个非聚集表有一个数据段,表的所有数据存储再该段;而对于每个索引都有一个索引段。
(3)区区(Extent)是磁盘空间分配的最小单位。磁盘按区划分,每次至少分配一个区。区由连续的数据块组成。段主要由一个或者多个区构成,当段创建后,它至少包含一个区。当段中的所有空间都完全使用时,系统将自动为该段分配一个新区。区不能跨数据文件存在,只能存在于一个数据文件中。
(4)数据块数据块(Data Block)是数据库中最小的数据组织单位于管理单位。Oracle数据库中的数据存储于数据块中。数据块是Oracle服务器所能读取或写入的最小存储单元。Oracle服务器以数据块为单位管理数据文件的存储空间。数据块的取值范围为2~64KB,其默认大小与Oracle版本有关。
(5)模式模式(Schema)是数据库对象(又称模式对象)的集合。模式对象包括表、视图、索引、同义词、序列、过程和程序包等。每创建一个用户,Oracle会自动创建一个与用户名相同的模式,因此,模式又称用户模式。用户登录后,默认访问的是与自己的名称相同的模式中的数据库对象。
4、Oracle内存结构内存结构是Oracle数据库体系中最为重要的一部分,内存也是影响数据库性能的第一要素。
Oacle内存存储的主要内容:
程序代码;
已经连接的会话的相关信息,包括当前所有活动会话和非活动会话;
程序运行时必需的相关信息,如查询计划;
Oracle进程之间通信和共享的信息,如锁;
按照内存使用方式不同,Oracle数据库的内存也可以分为SGA、PGA、和UGA(User Global Area,用户全局区)。
SGA:所有用户都可以访问的实例的共享内存区域。数据块、事务处理日志、数据字典信息等都存储在SGA中。
PGA:一类非共享的内存,专用于特定的服务器进程,并且只能够由这个进程访问。