oracle資料檔案大小限制

eric0435發表於2011-10-25
oracle資料檔案大小限制的公式:

  oracle maximum file size = db_block_size * 4194303 (2^22 = 4194304)

  也就是說最大的資料檔案大小是由 db_block_size 來決定的,8KB的資料塊的資料檔案最大為 8K * 4194304 = 32G,其他的以此類推

  限制的原因在於:由於Oracle的Rowid中使用22位來代表Block號,這22位最多隻能代表2^22-1個資料塊。
以上規則適用於smallfile tablespace 下的資料檔案,bigfile tablespace 下的資料檔案不受此限制

  SQL> create tablespace lob_rms datafile '+DISKGRP1/rms/datafile/lob_rms_01' size 100G;

  create tablespace lob_rms datafile '+DISKGRP1/rms/datafile/lob_rms_01' size 100G

  *

  ERROR at line 1:

  ORA-01144: File size (13107200 blocks) exceeds maximum of 4194303 blocks

  SQL> !oerr ora 1144

Database 是由一個或多個被稱為表空間(tablespace)的邏輯儲存單位構成。表空間內的邏輯儲存單位為段(segment),段又可以繼續劃分為資料擴充套件(extent)。而資料擴充套件是由一組連續的資料塊(datablock)構成。
大檔案表空間

在Oracle中使用者可以建立大檔案表空間(bigfile tablespace)。這樣Oracle資料庫使用的表空間(tablespace)可以由一個單一的大檔案構成,而不是若干個小資料檔案。這使Oracle可以發揮64位系統的能力,建立、管理超大的檔案。在64位系統中,Oracle資料庫的儲存能力被擴充套件到了8 EB(1EB =1024PB,1PB = 1024TB,1TB=1024GB)。

當 資料庫檔案由Oracle管理(Oracle-managed files),且使用大檔案表空間(bigfile tablespace)時,資料檔案對使用者完全透明。換句話說,使用者只須針對表空間(tablespace)執行管理操作,而無須關心處於底層的資料檔案 (datafile)。使用大檔案表空間,使表空間成為磁碟空間管理,備份,和恢復等操作的主要物件。使用大檔案表空間,並與由Oracle管理資料庫檔案(Oracle-managed files)技術以及自動儲存管理(Automatic Storage  Management)技術相結合,就不再需要管理員手工建立新的資料檔案(datafile)並維護眾多資料庫檔案,因此簡化了資料庫檔案管理工作。

資料庫預設建立的是小檔案表空間(smallfile tablespace),即Oracle中傳統的表空間(tablespace)型別。資料庫中 SYSTEM 和 SYSAUX 表空間在建立時總是使用傳統型別只有本地管理的(locally managed),且段空間自動管理(automatic segmentspace  management)的表空間(tablespace)才能使用大檔案表空間(bigfile

tablespace)。 但是有兩個例外:本地管理的撤銷表空間(undo tablespace)和臨時表空間(temporary tablespace),即使其段(segment)為手工管理(manually managed),也可以使用大檔案表空間。一個Oracle資料庫可以同時包含大檔案/小檔案表空間(bigfile/smallfile   tablespace)。SQL語句執行時無需考慮表空間(tablespace)的型別,除非語句中顯式地引用了資料檔案(datafile)名。

管理員可以建立一組臨時表空間(temporary tablespace),使用者在需要時可以利用組內各個表空間(tablespace)提供的臨時空間。管理員還可以指定表空間組(tablespace group)為資料庫預設的臨時表空間。當使用者需要大量臨時空間進行排序操作時,就可以利用大檔案表空間及表空間組。

使用大檔案表空間的優勢

● 使用大檔案表空間(bigfile tablespace)可以顯著地增強Oracle資料庫的儲存能力。一個小檔案表空間(smallfile tablespace)最多可以包含1024個資料檔案(datafile),而 一個大檔案表空間中只包含一個檔案,這個資料檔案的最大容量是小資料檔案的1024倍。這樣看來,大檔案表空間和小檔案表空間的最大容量是相同的。但是由於每個資料庫最多使用64K個資料檔案,因此使用大檔案表空間時資料庫中表空間的極限個數是使用小檔案表空間時的1024倍,使用大檔案表空間時的總資料庫容量比使用小檔案表空間時高出三個數量級。換言之,當一個Oracle資料庫使用大檔案表空間,且使用最大的資料塊容量時(32K),其總容量可以達到 8EB。

● 在超大型資料庫中使用大檔案表空間減少了資料檔案的數量,因此也簡化了對資料檔案的管理工作。由於資料檔案的減少,SGA中關於資料檔案的資訊,以及控制檔案(control file)的容量也得以減小。

● 由於資料檔案對使用者透明,由此簡化了資料庫管理工作。

使用大檔案表空間時需要考慮的因素

● 大檔案表空間(bigfile tablespace)應該和自動儲存管理(Automatic  Storage Management)或其他邏輯卷管理工具(logical volume manager)配合使用,這些工具應該能夠支援動態擴充套件邏輯卷,也能支援striping(資料跨磁碟分佈)或RAID。

● 應該避免在不支援striping的系統上使用大檔案表空間,因為這將不利於並行執行(parallel execution)及 RMAN 的並行備份(backup parallelization)。

● 當表空間正在使用的磁碟組(disk group)可能沒有足夠的空間,且擴充套件表空間的唯一辦法是向另一個磁碟組加入資料檔案時,應避免使用大檔案表空間。

