Oracle表空间
Oracle体系结构:
一台计算机:一个数据库
一个数据库:可以有多个实例,但是一般只有一个实例
一个实例: 多个表空间, 多个用户
一个表空间:多个数据文件[dbf,ora]组成;可以有多个用户
一个用户: 从属于一个表空间
表空间
表空间其实就是用来保存用户数据的地方。
--在Oracle 数据库中,每一个用户都自己的一个默认的表空间。
--管理员创建用户的时候,就会给该用户指定一个默认的表空间。
--创建表空间需要管理员dba的权限
表空间只是存储用户数据的逻辑单元。
--一个表空间包含许多的数据文件,这些数据文件才是保存用户数据的物理单元。
--所有用户的数据都是保存在以.dbf结尾的文件里面。
--用户只会与表空间打交道,而不会直接与数据文件打交道。
--也就是说,用户数据保存在哪个数据文件里面对于用户来说是不透明的。
--在MySQL 数据库中,不同的项目会创建不同的数据库。
--但是Oracle 数据库与MySQL 数据库不一样。
在Oracle中只会创建一个数据库(例如:ORCL)。
--所有项目的数据都可以保存在该数据库里面。
--Oracle 数据库是根据用户区分不同项目的数据.
因为管理员创建用户的时候,就会为该用户指定一个默认的表空间。
所以,就必须要先有表空间,然后再有用户。
表空间的分类
1)临时表空间:保存一些临时数据,例如:子查询;(Oracle自动维护)
2)撤销表空间:保存一些修改前但未提交的数据。
当用户修改数据的时候,Oracle数据库就会把修改前的数据保存在撤销表空间里面。
如果用户执行了提交事务操作的时候,那么Oracle就会把撤销表空间的数据删除;
如果用户执行了事务回滚操作,那么Oracle就会把撤销表空间的数据恢复回来;(Oracle自动维护)
3)永久表空间:永久保存用户的数据。(需要用户自己维护)
创建表空间
create tablespace 表空间名
datafile ‘数据文件绝对路径’
size n --数据文件的默认大小
[autoextend on |off] --指定是否可以扩展大小, on : 可以扩展,off: 不可以扩展
[next n] --每次扩展的大小
[maxsize n];
create tablespace test01
datafile 'c:\test01.dbf'
size 500 m
autoextend on
next 300 m;
查询表空间
dba_data _files:保存所有表空间以及数据文件的信息。
select tablespace_name ,file_name
from dba_data_files;
扩展表空间
扩展表空间有两种方式:
alter tablespace 表空间名
add datafile ‘数据文件’
size 默认大小
[autoextend on |off] –指定是否可以扩展大小
[next n] –每次扩展的大小
[maxsize n];
alter tablespace test01
datafile 'c:\test02.dbf'
size 500 m
autoextend on
next 300 m;
删除表空间
drop tablespace 表空间
[including contents and datafiles];