[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タイプのテーブルスペースです.
    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