oracle

DBCAのサイレントモードでBIGFILE表領域を作る

DBCAのサイレントモードでBIGFILE表領域を作るには?

CREATE DATABASE文には「SET DEFAULT BIGFILE TABLESPACE」が用意されており、SYSTEM、SYSAUX表領域をBIGFILEで作成することができます。

Oracle® Database管理者ガイド 12cリリース2 (12.2) E72998-04
2 Oracle Databaseの作成および構成
2.5.9 データベース作成時のbigfile表領域のサポート
https://docs.oracle.com/cd/E82638_01/ADMIN/creating-and-configuring-an-oracle-database.htm#GUID-35A12594-29EB-4545-A6AD-63B9AC3A5671

DBCAをサイレントでデータベースを作成したい場合、dbcaのコマンドオプションやレスポンスファイルで作成するためのオプションが用意されていません。

DBCAのサイレントモードで作成するには、非シードのDBCAテンプレート(New_Database.dbt)を編集することで可能です。
具体的にはテンプレートファイルの中の<TablespaceAttributes id="SYSTEM">タグの中のBIGFILEを制御するタグを<bigfile>true</bigfile>に設定します。

なお、<TablespaceAttributes id="SYSTEM"><TablespaceAttributes id="SYSAUX">のどちらかで設定しても
両方がBIGFILE かつ デフォルトの表領域設定もBIGFILEとなります。

SYSTEMおよびSYSAUX表領域は、常にデフォルトの表領域タイプで作成されるという仕様のためと考えられます。

実行例

デフォルトで存在している「New_Database.dbt 」を「New_Database2.dbt」としてコピーして編集します。

cd /u01/app/oracle/product/12.2.0.1/dbhome_1/assistants/dbca/templates
cp New_Database.dbt New_Database2.dbt
vi New_Database2.dbt

SYSTEM表領域のbigfileをtrueに設定します。(★部分)

略
 <TablespaceAttributes id="SYSTEM">
         <online>true</online>
         <offlineMode>1</offlineMode>
         <readOnly>false</readOnly>
         <temporary>false</temporary>
         <defaultTemp>false</defaultTemp>
         <undo>false</undo>
         <local>true</local>
         <blockSize>-1</blockSize>
         <allocation>3</allocation>
         <uniAllocSize unit="KB">-1</uniAllocSize>
         <initSize unit="KB">64</initSize>
         <increment unit="KB">64</increment>
         <incrementPercent>50</incrementPercent>
         <minExtends>1</minExtends>
         <maxExtends>-1</maxExtends>
         <minExtendsSize unit="KB">64</minExtendsSize>
         <logging>true</logging>
         <recoverable>false</recoverable>
         <maxFreeSpace>0</maxFreeSpace>
         <bigfile>false</bigfile> ★
         <datafilesList>
            <TablespaceDatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/system01.dbf"/>
         </datafilesList>
      </TablespaceAttributes>
以下略

dbcaの「-templateName」に編集したテンプレート指定します。
レスポンスファイルは任意です。

dbca -silent -createDatabase -responseFile ./dbca.rsp -templateName /u01/app/oracle/product/12.2.0.1/dbhome_1/assistants/dbca/templates/New_Database2.dbt

DBが作成されたあと確認するとBIGFILEになっていることがわかります。

SQL> set sqlformat ansiconsole
SQL> select * from database_properties where PROPERTY_NAME='DEFAULT_TBS_TYPE'
  2  /
PROPERTY_NAME     PROPERTY_VALUE  DESCRIPTION
DEFAULT_TBS_TYPE  BIGFILE         Default tablespace type


SQL> select TABLESPACE_NAME,BIGFILE from dba_tablespaces
  2  where TABLESPACE_NAME in ('SYSTEM','SYSAUX')
  3  /
TABLESPACE_NAME  BIGFILE
SYSAUX           YES
SYSTEM           YES

参考

Sh! – silent installation (DBCA)
https://www.spotonoracle.com/?p=155

Manually setting tablespace
https://www.ibm.com/support/knowledgecenter/en/SSBNJ7_1.3.2/com.ibm.tnpm.doc/Wireless_Deployment/ttnpm_wls_deployment_manually_setting_tablespace.html

http://oracle-l.freelists.narkive.com/NmvfWND0/question-about-bigfile-tablespaces-at-database-create-time