● 不建議在不支援大檔案的平臺上使用大檔案表空間,這會限制表空間(tablespace)的容量。參考相關的作業系統文件瞭解其支援的最大檔案容量。

● 如果使用大檔案表空間替代傳統的表空間,資料庫開啟(open),checkpoints,以及 DBWR 程式的效能會得到提高。但是增大資料檔案(datafile)容量可能會增加備份與恢復的時間。



提示:

當使用者在建立表空間(tablespace)時沒有指定資料擴充套件

(extent)的管理方式,預設使用本地管理(locally managed)。

10g 新增的表空間型別:大檔案 (Bigfile) 表空間。

大檔案表空間從某種角度來說提高了 Oracle 在 VLDB 上的管理能力。只有自動段空間管理的 LMT (Locally Managed Tablespaces ) 支援 BIGFILE 表空間。 大檔案表空間只能包含一個檔案,但是檔案可以達到 4G 個資料塊大小。(以下用 BFT 指代 BIGFILE Tablespace。
BFT 可以和以下儲存技術結合使用:
自動儲存管理(ASM)
LVM
OMF
理論上的 BFT 可以達到下面所列的值:
資料塊大小(單位:K) BFT 最大值(單位:T)
2k                                      8T
4k                                     16T
8k                                      32T
16k                                    64T
32k                                   128T
在實際環境中,這還受到作業系統的檔案系統的限制。

BFT基本操作

10g 資料庫在建立的時候,會指定預設的表空間型別。如果不特殊指定的話,預設為 SMALLFILE 型別的表空間。

SQL> SELECT *
2  FROM database_properties
3                  WHERE property_name = 'DEFAULT_TBS_TYPE';

PROPERTY_NAME    PROPERTY_VALUE DESCRIPTION
-------------------- --------------- ----------------------------------------
DEFAULT_TBS_TYPE   SMALLFILE    Default tablespace type

這種情況下,如果我們建立表空間的時候不指定型別,那麼預設建立的都是 SMALLFILE 型別的表空間。可以透過 ALTER DATABASE 命令來修改資料庫預設的表空間型別:

SQL> ALTER DATABASE SET DEFAULT bigfile TABLESPACE;

Database altered.

SQL> SELECT *
2   FROM database_properties
3   WHERE property_name = 'DEFAULT_TBS_TYPE';

PROPERTY_NAME    PROPERTY_VALUE DESCRIPTION
-------------------- --------------- ----------------------------------------
DEFAULT_TBS_TYPE   BIGFILE Default tablespace type

SQL>
SQL> ALTER DATABASE SET DEFAULT smallfile TABLESPACE;

建立 BIGFILE 型別的表空間,只需指定額外的一個引數 BIGFILE 即可,其他和原有建立表空間語法類似:

CREATE     BIGFILE     TABLESPACE     bftbs
DATAFILE '/u01/app/oracle/oradata/DEMO/bftbs01.dbf' SIZE 5M;
DBA_TABLESPACES (USER_TABLESPACES)與 V$TABLESPACE 這兩個檢視可以檢視 BIGFILE 表空間的相關資訊。先看看 DBA_TABLESPACES 在 10g 中有了什麼變化:
SQL> SELECT tablespace_name, bigfile
2  FROM dba_tablespaces;

TABLESPACE_NAME        BIG
------------------------------ ---
SYSTEM             NO
UNDOTBS            NO
SYSAUX             NO
TEMP              NO
USERS             NO
EXAMPLE            NO
TEST              NO
BFTBS             YES

8 rows selected.

BFT 屬性

BFT有一些特有的屬性。

1.每個表空間只能包含一個資料檔案。如果試圖新增新的檔案,則會報告 ORA-32771 錯誤:

SQL> ALTER TABLESPACE bftbs
2 ADD DATAFILE '/u01/app/oracle/oradata/DEMO/bftbs02.dbf' SIZE 5M;
ALTER TABLESPACE bftbs
*
ERROR at line 1:
ORA-32771: cannot add file to bigfile tablespace

2.只有自動段空間管理的 LMT (locally managed tablespaces ) 支援 BFT

SQL> CREATE BIGFILE TABLESPACE bftbs02
2   DATAFILE '/u01/app/oracle/oradata/DEMO/bftbs02.dbf' SIZE 5M
3 EXTENT MANAGEMENT DICTIONARY;
CREATE BIGFILE TABLESPACE bftbs02
*
ERROR at line 1:
ORA-12913: Cannot create dictionary managed tablespace

SQL> CREATE BIGFILE TABLESPACE bftbs02
2     DATAFILE '/u01/app/oracle/oradata/DEMO/bftbs02.dbf' SIZE 5M
3   SEGMENT SPACE MANAGEMENT MANUAL;
CREATE BIGFILE TABLESPACE bftbs02
*
ERROR at line 1:
ORA-32772: BIGFILE is invalid option for this type of tablespace

3.相對檔案號(RELATIVE_FNO)為1024 ( 4096 on OS/390)

因為BFT只有一個資料檔案,所以其相對檔案號也是固定的:1024

SQL> SELECT tablespace_name, file_id, relative_fno
2  FROM dba_data_files;

TABLESPACE_NAME          FILE_ID RELATIVE_FNO
------------------------------ ---------- ------------
USERS                  4      4
SYSAUX                 3      3
UNDOTBS                 2      2
SYSTEM                 1      1
EXAMPLE                 5      5
TEST                  6      6
BFTBS                  7     1024

7 rows selected.

SQL>

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

相關文章