如何建立ORACLE大檔案表空間
阿新 • • 發佈:2021-07-30
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