Oracle表空间自动释放,记一次Oracle释放表空间,还原数据实操

首先介绍一下项目背景,这是一个java的后端平台,运行在win2008server平台上,主要存图片和视频的,占空间比较大,Oracle数据库(你懂的,崩溃的节奏)。

一张图片表主要用于存储blob类型的图片数据,硬盘中共也就800G,发现单个表空间数据文件增长到30G左右,硬盘就剩下30G左右的空间,马上就要爆表了,领导很是着急,催的特别急,无奈我是一脸懵逼,也没有详细的记录文档,每张表都不知道干嘛的。

最后通过请教当年写项目的大佬,得到方案,备份一年的数据,truncate表,直接删除表空间,然后重新建立表空间,下面记录了一些当时的用的sql语句。

查看各个表空间大小

select a.tablespace_name, round(a.total_size) "total_size(MB)",

round(a.total_size)-round(b.free_size,3) "used_size(MB)",

round(b.free_size,3) "free_size(MB)", round(b.free_size/total_size*100,2)||'%' free_rate

from ( select tablespace_name, sum(bytes)/1024/1024 total_size

from dba_data_files

group by tablespace_name ) a,

( select tablespace_name, sum(bytes)/1024/1024 free_size

from dba_free_space

group by tablespace_name ) b

where a.tablespace_name = b.tablespace_name(+);

查看表空间

select tablespace_name,file_id,file_name,

round(bytes/(1024*1024),0) total_space

from dba_data_files

order by tablespace_name

select file_name,autoextensible,increment_by from dba_data_files

where tablespace_name='表空间名称'

清空数据 有可能表空间仍没有释放,可以使用如下语句:

truncate table pecprocesspic

alter table pecprocesspic deallocate UNUSED KEEP 0;

删除表空间,删除无任何数据对象的表空间

drop tablespace wz_img

删除有任何数据对象的表空间(操作需谨慎,必须备份好数据!)

drop tablespace wz_img including contents and datafiles;

创建表空间

create tablespace 表空间名称 datafile 'D:\app\Administrator\oradata\orcl\表空间文件名称.ora' size 512m autoextend on next 256m maxsize unlimited;

添加表空间文件

alter tablespace 表空间文件 add datafile 'D:\app\Administrator\oradata\orcl\表空间文件名称.ora' size 512m autoextend on next 256m maxsize unlimited;

这是一些重要的sql语句,其他的备份还原就不写了,都是通过pl/sql操作的,不难,很大的数据量,备份了将近七天左右,还原了三天左右。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值