This topic describes basic concepts behind the Oracle virtual database (VDB) provisioning process.

A dSource is a virtualized representation of a physical or logical source database. As a virtual representation, it cannot be accessed or manipulated using database tools. Instead, you must create a Virtual Database (VDB) from a dSource snapshot. A VDB is an independent, writeable copy of a dSource snapshot. You can create VDBs from other VDBs. Once a VDB has been provisioned to a target environment, you can implement a snapshot policy for that VDB, to capture changes within it as if it were any other logical or physical database. 

Working with Snapshots and LogSync

Snapshots accumulate over time. To view a snapshot:
  1. From the Datasets panel, click the group containing the dSource.
  2. Select the dSource.
  3. Click the TimeFlow tab.

Each snapshot is displayed and includes information about the source database, operating system, end stamp, and snapshot database change number (SCN for Oracle and LSN for SQL Server). You can scroll through these cards to select the one you want, or you can enter a date and time to search for a specific snapshot.

Once you have provisioned a VDB, you can also take snapshots of it. As with the dSource snapshots, you can find these when you select the VDB in the Datasets panel. You can then provision additional VDBs from these VDB snapshots.


If there are dependencies on the snapshot, you will not be able to delete the snapshot free space; the dependencies rely on the data associated with the snapshot.

Target Environments for VDBs

It is possible to provision a VDB to the same source environment that contains the dSource, but performance and efficiency improve if the dSource and VDB are located in different environments. For example, if you attempt to provision an encrypted database to its source environment, the provisioning will fail because of two instances attempting to access the same wallet file.

The source and target environments must have the same operating system and database types. For example, if the source environment is using Oracle Enterprise Linux 6.0 as the operating system and is running Oracle 10gR2 as its DBMS, then the target environment must have this same configuration. There are also specific requirements for the target environment user. The supported operating systems for source and target environments are described in Supported Operating Systems and DBMS Versions for Oracle Environments. User requirements are described in Requirements for Oracle Target Hosts and Databases.

Customizing VDB Online Redo Logs

When you provision a VDB, you can customize the online redo log size, as well as the number of redo log groups per Oracle thread. The Delphix Engine only allows one size value to be used for all online redo log size.

Using a large redo log size or groups will increase the VDB provision time. This is especially true in the case of an Oracle RAC VDB with a large number of RAC instances. Choose a smaller redo log size and groups for faster VDB provision time.

You will not be able to change the online redo log size and groups using the Delphix Management application after the VDB is provisioned. 

Although you can directly log on to the VDB to change your redo log size or number of redo log groups after the VDB is provisioned, your changes will disappear when the VDB is refreshed or rewound. They will be replaced by the Delphix settings you entered previously during provisioning.

Online Redo Log Size and Number of Groups can be set during VDB Provisioning as shown below.

VDB Redo Log Delphix Default and Minimum Values

  • The default online redo log size setting is the size recorded in the parent snapshot.
  • The minimum redo log file size for all Oracle versions is 4M.
  • The default online redo log groups setting is 3.
  • The minimum number of redo log groups is 2.

Customizing VDB Configuration Settings and File Paths

When you provision a VDB, you have the option of customizing its configuration settings and the file paths that it will use on the target environment. To view the default configuration settings and file paths during the provisioning process, click Advanced in the Target Environment screen of the Provision VDB wizard. For more information, see Customizing Oracle VDB Configuration Settings and Customizing VDB File Mappings.

Customizing RAC VDB Instance Configuration

RAC instance properties can be customized during the provisioning of a RAC VDB or after provisioning the RAC VDB. For each RAC instance the following instance properties can be customized:
  • Oracle instance number
  • Oracle instance name
  • Cluster node

The Oracle Cluster environment chosen as the provision target environment determines the set of available cluster nodes to be used during provisioning. You can choose all or some of the available cluster nodes to form their RAC VDB. After provisioning, you can add and remove cluster nodes from an existing RAC VDB. A minimum of one cluster node is required.

The maximum number of cluster nodes you can expand your RAC VDB into is limited by the Oracle Cluster environment.  For example using Oracle Clusterware, you could configure a cluster environment to have four nodes. In this case the maximum cluster node any RAC database running on this cluster could have is four. When Delphix discovers the Oracle cluster from the target cluster environment, it knows the total number of cluster nodes this Oracle cluster is configured with and where are each of these nodes is located (what host, what IP, etc.). When a RAC VDB is provisioned into this discovered cluster environment, you are presented with the choice of choosing all or a subset of the cluster nodes. If the you specify the RAC VDB to only use two of the four available cluster nodes, the result will be a two node RAC VDB.

Repository Templates

The primary use case and motivation for repository templates is to provide the Delphix administrator with control over the Oracle database parameters used during the staging phase of the VDB provisioning process. It is useful to be able to control these configuration parameters when the physical capabilities of the staging machine, such as CPU count and memory, are inferior to the physical capabilities of the machines hosting the source database repository.

The repository template is a relationship between three entities:

  • A database repository – The entity that contains database instances on host environments
  • A database container – An entity that represents all of the physical data associated with the database
  • A VDB configuration template – A list of database configuration parameter names and values that you can save on the Delphix Engine to use at a later time

During the staging process, if you do not specify a repository template, then by default the Delphix Engine will use the configuration parameters taken from the source database to configure the staged database. These parameters may not be appropriate, because the machine used for staging may be physically inferior to the machine hosting the source database.

Instead, the Delphix administrator can create a VDB configuration template, which would be appropriate for the physical machine hosting staging repository. (See Customizing Oracle VDB Configuration Settings.) Then the admin can create a repository template entry which will bind together the VDB configuration template, database repository, and database container. This instructs the Delphix Engine to use configuration parameters from the VDB configuration template whenever the database container is staged on the database repository specified, instead of the parameters on the source database.

Currently, repository template relations can only be created via the command line interface (CLI) in repository->template.

  1. Switch to the repository->template context and create a new template entry.

delphix> repository template

delphix> create

delphix repository template create *> set name=RepositoryTemplate1

delphix repository template create *> set container=DBContainer1

delphix repository template create *> set repository=DBRepostory1

delphix repository template create *> set template=DBTemplate1

delphix repository template create *> commit