记一次甲骨文释放表空间,还原数据实操

  

首先介绍一下项目背景,这是一个java的后端平台,运行在win2008server平台上,主要存图片和视频的,占空间比较大,甲骨文数据库(你懂的,崩溃的节奏)。
一张图片表主要用于存储blob类型的图片数据,硬盘中共也就800克,发现单个表空间数据文件增长到30克左右,硬盘就剩下30克左右的空间,马上就要爆表了,领导很是着急,催的特别急,无奈我是一脸懵逼,也没有详细的记录文档,每张表都不知道干嘛的。
最后通过请教当年写项目的大佬,得到方案,备份一年的数据,截断表,直接删除表空间,然后重新建立表空间,下面记录了一些当时的用的sql语句。

  
 <代码>查看各个表空间大小
  选择一个。tablespace_name而圆(a.total_size)“total_size (MB)”,
  轮(a.total_size)轮(b.free_size, 3)“used_size (MB)”,
  轮(b.free_size, 3)“free_size (MB)”而圆(b.free_size/total_size * 100, 2) | | free_rate“%”
  (选择tablespace_name,总和total_size(字节)/1024/1024
  从dba_data_files
  集团通过tablespace_name),
  (选择tablespace_name,总和(字节)/free_size 1024/1024
  从dba_free_space
  集团由tablespace_name) b
  一个地方。tablespace_name=b.tablespace_name (+);
  
  查看表空间
  选择tablespace_name、file_id file_name,
  轮(字节/(1024 * 1024),0)total_space
  从dba_data_files
  order by tablespace_name
  
  选择file_name、autoextensible increment_by dba_data_files
  在tablespace_name='表空间名称“
  
  清空数据有可能表空间仍没有释放,可以使用如下语句:
  截断表pecprocesspic
  alter table pecprocesspic释放未使用保持0;
  
  删除表空间,删除无任何数据对象的表空间
  删除表空间wz_img
  
  删除有任何数据对象的表空间(操作需谨慎,必须备份好数据!)
  删除表空间wz_img包括内容和数据文件来完成;
  
  创建表空间
  创建表空间表空间名称丢失' D: \ oradata \ orcl \ \ app \管理员表空间文件名称。奥拉的大小512 autoextend下256最大容量无限的;
  添加表空间文件
  改变表空间表空间文件添加丢失的D: \ oradata \ orcl \ \ app \管理员表空间文件名称。奥拉的大小512 autoextend下256最大容量无限的;
  
  这是一些重要的sql语句,其他的备份还原就不写了,都是通过pl/sql操作的,不难,很大的数据量,备份了将近七天左右,还原了三天左右。 

记一次甲骨文释放表空间,还原数据实操