永久表空间
主要用于存放各种需要长期保存的数据文件,用户数据及数据字典临时表空间主要用来做查询和存放一些缓冲区数据
临时表空间
消耗的主要原因是需要对查询的中间结果进行排序。重启数据库后可以自动释放临时表空间。
创建表空间的基本语法格式: CREATE TABLESPACE 表空间名称 DATAFILE ‘数据文件全名’ SIZE 数据文件初始长度;
例子:
System>CREATE TABLESPACE DATASPACE
DATAFILE'D:\Data01.DBF' SIZE 200M;
创建临时表空间的基本语法格式:
CREATETEMPORARYTABLESPACE 表空间名称
TEMPFILE ‘数据文件全名’
SIZE 数据文件初始长度;
例子:
CREATE TEMPORARY TABLESPACE temp_tbs TEMPFILE 'd:/temp.dbf' SIZE 10m;
通过人工改变表空间的状态,可以控制表空间的可用性、安全性,并能为备份和恢复提供保证。表空间有联机和脱机两种状态。 联机状态
联机状态又分为以下两种情况:
读写 只读 脱机状态在有多个应用表空间的数据库中,DBA可以将某个表空间设置为脱机状态,使该表空间暂时不允许任何用户访问它(用户仍可访问数据库中的其他表空间)。也可以将表空间从脱机状态切换到联机状态,使用户重新能够访问其中的数据。DBA可以将表空间的状态在联机与脱机之间转换。注意:SYSTEM表空间不能被设置为脱机状态,因为数据库运行过程中始终会用到SYSTEM表空间中的数据。
有四种脱机模式:
正常 ( NORMAL ) 临时 ( TEMPORARY ) 立即 ( IMMEDIATE ) 用于恢复 ( FORRECOVERY )将表空间联机的命令为: ALTER TABLESPACE 表空间名称 ONLINE;
将表空间脱机的命令为:ALTERTABLESPACE 表空间名称 OFFLINENORMAL; 查看表空间信息(sys身份登录) SELECT * FROM dba_tablespaces ; 或 SELECT * FROM v$tablespace ; 或(当前账户) SELECT * FROM user_tablespaces ; 查看表空间的文件信息 SELECT * FROM dba_data_files WHERE tablespace_name =‘ 表空间名称’ ( 永久表空间 ) SELECT * FROM dba_temp_files ;( 临时表空间 ) 修改表空间的命令为 ALTER TABLESPACE 表空间名称 需修改的值; 以下语句将表空间DATASPACE改为只读或读写 ALTER TABLESPACE DATASPACE READ ONLY; ALTER TABLESPACE DATASPACE READ WRITE; 删除表空间的语法格式如下所DROPTABLESPACE 表空间名称;
以下语句将删除表空间DATASPACE示:DROP TABLESPACE DATASPACE;
下面介绍几个Oracle和其他数据库的语法不同
在修改表的字段的时候Oracle的语法是
ALTER TABLE 表名 MODIFY [字段名称 数据类型],…
在Oracle中没有自增长这个约束!要实现自增长那么就需要添加序列
序列(sequence)就是一个命名的顺序编号生成器。它能够以串行方式生成一系列的顺序整数。序列可以被设置为递增或递减、有界或无界、循环或不循环等方式。序列比较象数学当中等差数列的概念,需要提供初始值和差值。 序列由Oracle服务器端产生,出自一处,可以在多用户并发环境中为各个用户生成不重复的顺序整数,而且不需要任何额外的I/O。每个用户在对序列提出申请时都会得到下一个可用的整数。 如果有多个用户同时向序列提出申请,序列将按照串行机制依次处理各个用户的请求,决不会生成两个相同的整数。序列生成下一个整数的速度十分快,即使在并发用户数量很多的联机事务处理环境中,当多个用户同时对序列提出申请时也不会产生明显的延迟。在定义序列时需要提供如下信息: 序列的名称 生成整数的顺序是递增还是递减 生成整数的界限或范围,是否循环 生成的两个整数之间的间隔(即等差数列中的差值) CREATE SEQUENCE mySEQ //创建序列 [INCREMENT BY n][START WITH n]//每次增长的值 从哪个值开始 [MAXVALUE n|NOMAXVALUE]//最大值 没有最大值 [MINVALUE n|NOMINVALUE]//最小值 没有最小值 [CYCLE|NOCYCLE]//是否循环 [CACHE|NOCACHE]//设置不缓存序列内容