【TABLESPACE】怎麼去降低資料檔案的高水位呢(BLOCK_ID)
http://blog.itpub.net/29487349/viewspace-2143418/ 這邊文章說了怎麼收縮表空間,那麼有的時候會出現以下情況,也就是我們查詢表空間空間空閒很多,但執行該文章中查詢可以resize的空間卻很小,這是為什麼呢? 好,下面我們來看一看。
例項,Oracle11.2.0.4 for redhat6.7 x64
查詢表空間使用狀況
點選(此處)摺疊或開啟
-
TABLESPACE_NAME TOTAL FREE % Free
-
------------------------- ---------- ---------- ----------
-
SYSAUX 520 27 5
-
SYSTEM 750 9 1
-
TEST 200 111 56 --- TEST表空間剩餘111M(測試,使用資料較小)
-
UNDOTBS1 75 1 1
- USERS 76.25 3 4
執行 查詢可以resize的大小
點選(此處)摺疊或開啟
-
Smallest
-
Size Current Poss.
-
FILE_NAME Poss. Size Savings
-
-------------------------------------------------- -------- -------- --------
-
/backup/oradata/mytest/test01.dbf 161 200 39
-
--------
- sum 39 也就是該資料檔案可以釋放39M,那麼這什麼怎麼回事呢
我們透過以下語句看看:
點選(此處)摺疊或開啟
-
SQL> select owner ownr, segment_name name,PARTITION_NAME, segment_type type, extent_id exid, file_id fiid, block_id blid, blocks blks
-
2 from dba_extents
-
3 where tablespace_name ='TEST'
-
4 order by block_id
-
5 /
-
………………………………
-
-
SCOTT OBJPART_ID INDEX 21 5 4352 128
-
SCOTT OBJPART_ID INDEX 22 5 4480 128
-
SCOTT OBJPART_ID INDEX 23 5 4608 128
-
SCOTT OBJPART_ID INDEX 24 5 4736 128
-
SCOTT OBJPART_ID INDEX 25 5 4864 128
-
SCOTT OBJPART_ID INDEX 26 5 5120 128
-
SCOTT OBJ_PART P20141231 TABLE PA 0 5 9600 1,024
-
SCOTT OBJ_PART P20141231 TABLE PA 1 5 10624 1,024
- SCOTT OBJ_PART P20141231 TABLE PA 2 5 19584 432 --查出 該分割槽表block_id比較大,也就是佔據資料檔案的位置最尾端(相對其他資料塊))
那麼我們可以透過move table方式降低該分割槽表的位置,也就移動到考前點的位置,此處請注意關於分割槽表相關的表、索引情況,請根據業務、資料庫來做判斷
執行下面命令:
點選(此處)摺疊或開啟
-
SQL> alter table scott.obj_part MODIFY PARTITION p20141231 shrink space; 該命令並沒有降低資料檔案中block_id大小,字面來理解,它只是負責收縮,降低該分割槽表的高水位。 該命令無需重建索引
-
-
Table altered.
-
-
-
-
SQL> alter table scott.obj_part move partition p20141231 tablespace test; --move 移至,移到表空間最前面的空閒block中,需要重建索引
-
- Table altered.
再次檢視錶空間resize情況
點選(此處)摺疊或開啟
-
SCOTT OBJPART_ID INDEX 23 5 4608 128
-
SCOTT OBJPART_ID INDEX 24 5 4736 128
-
SCOTT OBJPART_ID INDEX 25 5 4864 128
-
SCOTT OBJPART_ID INDEX 26 5 5120 128
-
SCOTT OBJ_PART P20141231 TABLE PA 0 5 5248 1,024
-
SCOTT OBJ_PART P20141231 TABLE PA 1 5 6272 1,024
-
SCOTT OBJ_PART P20141231 TABLE PA 2 5 7296 1,024 --位置已前移
-
-
-
SQL> select file_name,
-
2 ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) smallest,
-
3 ceil( blocks*&&blksize/1024/1024) currsize,
-
4 ceil( blocks*&&blksize/1024/1024) -
-
5 ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) savings
-
6 from dba_data_files a,
-
7 ( select file_id, max(block_id+blocks-1) hwm
-
8 from dba_extents where tablespace_name='TEST'
-
9 group by file_id ) b
-
10 where a.file_id = b.file_id(+) and tablespace_name='TEST';
-
-
Smallest
-
Size Current Poss.
-
FILE_NAME Poss. Size Savings
-
-------------------------------------------------- -------- -------- --------
-
/backup/oradata/mytest/test01.dbf 65 200 135
-
--------
- sum 135 --剩餘空間變大
再次執行相關alter …… resize操作即可。 當執行表、索引相關move、rebuild時,請了解業務及相關結構,任何操作都有風險,注意備份及操作規範。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29487349/viewspace-2143421/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE資料庫降低高水位線方法Oracle資料庫
- Oracle 降低高水位線Oracle
- oracle 高水位線及如何有效的降低高水位線Oracle
- 降低Oracle高水位線的方法Oracle
- Oracle之降低高水位線Oracle
- mysql釋放檔案高水位MySql
- 資料塊的插入與高水位
- 檢查資料檔案使用情況和能夠resize到高水位值指令碼指令碼
- tablespace 大檔案,undo,temp tablespace
- 資料怎麼插不進去(資料庫)?資料庫
- 資料庫不能直連怎麼造資料呢資料庫
- 恆訊科技分析:怎麼降低伺服器被黑的機率呢?伺服器
- 在unix下,怎麼用java呼叫.o檔案呢?Java
- Oracle資料庫管理——表資料庫高水位及shrink操作Oracle資料庫
- 大資料表的truncate,列刪除,shrink回收高水位大資料
- 高階函式,你怎麼那麼漂亮呢!函式
- Oracle高水位Oracle
- 當資料檔案表空間丟失的時候怎麼恢復該資料檔案
- CDGA|到底怎麼才能做好資料治理呢?
- oracle的高水位線HWMOracle
- oracle的高水位線(HWM)Oracle
- 程式怎麼判斷windows的隱藏檔案/資料夾?Windows
- oracle回收高水位Oracle
- Oracle 高水位(HWM)Oracle
- 資料夾裡的檔案怎麼設定跟外資料夾同名
- 【TABLESPACE】通過重建控制檔案調整表空間資料檔案位置及名稱
- 資料檔案或者tablespace損壞基於rman恢復測試
- Linux學習初期,怎麼給檔案或目錄命名呢?Linux
- 隨身碟免疫檔案應該怎麼建立呢?隨身碟免疫檔案的建立方法教程
- win10 檔案拖不動怎麼辦_win10資料夾裡的檔案拖不動怎麼辦Win10
- 關於高水位的知識
- Oracle的高水位線介紹Oracle
- 大資料是怎麼知道你去過新發地的?大資料
- ORACLE 高水位線(HWM)Oracle
- oracle 回收高水位線Oracle
- oracle回收高水位線Oracle
- oracle高水位問題Oracle
- APP資料洩露該怎麼去排查和溯源APP