共計(jì) 1902 個(gè)字符,預(yù)計(jì)需要花費(fèi) 5 分鐘才能閱讀完成。
本篇內(nèi)容介紹了“數(shù)據(jù)庫表、索引、表空間的回收方法是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓丸趣 TV 小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
說明:數(shù)據(jù)庫運(yùn)行一段時(shí)間后,需要對(duì)數(shù)據(jù)庫進(jìn)行歸檔的操作;
數(shù)據(jù)庫歸檔完成后,需要對(duì)表和索引進(jìn)行收縮才能真正的提高整個(gè)系統(tǒng)的運(yùn)行效率。
如果需要對(duì)數(shù)據(jù)庫的表空間進(jìn)行回收,還需要對(duì)數(shù)據(jù)文件進(jìn)行 rsize 的操作;
詳細(xì)操作步驟:
一、表和索引的收縮
1、查看需要進(jìn)行收縮的對(duì)象 (查看某個(gè)表空間下面,可回收空間超過 100M 的表)
腳本:
SELECT NUM_ROWS,AVG_ROW_LEN*NUM_ROWS/1024/1024/0.9 pinggu, BLOCKS*8/1024shiji,(BLOCKS*8/1024-AVG_ROW_LEN*NUM_ROWS/1024/1024/0.9) MB,TABLE_NAME
FROM dba_tables
WHERE tablespace_name= tablespace_name AND
BLOCKS*8/1024-AVG_ROW_LEN*NUM_ROWS/1024/1024/0.9 100 AND rownum 11 order by mb desc;
2、進(jìn)行表的收縮
1)打開表的行遷移
腳本:alter table table_name enable row movement ;
2)進(jìn)行表的收縮
腳本:alter table table_name shrink space compcat;
3) 進(jìn)行高水位線的回收
alter table table_name shrink space;
3、進(jìn)行索引的回收(REBUILD 和 SHRINK 都可以實(shí)現(xiàn)這個(gè)目的)
1)重建索引的腳本:
ALTER INDEX INDEX_name
REBUILD
NOCOMPRESS
NOPARALLEL
TABLESPACE tablespace_name
STORAGE (
INITIAL 1M
NEXT 1M
PCTINCREASE 0
)
ONLINE;
2)進(jìn)行索引的收縮:
alter index INDEX_name shrink space;
4、運(yùn)行重新編譯腳本 utlrp.sql,(因?yàn)殚_啟行遷移后,可能有些對(duì)象會(huì)失效)
cd $ORACLE_HOME
@/rdbms/admin/utlrp.sql
二、表空間的回收
表空間的回收歸根到底是數(shù)據(jù)文件大小的回收;
1、表空間回收大小的腳本和查看
select a.file#,a.name,a.bytes/1024/1024 CurrentMB,
ceil(HWM * a.block_size)/1024/1024 ResizeTo,
(a.bytes – HWM * a.block_size)/1024/1024 ReleaseMB,
alter database datafile ||a.name|| resize ||
ceil(HWM * a.block_size/1024/1024) || ResizeCMD
from v$datafile a,
(select file_id,max(block_id+blocks-1) HWM
from dba_extents where file_id in
(select b.file# From v$tablespace a ,v$datafile b
where a.ts#=b.ts# and a.name= tablespace_name )
group by file_id) b
where a.file# = b.file_id(+)
and (a.bytes – HWM *block_size) 0
order by 5
2、某些數(shù)據(jù)文件的使用率很小,但是進(jìn)行數(shù)據(jù)文件的 Resize 時(shí)候卻回收不了多少空間,可以通過以下語句查看相應(yīng)
文件的段分配情況
select * from dba_extents where tablespace_name= tablespace_name AND FILE_ID= FILE_ID ORDER BY BLOCK_ID DESC;
說明:數(shù)據(jù)文件的可以 resize 的大小是由最大的 BLOCK_ID 所決定的,因此可以通過上面的 shrink 或者 move 命令進(jìn)行操作;
3、進(jìn)行數(shù)據(jù)文件的 RESIZE 操作
ALTER DATABASE DATAFILE /oracle/ID1/112_64/dbs/oradataccdata.dbf(數(shù)據(jù)文件的位置)
RESIZE 10000M。
“數(shù)據(jù)庫表、索引、表空間的回收方法是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注丸趣 TV 網(wǎng)站,丸趣 TV 小編將為大家輸出更多高質(zhì)量的實(shí)用文章!