一、查詢數據庫表空間使用率
select total.tablespace_name,
round(total.gb, 2) total_gb,
round(total.gb, 2) - round(nvl(free.gb, 0), 2) used_gb,
round(nvl(free.gb, 0), 2) free_gb,
round( 100 ( 1 - nvl( free.gb, 0 ) / total.gb ), 2 ) "USED RATE(%)",
round(nvl(free.gb, 0) / total.gb 100, 2) "FREE RATE(%)"
from (select tablespace_name, sum(bytes) / 1024 / 1024 / 1024 GB
from dba_free_space
group by tablespace_name) free,
(select tablespace_name, sum(bytes) / 1024 / 1024 / 1024 GB
from dba_data_files
group by tablespace_name) total
where total.tablespace_name = free.tablespace_name(+)
order by 5 desc;
注:文章中星號不顯示,如果有報錯右括號丟失,自己加上這兩個位置
專注于為中小企業提供網站設計、成都網站設計服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業灌云免費做網站提供優質的服務。我們立足成都,凝聚了一批互聯網行業人才,有力地推動了近1000家企業的穩健成長,幫助中小企業通過網站建設實現規模擴充和轉變。
二、查詢表空間T_SPACES占用空間比較大的對象
select *
from (select segment_name,
segment_type,
tablespace_name,
sum(bytes / 1024 / 1024 / 1024) used_gb
from dba_segments
where tablespace_name = 'T_SPACES'
group by segment_name, segment_type, tablespace_name )
order by 4 desc;
經分析:占用表空間T_SPACES使用率如上圖所示。
注:寫的比較久了,圖不見了,根據上面語句可以查詢出來占用空間最大的就是最前面的,因為使用了ORDER BY DESC倒序排列。
結論:我們需要清理上圖表中數據,可將表空間T_SPACES使用率降低。
三、建議刪除T_TAB1表數據(因為該表與歷史表T_TAB1_his有重復數據)
數據分布情況
1、T_TAB1分布情況如下:
select substr(tran_dt,1,6),count(*) from T_TAB1 group by substr(tran_dt,1,6) order by 1;
備份
exp test@test file=/aas/database_bak/T_TAB1.dmp tables=T_TAB1 log=/aas/database_bak/T_TAB1.log
清理:
truncate table T_TAB1;
分區表:
備份:
exp test@test file=/aas/database_bak/test1.dmp tables=test1 query=\"where tran_dt>='20190101'\" log=/aas/database_bak/test1.log STATISTICS=NONE DIRECT=Y compress=N INDEXES=N CONSTRAINTS=N
清理:
alter table test1 truncate partition M20181201;
alter table test1 truncate partition M20190101 update global indexes;
查看索引是否失效:
select index_name,table_name,tablespace_name,status from dba_indexes where table_name='test1';
按照條件進行備份和清理:
備份:
exp test@test file=/aas/database_bak/test2.dmp tables=test2 query=\"where tran_dt<'20180101'\" log=/aas/database_bak/test2.log
清理:
delete from test2 where tran_dt <20180101;
三種備份清理方法:面對非分區表、分區表、條件備份
查看索引是否失效:
select index_name,table_name,tablespace_name,status from dba_indexes where table_name='test2';
四、清理T_TAB1表數據(201611—201703)
1、查詢數據記錄數
select count(*) from T_TAB1 partition (M20170101) ;--3800371
2、truncate分區表T_TAB1數據
alter table T_TAB1 truncate partition M20170101 update global indexes;
五、查看索引是否失效(VALID有效),若失效重建索引
select status from dba_indexes where table_name='T_TAB1';
注:若有失效的索引,需要重建索引,重建索引語句如下:
alter index P_T_TAB1 rebuild online;
六、清理索引空間
在線重建索引(T_TAB1、T_TAB2)
1、T_TAB1
alter index INX1_T_TAB1 rebuild online;
alter index INX2_T_TAB1 rebuild online;
alter index PK_T_TAB1 rebuild online;
七、收集統計信息,數據導入完成以后,表統計信息還沒有執行,手動執行統計信息收集
BEGIN
DBMS_STATS.GATHER_TABLE_STATS
(OWNNAME => 'test',
TABNAME => 'test1',
ESTIMATE_PERCENT => DBMS_STATS.AUTO_SAMPLE_SIZE,
METHOD_OPT => 'for all columns size repeat',
DEGREE => 8,
CASCADE => TRUE);
END;
/
BEGIN
DBMS_STATS.GATHER_TABLE_STATS
(OWNNAME => 'test',
TABNAME => 'test2',
ESTIMATE_PERCENT => DBMS_STATS.AUTO_SAMPLE_SIZE,
METHOD_OPT => 'for all columns size repeat',
DEGREE => 8,
CASCADE => TRUE);
END;
/
以上是非常簡便的ORACLE數據庫表空間清理方案,可以直接拿去使用。
小知識:
數據庫分區索引的幾個視圖
dba_ind_partitions:分區索引的分區情況和統計信息。
dba_part_indexes:分區索引的概要統計信息,可以查看表中有那些分區索引,和分區索引的類型。
dba_indexes minus dba_part_indexes 可以得到每個表中哪些非分區索引
分區索引分為:本地索引和全局索引。
分區索引不能對整體重建,必須對每個分區重建。
--查詢該用戶下有哪些是分區表
select * from dba_part_tables where owner='SROOT'
dba_part_tables是sys用戶下的表.
將表遷移到其他表空間的命令
alter test1 move tablespace table_space;
重建索引
alter index test1_px rebuild online tablespace space_index;
網站題目:快速進行表空間清理方案的編寫和操作
文章出自:http://m.2m8n56k.cn/article22/jdcdcc.html
成都網站建設公司_創新互聯,為您提供標簽優化、搜索引擎優化、全網營銷推廣、云服務器、做網站、響應式網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