dbca with the silent option is the best way to create a database.  If you issue the find command from $ORACLE_HOME, you will see that oracle ships with two generic templates:

rhel59dra:/u01/app/oracle/product/11.2.0/db

> find . -name ‘*.dbc’
./assistants/dbca/templates/General_Purpose.dbc
./assistants/dbca/templates/Data_Warehouse.dbc

Leveraging the General Purpose template, I can create my custom database.  Notice all the init.ora options that is specified with my dbca command.

dbca -silent                             \

       -createDatabase                   \
       -templateName General_Purpose.dbc \
       -gdbName dbatools                   \
       -sid dbatools                       \
       -SysPassword oracle123 \
       -SystemPassword oracle123 \
       -emConfiguration NONE             \
       -redoLogFileSize 1000 \
       -recoveryAreaDestination FRA \
       -storageType ASM                  \
         -asmSysPassword oracle123 \
         -diskGroupName DATA     \
           -listeners  LISTENER_RAC \
       -characterSet AL32UTF8 \
       -nationalCharacterSet AL16UTF16 \
       -databaseType MULTIPURPOSE \
       -nodelist rhel59dra, rhel59drb \
       -initparams audit_file_dest=’/bkup/dbatools/adump’ \
           -initparams compatible=’11.2.0.3′ \
           -initparams db_create_file_dest=’+DATA’ \
           -initparams db_create_online_log_dest_1=’+DATA’ \
           -initparams db_create_online_log_dest_2=’+FRA’ \
           -initparams diagnostic_dest=’/bkup’ \
           -initparams parallel_max_servers=64 \
           -initparams pga_aggregate_target=1824522240 \
           -initparams processes=600 \
           -initparams sga_target=4294967296 \
           -initparams db_recovery_file_dest=’+FRA’ \
       -initparams db_recovery_file_dest_size=4322230272