您好,登錄后才能下訂單哦!
首先介紹一下項目背景,這是一個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操作的,不難,很大的數據量,備份了將近七天左右,還原了三天左右。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。