DBCAのコマンドライン・パラメータを試す / useBigFileForTablespace

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通りです。
1. すべての表領域別をBIGFILEにする
`-useBigFileForTablespace true`
1. すべての表領域別をSMALLFILEにする (デフォルト)
`-useBigFileForTablespace false`
1. 表領域別に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を指定