SQL>CREATE BIGFILE TABLESPACE 表名
datafile 'd:\ndo\ddo\表名.DBF‘
SIZE 500M AUTOEXTEND ON;
SQL>Create Bigfile tablespace bf_images_xp
datafile 'e:\datacenter\bf\bf_images_xp.dbf' size 500M Autoextend on;
//說明如下:
//創建一個大表空間,名稱為:bf_images_xp,數據文件為e:\datacenter\bf\bf_images_xp.dbf
//初始化大小為500M,且文件自動增長
SQL>create bigfile tablespace bf_v_xp
datafile 'e:\datacenter\bf\bf_v_xp.dbf' size 500M autoextend on;
其中BIGFILE表示創建 的表空間是大文件表空間,
DATAFILE指定組成大文件表空間的大文件(上海硬盤數據恢復文件),
SIZE表示大文件的初始大小:
AUTOEXTED ON表示允許大文件自動擴張!
網友資料:供參考!
發現表空間文件容量與DB_BLOCK_SIZE有關,
在初始建庫時,DB_BLOCK_SIZE要根據實際需要,
設置為4K,8K、16K、32K、64K等幾種大小,
ORACLE的物理文件最大只允許4194304個塊(由操作系統決定),
smallfile tablespace表空間文件的最大值為 4194304×DB_BLOCK_SIZE/1024M。
即:
4k最大表空間為:16384M=16G
8K最大表空間為:32768M=32G
16k最大表空間為:65536M=64G
32K最大表空間為:131072M=128G
64k最大表空間為:262144M=256G
//---------------------------------------------------------------------
oracle bigfile tablespace 大文件表空間 ----------------------------
Oracle 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 * FROM database_properties WHERE property_name = 'DEFAULT_TBS_TYPE';
這種情況下,如果我們創建表空間的時候不指定類型,那么默認創建的都是 SMALLFILE 類型的表空間。
修改數據庫默認的表空間類型
可以通過 ALTER DATABASE 命令來修改數據庫默認的表空間類型:
SQL> ALTER DATABASE SET DEFAULT bigfile TABLESPACE;
Database altered.
SQL> SELECT * FROM database_properties WHERE property_name = 'DEFAULT_TBS_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> desc DBA_TABLESPACES
SQL>
和 9i 相比,
DBA_TABLESPACES 視圖多了兩列:RETENTION 和 BIGFILE。
其中 BIGFILE 列說明該表空間是否為 BFT:
SQL> SELECT tablespace_name, bigfile FROM dba_tablespaces;
8 rows selected. V$TABLESPACE 視圖相對 9i 也增加了新的列:
SQL> desc V$TABLESPACE Name
其中 FlASHBACK_ON 和 BIGFILE 列都是新增的。
BFT 屬性
BFT有一些特有的屬性。
1.每個表空間只能包含一個數據文件。如果試圖添加新的文件,則會報告 ORA-32771 錯誤:
SQL> ALTER TABLESPACE bftbs
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
DATAFILE '/u01/app/oracle/oradata/DEMO/bftbs02.dbf' SIZE 5M
EXTENT MANAGEMENT DICTIONARY;
CREATE BIGFILE TABLESPACE bftbs02 * ERROR at line 1:
ORA-12913: Cannot create dictionary managed tablespace
SQL> CREATE BIGFILE TABLESPACE bftbs02
DATAFILE '/u01/app/oracle/oradata/DEMO/bftbs02.dbf' SIZE 5M
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
FROM dba_data_files;
SQL>
4.rowid的變化
在 BFT 上存儲的表的 ROWID 與 smallfile 表空間上的 rowid 結構有些不同的。
要正確得到 rowid 信息,dbms_rowid 包增加了一個新的參數 ts_type_in 來解決這個問題。
參考這個范例:
SQL> SELECT DBMS_ROWID.rowid_block_number (ROWID, 'BIGFILE')
FROM foo;
24
SQL>
你可以創建多大的表空間?
我們在前面提及,BFT 還受到操作系統的文件系統的限制。
下面我們以 Linux 操作系統為例:
SQL> SHOW parameters db_block_size
db_block_size integer 8192
SQL>
也就是說,理論上我們可以創建最大 32T