DBCAのコマンドライン・パラメータ／-useBigFileForTablespace（その２）

「[DBCAのコマンドライン・パラメータを試す / useBigFileForTablespace](https://qiita.com/shin3it/items/8221973bfd20005546b2 "DBCAのコマンドライン・パラメータを試す / useBigFileForTablespace") 」のその後です。
エラーが返され保留とした`-useBigFileForTablespace true`に再チャレンジします。
BIGFILEにする表領域を列挙（`<tablespace name>:<true/false>[,<tablespace name>:<true/false>]`）するのでなく、値に`true`だけを指定します。これにより作成するデータベースのすべての表領域がBIGFILEになることを確認します。


結論をいえば次の二つのステップで期待する結果になりました。

1. テンプレートの表領域サイズ編集
2. DBCAの実行
　実行時パラメータとして以下を使用します。
    * `-templateName 上記テンプレート`
    * `-useBigFileForTablepaces true`


以前の記事ではテンプレートとして`New_Database.dbt`をデフォルト構成のまま使用しました。このためUSERS表領域のサイズ（5MB）がBIGFILE設定の要件を満たさずエラーになりました。

```bash:以前の実行
$ 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.
$
```

:::note info
BIGFILE表領域データファイルの最小サイズについてはSQL言語リファレンスのCREATE TABLESPACEの項で触れられています。

>bigfile表領域に格納されるのは、1つのデータファイルまたは一時ファイルのみであり、（中略）。データファイルまたは一時ファイル1つ当たりの最小サイズは、32Kブロックの表領域の場合は12MB、8Kブロックの表領域の場合は7MBです。（後略）
:::
:::note info
最小サイズは、厳密にはDBブロック・サイズに応じた最小ブロック数によってきまってます。作成時のサイズ指定をKB単位にした場合は6300KBくで作成できます。
:::


     



# 試してみる
### 1. テンプレートの表領域サイズ編集
前回も使用した`New_Database.dbt`から`New_Database_withBigFile.dbt`をコピー作成し、USERS表領域のサイズを5MBから7MBに変更しました。

```diff_xml:New_Database_withBigFile.dbt
       <DatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/users01.dbf" con_id="1">
          <tablespace>USERS</tablespace>
          <temporary>false</temporary>
          <online>true</online>
          <status>0</status>
+         <size unit="MB">7</size>
-         <size unit="MB">5</size>
          <reuse>true</reuse>
          <autoExtend>true</autoExtend>
          <increment unit="KB">1280</increment>
          <maxSize unit="MB">-1</maxSize>
       </DatafileAttributes>
```

### 2. DBCAの実行
作成したテンプレート`New_Database_withBigFile.dbt`を使用してDBCAを実行します。BIGFILE表領域にするため`-useBigFileForTablespace true`も指定します。

```bash:dbca
$ dbca -silent -createDatabase \
>  -gdbName db21bigf \
>  -templateName New_Database_withBigFile.dbt \
>  -useBigFileForTablespace true
Enter SYS user password:

Enter SYSTEM user password:

Prepare for db operation
4% complete
（中略）
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
 /u01/app/oracle/cfgtoollogs/dbca/db21bigf.
Database Information:
Global Database Name:db21bigf
System Identifier(SID):db21bigf
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/db21bigf/db21bigf7.log" for further details.
$
```
無事データベース作成が完了しました。

### データベースの確認
作成されたデータベースの各表領域のBIGFILE設定を確認します。

```dbca:dba_tablespaces
SQL> SELECT TABLESPACE_NAME,BIGFILE FROM DBA_TABLESPACES ORDER BY 1;

TABLESPACE_NAME                BIG
------------------------------ ---
SYSAUX                         YES
SYSTEM                         YES
TEMP                           YES
UNDOTBS1                       YES
USERS                          YES ★
```
前回は`-useBigFileForTablespaces`パラメータ指定から外し、BIGFILEにしなかったUSERS表領域もBIGFILEになっていることが確認できました。

# 参考
[Oracle Database SQL言語リファレンス 21c ／ CREATE TABLESPACE](https://docs.oracle.com/cd/F39414_01/sqlrf/CREATE-TABLESPACE.html#GUID-51F07BF5-EFAF-4910-9040-C473B86A8BF9)
[Oracle Multitenant 管理者ガイド 21c ／ 19 DBCAサイレント・モードのコマンド](https://docs.oracle.com/cd/F39414_01/multi/dbca-command.html#GUID-EC3C396B-6FFB-4957-BC73-1BE8F4FD852E)