1
、
oracle
表空间
(1)
、表空间分类
永久表空间
表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存放在指定的表空间中。但主要存放的是表,所以称作表空间
临时表空间
oracle
临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的
中间结果进行排序。
重启数据库可以释放临时表空间
(2)
、表空间操作
查看所有表空间
select * from sys.dba_tablespaces;
![](https://img-blog.csdnimg.cn/f9d217eb31fb40c5b1b0f5ab13789ceb.png)
创建表空间
select * from sys.dba_tablespaces;
create tablespace 永久表空间名称
datafile ‘
永久表空间物理文件位置【数据文件】
.DBF’
size 100M -- size设置数据文件的大小
autoextend on next 10M -- autoextend 设置数据文件是否自动扩容,
on是开启【开启后可以通过
“next xx”
设置扩容大小】,
off
是关闭
maxsize 200M -- maxsize
设置上限大小和
autoextend
配合使用,不设置就是无限
[permanent] --
设置永久表空间,设置了就是永久表空间
[online]; --
联机状态 ,以便数据库用户访问其中的数据。但是数据库管理员可以在对表空间进行维护, 备份或恢复操作时,令表空间脱机(offline)
![](https://img-blog.csdnimg.cn/8713973cdae54946b7038bb9d9fa071a.png)
表空间重命名
alter tablespace
原表空间名称
rename to
新表空间名称
;
![](https://img-blog.csdnimg.cn/b11cc14dbdec444db421b4d3cf9bb6a1.png)
增加数据文件
ps
:一个表空间可以有多个数据文件的,每个是数据文件属于一个表空间,数据文件就是在磁盘上存储 数据的媒介。
alter tablespace
表空间名称
add datafile ‘
数据文件路径
’
size
大小
autoextend on next
大小
maxsize
大小
![](https://img-blog.csdnimg.cn/527c24fe3ebf45f68f31f6678f738295.png)
修改表空间的数据文件
PS1:
想要修改数据文件需要先将表空间改为离线状态
“offline”
,否则无法生效,因为
online
状态下,表
空间在使用数据文件,有这个读写保护的
PS2: 修改成的文件需要存在
alter tablespace
表空间名
rename datafile ‘
原来数据文件的路径
’ to ‘
新的数据文件路径
’;
![](https://img-blog.csdnimg.cn/f90c239265ff429ca948b3fe196833a3.png)
修改数据文件大小
alter database datafile ‘
数据文件路径
’ resize
大小
;
修改数据文件为自动增长
alter database datafile '
数据文件路径
' autoextend on next
大小
maxsize
大小
;
![](https://img-blog.csdnimg.cn/a11b374e925c495faef4b44b12cdff91.png)
修改表空间状态
1
、联机
alter tablespace
表空间名
online
;
2
、脱机
alter tablespace
表空间名
offline
;
3
、修改为只读表空间
alter tablespace
表空间名
read only;
4
、查看表空间状态
select * from DBA_TABLESPACES where TABLESPACE_NAME=’
表空间名
’;
删除表空间
drop tablespace
表空间名
;
演示案例:移动数据文件
ps
:在实际的开发中可能会遇到磁盘损坏,需要移动表空间文件移至安全路径
第一步:使用管理员用户操作,查看数据文件所在的表空间
select tablespace_name from dba_data_files where file_name=upper(‘
数据文件路径
’);
第二步:使表空间进行脱机
alter tablespace
表空间名
offline
;
第三步:移动数据文件至指定的目录【如果使用
linux
就用
mv
指令,
window
可以用鼠标】
第四步:修改数据文件的位置
alter tablespace
表空间名
rename datafile ‘
原来数据文件的路径
’ to ‘
新的数据文件路径
’;
第五步:使用表空间联机
alter tablespace
表空间名称
online;
![](https://img-blog.csdnimg.cn/294fe2b4bc7144299c1f1ced8619496d.png)
--
创建表空间
---
类似
MySQL
中创建数据库
create tablespace
mytablespace datafile
'/usr/local/dba/testdbf.DBF'
-- LINUX
服
务器没有磁盘的直接是目录路径
size
100
M
-- size
设置数据文件的大小
autoextend
on next
10
M
-- autoextend
设置数据文件是否自动扩容,
on
是开启【开启后可以通
过
“next xx”
设置扩容大小】,
off
是关闭
maxsize
200
M
-- maxsize
设置上限大小和
autoextend
配合使用,不设置就是无限
permanent
--
设置永久表空间,设置了就是永久表空间
online
;
--
联机状态 ,以便数据库用户访问其中的数据。但是数据库管理员可以在对表空间进行维护,备
份或恢复操作时,令表空间脱机
(offline)
--
修改表空间名字
alter tablespace
mytablespace
rename to
newtablespace;
---
追加数据文件到表空间
alter tablespace
newtablespace
add
datafile
'/usr/local/dba/testdbf_02.DBF'
size
100
M
--
文件多大
autoextend
on next
10
M
--
每次扩容多少
maxsize
200
M;
--
最大上限多少
--
修改数据文件设置
alter database
datafile
'/usr/local/dba/testdbf_02.DBF'
resize
500
M;
--
大小
500
--
查看某个表空间状态
select
*
from
sys
.dba_tablespaces
where
TABLESPACE_NAME
=
'NEWTABLESPACE'
;
--
更改表空间状态位
offline---
离线状态
alter tablespace
NEWTABLESPACE
offline
;
--
更改表空间状态位
online--
联机状态
alter tablespace
NEWTABLESPACE
online
;