odacli Create Database on ODA

On Oracle Database Appliance (ODA), DBAs can provision a database in two ways: a complete database creation or an instance-only setup. Understanding this choice is critical for deciding whether you need a fully configured database or simply an Oracle instance for migrations and restores.

The main reason for using odacli is to ensure that the Oracle Database Appliance (ODA) is fully aware of the new database being hosted. Once registered, the database is automatically included in patching, monitoring, and lifecycle management activities. If you skip this step, the database will remain unmanaged—meaning it won’t receive patches and could be left out of critical maintenance operations.

Instead of using the traditional Database Configuration Assistant (DBCA), on an Oracle Database Appliance (ODA) you should use the odacli create-database option. You must define certain database properties—such as the DB home, shape, character set, and workload class—before creating the database. This process works similarly to DBCA.

  • It creates a complete Oracle Database — i.e., both the instance (memory + background processes) and the database (physical structures on disk like controlfiles, datafiles, redo logs).
  • You get:
    • Database instance started
    • Database files created in ASM (or ACFS, depending on config)
    • Listener configuration updated
    • Password files, spfiles, and tnsnames entries created
    • Registered with ODA’s DCS agent and metadata repository

Basically, this gives you a fully operational Oracle Database ready to use.

Identify the requriements

So you run create-database, make sure you have identified your requirements. The documentation explains all the properties and various customization options, but the most critical ones are

  • DB Home ID: Defines the Oracle Database edition (EE/SE) and most importanatly the version.
  • Shape (odb1, odb2, …): Controls key initialization parameters (e.g., block size).
  • Class/Type: e.g., OLTP.
  • Characterset/NCHAR: e.g., AL32UTF8 (Default) and AL16UTF16.

In order to get the DB Home ID – you will need to use the list-dbhomes. Incase you want to refer to the properties of an existing database for reference, use describe-database to view the detailed configuraiton.

[root@oda1 ~]# odacli list-dbhomes
ID                                       Name                 DB Version           DB Edition Home Location                                            Status
-------------- -------------------- -------------------- ---------- -------------------------------------------------------- ----------
XXXXXXXXX-XXXXXX     OraDB19000_home5     19.23.0.0.240416     EE         /u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_5     CONFIGURED
YYYYYYYYY-YYYYYY     OraDB19000_home6     19.26.0.0.250121     EE         /u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_6     CONFIGURED

# You can also check the help option to view the syntax/options
odcali create-database -h

Create the database

Once I have the information I should be okay to go ahead and create the database itself. Montior the job and once it completes review the properties.

[root@ooda1da ~]#  odacli create-database -n testdb -dh YYYYYYYYY-YYYYYY -cs WE8MSWIN1252 -cl OLTP -ns AL16UTF16 -s odb1
Enter SYS and SYSTEM user password:
Retype SYS and SYSTEM user password:
Job details
----------------------------------------------------------------
                     ID:  99999-fa1d-4516-b900-ab9393sx 
            Description:  Database service creation with DB name: testdb
                 Status:  Created
                Created:  June 17, 2025 17:14:11 EDT
                Message:
Task Name                                Start Time                               End Time                                 Status
---------------------------------------- ---------------------------------------- ---------------------------------------- ----------------
[root@oda1 log]# odacli describe-job -i 99999-fa1d-4516-b900-ab9393sx
Job details
----------------------------------------------------------------
                     ID:  99999-fa1d-4516-b900-ab9393sx
            Description:  Database service creation with DB name: testdb
                 Status:  Success
                Created:  June 17, 2025 17:14:11 EDT
                Message:
Task Name                                Start Time                               End Time                                 Status
---------------------------------------- ---------------------------------------- ---------------------------------------- ----------------
Setting up SSH equivalence               June 17, 2025 17:14:14 EDT               June 17, 2025 17:14:14 EDT               Success
Setting up SSH equivalence               June 17, 2025 17:14:14 EDT               June 17, 2025 17:14:14 EDT               Success
Database Service creation                June 17, 2025 17:14:15 EDT               June 17, 2025 17:25:21 EDT               Success
Database Creation by RHP                 June 17, 2025 17:14:15 EDT               June 17, 2025 17:22:27 EDT               Success
Change permission for xdb wallet files   June 17, 2025 17:22:27 EDT               June 17, 2025 17:22:28 EDT               Success
Place SnapshotCtrlFile in sharedLoc      June 17, 2025 17:22:28 EDT               June 17, 2025 17:22:31 EDT               Success
SqlPatch upgrade                         June 17, 2025 17:23:48 EDT               June 17, 2025 17:23:55 EDT               Success
Running dbms_stats init_package          June 17, 2025 17:23:55 EDT               June 17, 2025 17:23:56 EDT               Success
Set log_archive_dest for Database        June 17, 2025 17:23:56 EDT               June 17, 2025 17:23:59 EDT               Success
Updating the Database version            June 17, 2025 17:23:59 EDT               June 17, 2025 17:24:04 EDT               Success
Create Users tablespace                  June 17, 2025 17:25:21 EDT               June 17, 2025 17:25:22 EDT               Success
Clear all listeners from Database        June 17, 2025 17:25:23 EDT               June 17, 2025 17:25:23 EDT               Success
Copy Pwfile to Shared Storage            June 17, 2025 17:25:25 EDT               June 17, 2025 17:25:30 EDT               Success

[root@oda1 log]# odacli list-databases | grep testdb
ID                                       DB Name    DB Type  DB Version           CDB     Class    Edition  Shape    Storage  Status       DB Home ID

5ba7427e-8cdb-49e9-a725-f900cccbb196     testdb   SI       19.26.0.0.250121     false   OLTP     EE       odb1     ASM      CONFIGURED   YYYYYYYYY-YYYYYY

[root@oda1 log]# odacli describe-database -i 5ba7427e-8cdb-49e9-a725-f900cccbb196
Database details
----------------------------------------------------------------
                     ID: 5ba7427e-8cdb-49e9-a725-f900cccbb196
            Description: testdb
                DB Name: testdb
             DB Version: 19.26.0.0.250121
                DB Type: SI
                DB Role: PRIMARY
    DB Target Node Name: oda1
             DB Edition: EE
                   DBID: 2079193263
 Instance Only Database: false
                    CDB: false
               PDB Name:
    PDB Admin User Name:
      High Availability: false
                  Class: OLTP
                  Shape: odb1
                Storage: ASM
          DB Redundancy:
           CharacterSet: WE8MSWIN1252
  National CharacterSet: AL16UTF16
               Language: AMERICAN
              Territory: AMERICA
                Home ID: YYYYYYYYY-YYYYYY
        Console Enabled: false
  TDE Wallet Management:
            TDE Enabled: false
     Level 0 Backup Day: sunday
     AutoBackup Enabled: false
                Created: June 17, 2025 5:14:11 PM EDT
         DB Domain Name: 
    Associated Networks: Public-network
          CPU Pool Name:

Now that the database is created and registered with ODA, you can immediately put it to use—whether by importing data through Data Pump or, if required, dropping the database and restoring another from RMAN backups. I’ve personally used the later option several times for migration while debugging issues with the instance-only option, and it has proven to be a reliable way to keep things moving.

In the next part of this ODA blog series, we’ll focus on the instance-only configuration


Discover more from oratrails-aish

Subscribe to get the latest posts sent to your email.