Oracle Database 21cで追加されたDBCAのオプション・パラメータの動作を確認します。
対象のパラメータはuseBigFileForTablespace
です。
[-useBigFileForTablespace <true | false> Specify true to enable bigfile property to all database tablespace or a comma separated list of <tablespace name>:<true/false> pairs to enable/disable database tablespace bigfile property. For example <SYSTEM:false,SYSAUX:false,USERS:true>]
用法は次の3通りです。
- すべての表領域別をBIGFILEにする
-useBigFileForTablespace true
- すべての表領域別をSMALLFILEにする (デフォルト)
-useBigFileForTablespace false
- 表領域別にBIGFILEにする
-useBigFileForTablespace <tablespace name>:<true/false>[,<tablespace name>:<true/false>]
構成
- Oracle Database 21c Enterprise Edition (21.3)
- Oracle Eneterprise Linux 8.2
実践
DBCAでデータベース作成を実行します。サイレントモードです。
オプション・パラメータで-useBigFileForTablespace true
を付けます。
すべての表領域をBIFILE作成です。
すべての表領域をBIGFILEにする
$ dbca -silent -createDatabase -gdbName db21bigf -templateName New_Database.dbt -useBigFileForTablespace true
Enter SYS user password:
Enter SYSTEM user password:
[FATAL] [DBT-06013] The size of the datafile (5)MB is less than the required minimum size (7)MB.
CAUSE: Bigfile option is selected for the tablespace of the datafile. To create tablespace with bigfile option, the datafile needs to be greater than 7MB size.
$
FATALが返されました。
データファイルの最小サイズは7MBという要件に対して、メッセージでは5MBの表領域があることが示されています。
5MBの表領域というとUSERS表領域のことですね。
製品に含まれているテンプレートはいずれもUSERS表領域を初期サイズ5MBで作成する設定です。
-useBigFileForTablespace true
でBIGFILEにするにはテンプレートをいじる必要があります。
7MB未満の表領域を含まないテンプレートでの動作確認は別の機会として表領域別にBIGFILE指定してみます。
表領域別にBIGFILEにする
-useBigFileForTablespace true
でエラーが返されたUSERS表領域を除き、表領域ごとにBIGFILEを指定します。
$ dbca -silent -createDatabase -gdbName db21bigf -templateName New_Database.dbt -useBigFileForTablespace SYSTEM:true,SYSAUX:true,TEMP:true,UNDOTBS1:true
Enter SYS user password:
Enter SYSTEM user password:
Prepare for db operation
4% complete
Creating and starting Oracle instance
5% complete
6% complete
8% complete
Creating database files
9% complete
13% complete
Creating data dictionary views
14% complete
・・・以下、略・・・
先に進みました。
データベース作成の完了後、データベースに接続して各表領域がBIGFILEになっていることを確認します。
SQL> SELECT NAME,CDB FROM V$DATABASE;
NAME CDB
--------- ---
DB21BIGF YES
SQL> SELECT TABLESPACE_NAME,BIGFILE FROM DBA_TABLESPACES ORDER BY 1;
TABLESPACE_NAME BIG
------------------------------ ---
SYSAUX YES
SYSTEM YES
TEMP YES
UNDOTBS1 YES
USERS NO
SQL>
指定したとおりにUSERS表領域を除いてBIGFILE表領域になりました。
ちなみにデータベースのデフォルト表領域タイプもBIGFILEになっています。
SQL> SELECT * FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME='DEFAULT_TBS_TYPE';
PROPERTY_NAME
--------------------------------------------------------------------------------
PROPERTY_VALUE
--------------------------------------------------------------------------------
DESCRIPTION
--------------------------------------------------------------------------------
DEFAULT_TBS_TYPE
BIGFILE
Default tablespace type
SQL>
まとめ
useBigFileForTablespaceを使用するには少し注意が必要です。
- trueを指定する場合はテンプレート内のすべての表領域のサイズを7MB以上にする必要がある。
- 次のいずれかの設定ではデータベースのデフォルト表領域タイプがBIGILEになる。
- trueを指定
- 表領域別設定で一つ以上の表領域にtrueを指定