[Oracle 10 g]大ファイル空間
著者:Fenng
日付:27-Nov-2004
出典:
http://www.dbanotes.net
バージョン:0.1
簡単な紹介
Oracle 10 gの記憶能力は著しく向上した.この表現は多くの面で、10 gに追加されたテーブル空間のタイプを紹介します.ビッグファイル(Bigfile)のテーブル空間です.
大きなファイルスペースはある角度からVLDBにおけるOracleの管理能力を向上させました.自動セグメント空間管理のLMTのみBIGFILEテーブル空間をサポートします.大きなファイルテーブル空間は一つのファイルしか含まれませんが、ファイルは4 Gのデータブロックサイズに達することができます.(以下BFTでBIGFILE Tablespaceを指す.)
BFTは、以下の記憶技術と組み合わせて使用することができる.自動記憶管理(ASM) LVM OMF 理論的なBFTは次の列の値に達することができる.
ブロックサイズ(単位:K)
BFT最大値(単位:T)
2 k
8 T
4 k
16 T
8 k
32 T
16 k
64 T
32 k
128 T
実際の環境では、これはまだオペレーティングシステムのファイルシステムによって制限されている.
BFT基本操作
10 gデータベースは作成時にデフォルトのテーブル空間タイプを指定します.特に指定しない場合は、デフォルトはSMALFILEタイプのテーブルスペースです.
BFT属性
BFTはいくつかの特有の属性があります.
1.各テーブルの空間には一つのデータファイルしか含まれません.新しいファイルを追加しようとすると、ORA-32771エラーが報告されます.
BFTはデータファイルが一つしかないので、相対的なファイル番号も固定されています.1024
BFTに格納されているテーブルのROWIDとsmall fileテーブル空間のrowid構造は少し違っています.正しくrowid情報を得るためには、dbms_rowidバッグは新しいパラメータtsuを追加しました.タイプこの問題を解決します.この例を参考にしてください.
前述したように、BFTはまたオペレーティングシステムのファイルシステムによって制限されている.次の例はLinuxオペレーティングシステムです.
ファイルシステム(ブロック)
ファイルサイズ制限
ファイルシステムのサイズ制限
ext 2/3(2 K)
256 G
8 T
ext 2/3(4 K)
2 T
16 T
ext 2/3(8 K)
64 T
32 T
ReiserFS 3.6
1 E
16 T
OSファイルシステムのブロックサイズを確認します.
BFTが必要ですか
BFTを適用すると長所と短所があります.Oracleオフィシャル文書によると、DB_FILESとMAXDATAFILESの二つのパラメータの値はSGAにもたらす圧力を軽減します.データベースにおける最大データファイル数は有限であり(64 K files)、BFTの出現は確かに海量データベースに肯定的な意味を持つ.ある程度は、BFTは管理を簡略化していますが、回復する時は災難かもしれません.
私たちは少なくとも今はBFTを使う必要がない場合が多いと思います.卵を全部一つのかごに入れますか?
参考情報
Oracle Database Administrator'sガイド10 g Release 1(10.1)Part Number B 10739-01(Note 62294.1)Large File Support in Linux-http://www.suse.de/~aj/linux_lfs.html Metalink[NOTE:262472.1]10 g:BIGFILE Type Tablespaces Verses SMALFILE Type
本論文の作者
Fenngある日系企業のDBAは、余暇時間に各データベースに関する技術フォーラムに紛れ込んでいます.ORACLEデータベースを利用して、企業アプリケーションを効果的に構築する方法に注目しています.Oracle tuning、trouleshotingに対して少し研究があります.
個人技術サイト:
http://www.dbanotes.net/.メールで
dbaotes@gmail.comから彼に連絡する.
原文の出所
http://www.dbanotes.net/Oracle/10g_Bigfile_Tablespaces.httm
All Artcles(by
Fenng)are licensed under a
Creative Commons License
I would welcome any feedback.Please send questions,comments or corections to
dbaotes@gmail.com
日付:27-Nov-2004
出典:
http://www.dbanotes.net
バージョン:0.1
簡単な紹介
Oracle 10 gの記憶能力は著しく向上した.この表現は多くの面で、10 gに追加されたテーブル空間のタイプを紹介します.ビッグファイル(Bigfile)のテーブル空間です.
大きなファイルスペースはある角度からVLDBにおけるOracleの管理能力を向上させました.自動セグメント空間管理のLMTのみBIGFILEテーブル空間をサポートします.大きなファイルテーブル空間は一つのファイルしか含まれませんが、ファイルは4 Gのデータブロックサイズに達することができます.(以下BFTでBIGFILE Tablespaceを指す.)
BFTは、以下の記憶技術と組み合わせて使用することができる.
ブロックサイズ(単位:K)
BFT最大値(単位:T)
2 k
8 T
4 k
16 T
8 k
32 T
16 k
64 T
32 k
128 T
実際の環境では、これはまだオペレーティングシステムのファイルシステムによって制限されている.
BFT基本操作
10 gデータベースは作成時にデフォルトのテーブル空間タイプを指定します.特に指定しない場合は、デフォルトはSMALFILEタイプのテーブルスペースです.
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
この場合、私たちがテーブル空間を作る時にタイプを指定しないと、デフォルトで作成されるのはSMALFILEタイプのテーブルスペースです.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とV$TABLESPACEの二つのビューはBIGFILEテーブル空間の関連情報を見ることができます.まずDBAを見てみますTABLESPACESは10 gで何か変化がありましたか?SQL> desc DBA_TABLESPACES
Name Null? Type
----------------------------------------- -------- ------------------------
TABLESPACE_NAME NOT NULL VARCHAR2(30)
BLOCK_SIZE NOT NULL NUMBER
INITIAL_EXTENT NUMBER
NEXT_EXTENT NUMBER
MIN_EXTENTS NOT NULL NUMBER
MAX_EXTENTS NUMBER
PCT_INCREASE NUMBER
MIN_EXTLEN NUMBER
STATUS VARCHAR2(9)
CONTENTS VARCHAR2(9)
LOGGING VARCHAR2(9)
FORCE_LOGGING VARCHAR2(3)
EXTENT_MANAGEMENT VARCHAR2(10)
ALLOCATION_TYPE VARCHAR2(9)
PLUGGED_IN VARCHAR2(3)
SEGMENT_SPACE_MANAGEMENT VARCHAR2(6)
DEF_TAB_COMPRESSION VARCHAR2(8)
RETENTION VARCHAR2(11)
BIGFILE VARCHAR2(3)
SQL>
9 iと比べて、DBA_TABLESPACESビューは二列多くなりました.RETENTIONとBIGFILEです.BIGFILE列は、このテーブル空間がBFTであるかを説明する.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.
V$TABLESPACEビューは相対的に9 iの列も追加されました.SQL> desc V$TABLESPACE
Name Null? Type
----------------------------------------- -------- ------------------------
TS# NUMBER
NAME VARCHAR2(30)
INCLUDED_IN_DATABASE_BACKUP VARCHAR2(3)
BIGFILE VARCHAR2(3)
FLASHBACK_ON VARCHAR2(3)
その中でFlash BACK_ONとBIGFILE列は全部追加されました.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>
4.rowidの変化BFTに格納されているテーブルのROWIDとsmall fileテーブル空間のrowid構造は少し違っています.正しくrowid情報を得るためには、dbms_rowidバッグは新しいパラメータtsuを追加しました.タイプこの問題を解決します.この例を参考にしてください.
SQL> SELECT DBMS_ROWID.rowid_block_number (ROWID, 'BIGFILE')
2 FROM foo;
DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID,'BIGFILE')
----------------------------------------------
24
SQL>
どれぐらいの大きさのテーブルスペースを作成できますか?前述したように、BFTはまたオペレーティングシステムのファイルシステムによって制限されている.次の例はLinuxオペレーティングシステムです.
SQL> SHOW parameters db_block_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_block_size integer 8192
SQL>
つまり、理論的には最大32 T(4 G*8 K)の表空間を作成することができます.私達はできますか?SQL> CREATE BIGFILE TABLESPACE bftbs02
2 DATAFILE '/u01/app/oracle/oradata/DEMO/bftbs02.dbf' SIZE 20T reuse;
CREATE BIGFILE TABLESPACE bftbs02
*
ERROR at line 1:
ORA-01119: error in creating database file '/u01/app/oracle/oradata/DEMO/bftbs02.dbf'
ORA-27059: could not reduce file size
Linux Error: 27: File too large
Additional information: 2
SQL>
注意してください.私たちが得たオペレーティングシステム情報(黒い部分):File to o largeです.これはオペレーティングシステムの許容値を超えていることを示しています.私が使っている環境はFedora Core Linuxカーネルのバージョンは2.69で、ファイルシステムはEXT 3です.2.4以降のバージョンのカーネルはすべてLFSをサポートしています.ファイルシステム(ブロック)
ファイルサイズ制限
ファイルシステムのサイズ制限
ext 2/3(2 K)
256 G
8 T
ext 2/3(4 K)
2 T
16 T
ext 2/3(8 K)
64 T
32 T
ReiserFS 3.6
1 E
16 T
OSファイルシステムのブロックサイズを確認します.
[root@FC3 ~]# tune2fs -l /dev/hda7 | grep Block
Block count: 2621440
Block size: 4096
Blocks per group: 32768
[root@FC3 ~]#
つまり、2 T以下のファイルをオペレーティングシステムで作成することができます.私たちはそんなに大きな記憶空間がないですが、テストしてもいいです.SQL> CREATE BIGFILE TABLESPACE bftbs02
2 DATAFILE '/u01/app/oracle/oradata/DEMO/bftbs02.dbf' SIZE 1800g;
他の端末では、このディレクトリの変化状況を観察する.[root@FC3 DEMO]# ls -ltr
total 1159048
-rw------- 1 oracle oracle 5251072 Nov 28 20:05 bftbs01.dbf
-rw------- 1 oracle oracle 1932735291392 Nov 28 20:49 bftbs02.dbf
[root@FC3 DEMO]#
ワウ、Oracleが「超大」ファイルを作成しているのが本当に観察できます.1.8 Tに近いファイル:-)はあとでOracleがエラーを報告します.CREATE BIGFILE TABLESPACE bftbs02
*
ERROR at line 1:
ORA-19502: write error on file "/u01/app/oracle/oradata/DEMO/bftbs02.dbf",
blockno 898048 (blocksize=8192)
ORA-27072: File I/O error
Additional information: 898047
この例では、オペレーティングシステムファイルシステムの制限のため、2 T以下のBFTのみを作成することができます.BFTが必要ですか
BFTを適用すると長所と短所があります.Oracleオフィシャル文書によると、DB_FILESとMAXDATAFILESの二つのパラメータの値はSGAにもたらす圧力を軽減します.データベースにおける最大データファイル数は有限であり(64 K files)、BFTの出現は確かに海量データベースに肯定的な意味を持つ.ある程度は、BFTは管理を簡略化していますが、回復する時は災難かもしれません.
私たちは少なくとも今はBFTを使う必要がない場合が多いと思います.卵を全部一つのかごに入れますか?
参考情報
Oracle Database Administrator'sガイド10 g Release 1(10.1)Part Number B 10739-01(Note 62294.1)Large File Support in Linux-http://www.suse.de/~aj/linux_lfs.html Metalink[NOTE:262472.1]10 g:BIGFILE Type Tablespaces Verses SMALFILE Type
本論文の作者
Fenngある日系企業のDBAは、余暇時間に各データベースに関する技術フォーラムに紛れ込んでいます.ORACLEデータベースを利用して、企業アプリケーションを効果的に構築する方法に注目しています.Oracle tuning、trouleshotingに対して少し研究があります.
個人技術サイト:
http://www.dbanotes.net/.メールで
dbaotes@gmail.comから彼に連絡する.
原文の出所
http://www.dbanotes.net/Oracle/10g_Bigfile_Tablespaces.httm
All Artcles(by
Fenng)are licensed under a
Creative Commons License
I would welcome any feedback.Please send questions,comments or corections to
dbaotes@gmail.com