千家信息网

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

发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,首先介绍一下项目背景,这是一个java的后端平台,运行在win2008server平台上,主要存图片和视频的,占空间比较大,Oracle数据库(你懂的,崩溃的节奏)。一张图片表主要用于存储blob类型
千家信息网最后更新 2025年02月03日记一次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操作的,不难,很大的数据量,备份了将近七天左右,还原了三天左右。
0