国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Oracle 刪除表中記錄 如何釋放表及表空間大小

Oracle 刪除表中記錄 如何釋放表及表空間大小

(


1.查看一個表所占的空間大?。?br>SELECT bytes/1024/1024 ||'MB' TABLE_SIZE ,u.* FROM USER_SEGMENTS UWHERE U.SEGMENT_NAME='JK_TEST';
2.查看一個表空間所占的實際大?。?br>SELECT SUM(BYTES) / 1024 / 1024 ||'MB' FROM USER_SEGMENTSU 
WHERE TABLESPACE_NAME = 'DATA01';
3.查看一個表空間對應(yīng)的數(shù)據(jù)文件:
SELECT * FROM DBA_DATA_FILES D WHERE D.TABLESPACE_NAME ='DATA01';
4.查看表空間的使用情況:
SELECTA.TABLESPACE_NAME,      
      FILENUM,   
      TOTAL "TOTAL (MB)",  
      F.FREE "FREE (MB)",
      TO_CHAR(ROUND(FREE * 100 / TOTAL, 2), '990.00')"FREE%", 
      TO_CHAR(ROUND((TOTAL - FREE) * 100 / TOTAL, 2), '990.00')"USED%",    
      ROUND(MAXSIZES, 2) "MAX (MB)"
  FROM (SELECTTABLESPACE_NAME,          
              COUNT(FILE_ID)FILENUM,        
              SUM(BYTES / (1024 * 1024))TOTAL,          
              SUM(MAXBYTES) / 1024 / 1024MAXSIZES      
         FROMDBA_DATA_FILES       
        GROUP BY TABLESPACE_NAME)A,     
      (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES / (1024 * 1024)))FREE     
         FROMDBA_FREE_SPACE      
        GROUP BY TABLESPACE_NAME) F
 WHERE A.TABLESPACE_NAME = F.TABLESPACE_NAME
5.查看數(shù)據(jù)文件的實際使用情況:
SELECT CEIL(MAX_BLOCK * BLOCK_SIZE / 1024)
  FROM (SELECT MAX(BLOCK_ID) MAX_BLOCK
         FROM DBA_EXTENTS
        WHERE FILE_ID IN (SELECT FILE_ID
                            FROM DBA_DATA_FILES D
                           WHERE D.TABLESPACE_NAME = 'USERS')) M,
      (SELECT VALUE / 1024 BLOCK_SIZE
         FROM V$PARAMETER
        WHERE NAME = 'db_block_size') B
一、創(chuàng)建一個有十萬條記錄的測試表jk_test ,查看其所占空間大小3873M
delete jk_test。再次查看大小不會變,此時執(zhí)行select * fromjk_test會發(fā)現(xiàn)速度超極慢,查詢結(jié)果卻是空,查看其COST,發(fā)現(xiàn)是10萬多。很難理解吧,其實是其所占空間沒有釋放的緣故。
執(zhí)行alter table jk_test move 或 alter table jk_test movestorage(initial 64k)
或alter table jk_test deallocate unused或 alter table jk_test shrinkspace.
注意:因為alter table jk_test move是通過消除行遷移,清除空間碎片,刪除空閑空間,實現(xiàn)縮小所占的空間,但會導(dǎo)致此表上的索引無效(因為ROWID變了,無法找到),所以執(zhí)行move 就需要重建索引。
找到表對應(yīng)的索引。
selectindex_name,table_name,tablespace_name,index_type,status from dba_indexes  where table_owner='SCOTT';
根據(jù)status的值,重建無效的就行了。
sql='alter index'||index_name||' rebuild'; 使用存儲過程執(zhí)行,稍微安慰。
還要注意alter table move過程中會產(chǎn)生鎖,應(yīng)該避免在業(yè)務(wù)高峰期操作!
再次查看其所占空間大小,發(fā)現(xiàn)已經(jīng)很小了,再一次執(zhí)行查詢,很快了吧。
另外說明:truncate table jk_test 會執(zhí)行的更快,而且其所占的空間也會釋放,我想應(yīng)該是truncate語句執(zhí)行后是不會進入oracle回收站(recylebin)的緣故。如果drop 一個表加上purge也不會進回收站(在此里面的數(shù)據(jù)可以通過flashback找回)。
不管是delete還是truncate 相應(yīng)數(shù)據(jù)文件的大小并不會改變,如果想改變數(shù)據(jù)文件所占空間大小可執(zhí)行如下語句:alterdatabase datafile 'filename' resize8g重定義數(shù)據(jù)文件的大?。ú荒苄∮谠摂?shù)據(jù)文件已用空間的大?。?。
另補充一些PURGE知識
Purge操作:
1). Purge tablespace tablespace_name : 用于清空表空間的Recycle Bin
2). Purge tablespace tablespace_name user user_name:清空指定表空間的Recycle Bin中指定用戶的對象
3). Purge recyclebin: 刪除當(dāng)前用戶的Recycle Bin中的對象
4). Purge dba_recyclebin: 刪除所有用戶的Recycle Bin中的對象,該命令要sysdba權(quán)限
5). Drop table table_name purge:  刪除對象并且不放在RecycleBin中,即永久的刪除,不能用Flashback恢復(fù)。
6). Purge index recycle_bin_object_name: 當(dāng)想釋放Recyclebin的空間,又想能恢復(fù)表時,可以通過釋放該對象的index所占用的空間來緩解空間壓力。 因為索引是可以重建的。
二、如果某些表占用了數(shù)據(jù)文件的最后一些塊,則需要先將該表導(dǎo)出或移動到其他的表空間中,然后刪除表,再進行收縮。不過如果是移動到其他的表空間,需要重建其索引。

1)SQL> alter table t_obj move tablespacet_tbs1;   ---移動表到其它表空間

也可以直接使用exp和imp來進行

2)SQL>alter owner.index_namerebuild;    --重建索引

3)刪除原來的表空間
三:對表分析之后也可以優(yōu)化(本人沒有試過)
analyze table ysgl_compile_reqsub 
compute statistics for all indexes;
也要看情況,不是什么情況都可以優(yōu)化,等下次有機會再測試一下。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Recyclebin 對象刪除機制, 空間釋放
Oracle:一個用戶操作多個表空間中表的問題(轉(zhuǎn))
Oracle 閃回特性(FLASHBACK DROP & RECYCLEBIN)
Oracle10g?flashback系列新特性之flashback?drop
oracle修改表和索引的表空間
Oracle回收站使用全攻略
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服