表空間中有資料也可以壓縮表空間(資料檔案)大小

germany006發表於2014-06-16
轉載地址:http://blog.chinaunix.net/uid-23284114-id-311329.html


表空間中有資料也可以resize表空間(資料檔案)的大小,但是前提要在段級別進行段級別的壓縮。

下面用實驗來驗證這個觀點

先了解一下表空間、資料檔案和段的關係。

表空間和段是邏輯上的概念,一個表空間(tablespace)由一個或者多個段(segment)組成;而表空間所對應的物理物件是資料檔案(datafile)。

oracle中,段和表空間可以自動增長,但是不能自動收縮;要想收縮必須要手動完成。

順序是  壓縮段---&gt壓縮表空間(也就是壓縮資料檔案)

表空間中有資料也可以壓縮表空間(資料檔案)大小

1.建立表空間t6

conn / as sysdba

SQL> create tablespace t6 datafile '/u01/app/oracle/oradata/orcl/t6.dbf' size 5m autoextend on next 5m;

2.在表空間t6上建立測試表ttt

conn scott/tiger

SQL> create table ttt tablespace t6 as select * from emp;

檢視資料檔案t6.dbf的大小

-rw-r----- 1 oracle oinstall 5.1M 05-13 16:27 t6.dbf

3.向表ttt中查資料,要多次執行插入資料

insert into ttt select  * from ttt;

隨著資料的插入,資料檔案t6.dbf在不斷增長

-rw-r----- 1 oracle oinstall  11M 05-13 16:29 t6.dbf
-rw-r----- 1 oracle oinstall  21M 05-13 16:31 t6.dbf

4.下面刪除部分資料,讓ttt所在段有空閒空間,為壓縮段做準備;因為資料檔案由段組成,所以壓縮段後才能壓縮資料檔案。

delete ttt where rownum<1000;

SQL> delete ttt where EMPNO=7788;

SQL> delete ttt where EMPNO=7369;

SQL> delete ttt where EMPNO=7499;

SQL> delete ttt where EMPNO=7934;

SQL> select count(*) from ttt;

  COUNT(*)
----------
    326962

SQL> commit;

順序是  壓縮段---&gt壓縮表空間(也就是壓縮資料檔案)

刪除後段就出現碎片了,也就是有很多不連續的空閒空間;下面進行段級別壓縮;

SQL> alter table ttt shrink space;        //壓縮碎片

SQL> alter table ttt deallocate unused;    //收回段中嶄新的沒有使用的部分(也就是高水位以上的部分)

壓縮表空間(資料檔案)

SQL> alter database datafile '/u01/app/oracle/oradata/orcl/t6.dbf' resize 15m;

Database altered.

檢視資料檔案t6.dbf的大小,注意原來是21m

-rw-r----- 1 oracle oinstall  16M 05-13 17:14 t6.dbf

還想再壓縮

SQL> alter database datafile '/u01/app/oracle/oradata/orcl/t6.dbf' resize 10m;
alter database datafile '/u01/app/oracle/oradata/orcl/t6.dbf' resize 10m
*
ERROR at line 1:
ORA-03297: file contains used data beyond requested RESIZE value

ORA-03297:檔案包含的資料超出了要求改變尺寸值,所以不能再壓縮了。

 

到這裡,實驗結束。

結論:表空間中由資料也可以進行壓縮,不過前提是先壓縮段的大小!

實驗中,想到了alter table move跟shrink space的區別,具體內容可以參考這篇部落格

http://hi.baidu.com/kywinder/blog/item/f96e62d4aa69c82306088b6f.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28371090/viewspace-1183957/,如需轉載,請註明出處,否則將追究法律責任。

相關文章