一 表空间
表空间是数据库的逻辑组成。从物理上面讲数据库中的数据放在磁盘的数据文件中。(数据文件存放在Oracle安装路径下:D:\app\JSJ\oradata\orcl中,**.ctl 控制文件,**.dbf 数据文件,**.log 日志文件);
从逻辑上讲,数据库文件放在表空间中,表空间是由一个或者多个数据文件组成。
Oracle中逻辑结构包括表空间、段、区、块。数据库是由表空间组成,表空间是由段组成,段是由区,区由块组成。
表空间是从逻辑上组织和管理数据库的数据。表空间可以达到以下效果:
表空间的作用帮助DBA用户完成以下工作:
1. 决定数据库实体的空间分配;
2. 设置数据库用户的空间份额;
3. 控制数据库部分数据的可用性;
4. 分步数据于不同的设备之间以改善性能;
5. 备份和恢复数据;
二 表空间的使用
System和sys默认使用system表空间;
普通用户默认是使用users表空间;
如果用户想要创建表空间,必须具备create tablespace权限。
l 创建表空间:
Create tablespace 表空间名字 datafile ‘数据文件地址’ size 空间大小 uniform size 区的大小;
Eg: create tablespace a datafile ‘D:\oraTest.dbf’ size 10m uniform size 256k;
l 使用表空间
在表空间中创建表
create table people(
no number(5),
name varchar2(20),
job varchar2(20)
) tablespace a;
l 改变表空间的状态
当创建好表空间后,表空间默认是联机状态,此时表空间是可以被读写的。
表空间一般常用四种状态:联机online、脱机offline、只读read only、可读可写状态read write。
l 使表空间脱机(表空间脱机后,无法对表空间中的数据进行读写)
SQL> conn sys/system as sysdba;
SQL> alter tablespace a offline;
使表空间脱机之后,再向里面插入数据,提示:此时无法读取文件。
l 使表空间连接(表空间联机后,可以对表空间中数据进行读写)
SQL> conn sys/system as sysdba;
SQL> alter tablespace a online;
l 使表空间只读(表空间为只读时,用户只可以在该表空间上执行select操作)
SQL> conn sys/system as sysdba;
SQL> alter tablespace a read only;
只可以进行select 操作,不可以进行insert之类的操作。
l 使表空间可读可写(表空间为可读可写时,用户可以在该表空间上执行所有操作)
SQL> conn sys/system as sysdba;
SQL> alter tablespace a read write;
l 表空间相关 数据字典查询
Ø 根据表名查询该表所在的表空间;emp
Select * from user_tables where table_name=’EMP’;
注:一定要在该表所在的用户下查询
Ø 根据表空间的名字查询该表空间中有些表
Select* from all_tables where tablespace_name=’A’;
l 根据数据文件名确定该数据文件和哪个表空间管理
SQL> conn sys/system as sysdba;
SQL>Select * from dba_data_files where file_name=’D:\ORATEST.DBF’;
l 根据表空间名字确定该表空间中有哪些数据文件
Select * from dba_data_files where tablespace_name=’A’;
l 查询当前用户所有的表空间。
Select tablespace_name from user_tables;
l 表空间的删除
删除表空间一般都要是dba权限的用户,或者具备drop tablespace权限的用户。
drop tablespace 表空间名 including contents and datafiles;
including contents :删除表空间时删除表空间中的所有数据对象。
datafiles:删除表空间时把数据文件也删除。
案例:
drop tablespace a including contents and datafiles;
三 表空间的拓展
拓展表空间的常用方法:
l 更改表空间数据文件大小
SQL> conn sys/system as sysdba;
SQL > alter database datafile ‘D:\ORATEST.DBF’ resize 20m;
l 给表空间增加数据文件
SQL> conn sys/system as sysdba;
SQL> alter tablespace a add datafile ‘D:\oraTest2.dbf’ size 20m;
设置文件自动增长
SQL> conn sys/system as sysdba;
SQL> alter database datafile ‘D:\ORATEST.DBF’ autoextend on next 10m maxsize 500m;
四 移动数据文件
第一步:确定数据文件属于哪个表空间。
SQL> conn sys/system as sysdba;
SQL> select * from dba_data_files where file_name=’D:\ORATEST.DBF’;
SQL> select tablespace_name from dba_data_files where file_name=’D:\ORATEST.DBF’;
第二步:使表空间脱机
SQL> alter tablespace a offline;
第三步:移动数据文件
1) 在操作系统中直接移动
2) 在cmd窗口中输入。move D:\ORATEST.DBF E:\ORATEST.DBF
第四步: alter tablespace 命令
SQL> alter tablespace a rename datafile ‘D:\ORATEST.DBF’ to ‘E:\ORATEST.DBF’;
第五步: 使表空间联机
SQL> alter tablespace a online;