

表空间说明,创建删除扩展表空间,设置表空间联机,脱机,只读,移动表空间数据文件,设置表所属表空间
一、表空间原理特点及使用表空间的好处
1.oracle表空间的作用及特点
1)数据库是由一个或多个表空间组成,oracle使用表空间从逻辑上组织数据库,表空间由段构成,段又分成区,区又分块,如省分市,市分成县,县分成乡
2)表空间是个逻辑的概念,不应该单纯的理解为表的空间,它还包括里面的表及数据文件在磁盘的位置,就如北京不能理解为北方的京,北京包括那里的人,及它所代表的那块土地。
3)若创建新表不指定表空间时,默认放在名为system的表空间,可用pl.sql工具,在表属性里,一般选项卡下查看一个表的表空间
4)表可以放在默认的表空间,也可以放在自建表的空间,当新建一个数据库时,最好也创建一个表空间。
5)一个表空间由一个多个数据存储文件组成,当表过多数据文件不够时可增加数据文件,每个文件最大500M。
2.使用表空间的好处
1)可以控制数据库占用的磁盘位置
2)可以将不同数据对象放在不同位置,有早于提高I/O性能
3)有利于备份和恢复。
三、创建与删除表空间,设置表的表空间,查询表空间拥有的表与表所属的表空间
1.创建表空间,建立数据库后,最好建立自己的表空间
先用show user;显示当前登录的用户,如果不是sys用户,需要先切换用户
create tablespace sp001 datafile 'd:\sp001.dbf' size 20m uniform size 128k;
//创建名为sp001的表空间,表空间存放位置和文件名为:d:\sp001.dbf,表空间文件的最大值为20m,每次增加128k
2.使用pl.sql工具查看表空间是否建立成功
在pl.sql下,展开tablespaces节点,查看有没有上一步创建的名为sp001的表空间
3.指定表存放的表空间,默认表放在system表空间
create table mypart(deptno number(2),dname varchar2(14),loc varchar2(13)) tablespace sp001;
4.用pl.sql工具查看表空间的表:所有对象,展开tablespaces节点下的tables,查看有无上一步新建的mypart表。有时需要在pl.sql工具中刷新才会出为
5.删除表空间和其数据文件:drop tablespace '表空间名' including contents and datafiles; //删除文件
6.查询表空间拥有的表:select * from all_tables where tablespace_name='SP001';//查询名为sp001的表空间中有那些有,SP001字母要大写
7.查询表所在的表空间:select tablespace_name,table_name from user_tables where table_name='MYPART; //查询表EMP属于那个表空间,这里EMP表大写,不能查默认表空间的表
四、设置表空间的联机,脱机和只读状态
默认表空间处于联机状态
alter tablespace sp001 offline; //把名为sp001的表空间设为脱机状态
atler tablespace sp001 online;//把名为sp001的表空间设为联机状态
alter tablespace sp001 read only;//把名为sp001的表空间设为只读状态,设为只读后不能进行update,delete,inert等操作
alter tablespace sp001 read write; //把名为sp001的表空间设为可读写
演示把表空间设为只读状态后,不能向表空间的表插入数据:
insert into mypart values(12,'sp','beijing'); //先插入一条数据
alter tablespace sp001 read only; //设为只读
select * from mypart;
inert into mypart values(13,'spp',tianjing'); //只读后无法加入
alter tablespace sp001 read write; //再改为可读写
inert into mypart values(13,'spp',tianjing'); //改为可读写后可以加入
五、扩展表空间有三种办法
例:insert into mypart select * from mypart; //重复使用该语句往mypart表中插入大量数据,直到表空间不够,提示如下错误
无法通过16在表空间“(***”扩展 //当表空间配置的数据文件大小不够存放表空间中表的数据时,会提示此错误
增加一个存放文件:alter tablespace sp001 add datafile 'd:\test\sp002.dfb' size 20m; //给sp001表空间增加一个名为sp002.dbf的20m文件
增加文件大小:alter tablespace 表空间名 'd:\test\'sp001.dbf' resize 20m; //增加文件大小
设为自增加长:alter tablespace 'd:\test\sp01.dbf' autoextend on next 10m maxsize 500m; //设为自增加,每次增加10M,但最大不能超过500M
六、移动表空间物理数据文件存放位置步骤,如磁盘坏
1.确定数据文件所属的表空间:select tablespace_name from dba_data_files where file_name='D:\SP001.DBF'; //文件路径中字母要大写
2.使该表空间脱机:alter tablespace sp001 offline;
3.移动表空间数据文件:host move d:\sp001.dbf d:\test\sp001.dbf; //语句在SQL*Plus中执行成功,在PL/SQL中不成功
host move d:\sp002.dbf d:\test\sp002.dbf;//如有多个数据文件要复制多次
4.关联表空间到新的数据文件存放位置:alter tablespace sp001 rename datafile 'd:\sp001.dbf' to 'd:\test\sp001.dbf';
alter tablespace sp001 rename datafile 'd:\sp002.dbf' to 'd:\test\sp002.dbf';//多个数据文件要关联多次
5.使表空间再处理联机状态:alter tablespace sp001 online;
七、表空间的其它知识
1.undo表空间和临时表空间建立方法
2.其它表空间,包括索引,undo,临时,非标准块表空间