表空间:
1 表空间的概念
表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存放在指定的表空间中。但主要存放的是表,所以称作表空间
2 理解表空间
表空间是数据库的逻辑存储空间,在数据库中开辟的一个空间,用于存储我们的数据库的对象,一个数据库可以有多个表空间,Oracle 11g表空间设计的概念是与MySql与SQL Server的重要的区别,oracle的很多优化都是基于表空间设计理念来实现的。
3表空间与数据文件
表空间由一个或多个数据文件构成,数据文件的位置和大小可以由用户自己定义,
我们存储的表、数据库对象等都是存放在数据文件中。
4表空间的分类
永久表空间
存放数据库中永久化存储的对象,表、视图、存储过程等。
临时表空间
存放数据库操作中中间执行的过程,执行结束后存放的内容被自动释放掉,
不进行永久保存。
UNDO表空间
保存事务所修改数据的旧值,也就是被修改前的数据。利用UNDO表空间
可以对数据进行撤销、回滚的操作。
5 查看用户的表空间
使用不同用户登录对应的表空间不同
数据字典:
dba_tablespaces 系统管理员级的用户查看的数据字典
user_tablespaces 普通用户查看的数据字典
查看方式: desc dba_tablespaces | desc user_tablespaces
6 表空间作用:
system 存放sys用户的表、视图以及存储过程等数据库对象系统表空间。
sysaux 作为example的辅助表空间。
undotbs1 存储一些撤销信息的。
temp 存储SQL语句处理的表和索引信息的临时表空间。
users 存储数据库用户创建的数据库对象的永久表空间。
example 安装Oracle11g数据库事例来使用的表空间。
7 查看每一用户下面对应的默认表空间和临时表空间
数据字典:
dba_users
user_users
查看方式:desc dba_users | desc user_users
8 设置用户的默认或临时表空间
ALTER USER username DEFAULT | TEMPORARY TABLESPACE tablespace_name;
9 创建表空间
9.1 创建永久表空间:
CREATE TABLESPACE tablespace_name
DATAFILE‘本低存放路径/数据文件名.dbf’ SIZE XX;
9.2 创建临时表空间:
CREATE TEMPORARY TABLESPACE tablespace_name
TEMPFILE ‘本低存放路径/数据文件名.dbf’ SIZE XX;
注:SIZE表示数据文件的大小,如果没有指定数据文件的路径,默认存放在ORACL的安装目录下。
eg:
创建永久表空间:
CREATETABLESPACE test1_tablespace DATAFILE'test1file.dbf' size 10M
创建临时表空间:
CREATE TEMPORARY TABLESPACE test2_tablespaceTEMPFILE 'test2file.dbf' size 10M
10 修改表空间
10.1 修改表空间的状态
设置联机或脱机状态(联机|脱机),脱机状态的表空间不能使用
ALTER TABLESPACE tablespace_nameONLINE | OFFLINE
注:数据字典dba_tablespaces中有一个STATUS字段表示表空间的状态
设置只读或可读写状态(必须在联机状态才可设置,联机状态就是读写状态)
ALTER TABLESPACE tablespace_nameREAD ONLY | READ WRITE
10.2修改表空间的数据文件
增加数据文件
ALTER TABLESPACE tablespace_nameADD DATAFILE 'XX.dbf' SIZE xx;
删除数据文件
ALTER TABLESPACE tablespace_nameDROP DATEFILE 'XX.dbf';
注:不能删除表空间中的第一个数据文件,如果要删除该文件则需要删除整个表空间
11 删除表空间
DROPTABLESPACE tablespace_name
[INCLUDING CONTENTS [AND DATAFILES][CASCADECONSTRAINT ]];
注:无选项 —— 当表空间为空才能删除, 只是删除表空间(不删除里面的数据文件)。
includingcontents —— 删除表空间及对象;
includingcontents and datafiles —— 删除表空间、对象及数据文件;
including contents cascade constraint —— 删除关联;
including contents and datafiles cascadeconstraint —— 含前两项。
表空间删除后,如果物理文件没删除,去本地路径下手动删除。切记先用命令删
除,如果直接就删除物理文件,数据库启动时会报错:ORA-01033。