10G新特性:BIGFILE TABLESPACE

kewin發表於2011-09-14
10G新特性:BIGFILE TABLESPACE
Kevin Zou
2011-9-14
ORACLE 10G 引入了BIGFILE TABLESPACE。由單一大的檔案組成的TABLESPACE,可不是由眾多小的資料檔案。由BIGFILE TABLESPACE 組成的DATABASE,大小可以到8個E (1 EB = 1000000000000000000B = 1018 bytes = 1 billion gigabytes = 1 million terabytes)
8個E的資料庫在目前來說,已經是足夠大了。
BIGFILE TABLESPACE對普通使用者來說,僅僅是空間而已,是透明的,使用者只是關心空間夠不夠,可不管空間來自小的資料檔案還是大檔案。
系統預設的行為是建立小檔案的表空間,SYSTEM和SYAAUX 一般都是系統預設的小檔案表空間;
可以在建立資料庫時指定,系統的預設表空間是小檔案還是大檔案:
CREATE DATABASE mynewdb
     USER SYS IDENTIFIED BY sys_password
     USER SYSTEM IDENTIFIED BY system_password
     SET DEFAULT BIGFILE TABLESPACE
     UNDO TABLESPACE undotbs
     DEFAULT TEMPORARY TABLESPACE tempts1;
當然了,這種預設行為可以在建立資料庫後,動態修改:

SQL> ALTER DATABASE SET DEFAULT BIGFILE TABLESPACE;

Database altered.

Elapsed: 00:00:00.05
SQL> ALTER DATABASE SET DEFAULT smallfile TABLESPACE;

Database altered.

Elapsed: 00:00:00.00

檢視系統當前的預設表空間型別:
SQL> SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES
  2     WHERE PROPERTY_NAME = 'DEFAULT_TBS_TYPE';

PROPERTY_VALUE
---------------------------------------------------------------------

SMALLFILE

小檔案的表空間可以容納1022 個檔案,每個檔案可以容納4M個BLOCK。我們可以估算每個DATAFILE的最大的尺寸:
Block Size    Maximum Datafile File Size
-----------     ---------------------------
2k                4194303 * 2k     = 8 GB
4k                4194303 * 4k     = 16 GB
8k                4194303 * 8k     = 32 GB
16k              4194303 * 16k   = 64 GB
32k              4194303 * 32k   = 128 GB

而大檔案的表空間尺寸:
Block Size    Maximum Datafile File Size
-----------     ---------------------------
2k                 4294967295 * 2k     = 8 TB
4k                 4294967295 * 4k     = 16 TB
8k                 4294967295 * 8k     = 32 TB
16k               4294967295 * 16k   = 64 TB
32k               4294967295 * 32k   = 128 TB

大檔案的表空間只支援自動段空間管理的本地管理表空間,但對於本地管理的回滾和臨時表空間也是支援的。
建立一個大檔案組成的臨時表空間:
SQL>  create bigfile temporary tablespace temp1 tempfile  'D:\ORACLE\ORADATA\TES
T\temp02.dbf' size 10m;

表空間已建立。

SQL> select tablespace_name, EXTENT_MANAGEMENT,  SEGMENT_SPACE_MANAGEMENT,bigfil
e from dba_tablespaces where tablespace_name='TEMP1';

TABLESPACE_NAME                EXTENT_MAN SEGMEN BIG
------------------------------ ---------- ------ ---
TEMP1                          LOCAL      MANUAL YES

一個資料庫可以是兩者的混合體,就是可以容納基於小檔案的表空間,也可以容納基於大檔案的空間;
SQL> select bigfile, count(*) from dba_tablespaces group by bigfile;

BIG   COUNT(*)
--- ----------
NO           6
YES          1

大檔案表空間的優缺點:
1) 減少了資料檔案的數量,提高了管理效率;
2) 開啟資料庫,檢查點,DBMR的效率會比資料儲存在小檔案表空間要高;但是在建立大檔案或者在做損壞BLOCK恢復時要花更多的時間;
適合BIGFILE的場景和一些限制:
1)要用ASM做儲存管理的;因為大檔案的表空間只能有一個資料檔案,如果表空間不夠,那隻能擴充套件資料檔案;資料檔案能擴充套件到多大,受到作業系統和儲存空間的限制;如作業系統是不支援大尺寸檔案的,那不建議使用BIGFILE。如32位的WINDOWS,不支援超過4G的檔案,那BIGFILE就英雄無用武之地。
2) 避免在不支援條帶化的系統上建立BIGFIEL。因為會在並行處理和並行RMAN備份時會影響效能;

-THE END-

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

相關文章