Oracle has introduced revolutionary Exascale technology last year . Customers can leverage the new technology using Exadata Database Service on Exascale Infrastructure (ExaDB-XS).

But …how do you get there ?

We can use simple Refreshable PDB feature to migrate the pluggable database in Oracle Base Database to ExaDB-XS.

Here is my demo environment.

Source Database : Oracle Base Database RAC.

Source DB Version : 23.6

Target Database : Oracle Exadata Database Service on Exascale Infrastructure

Target DB version : 23.6

I have divided the steps in to multiple sections as below so that it is easy to navigate.

Let’s explore one step at a time.

Step 0 – Prerequisites

All the requirements for Refreshable PDB applies here.

Please note that ExaDB-XS only supports 23ai databases.

ExaDB-XS databases uses Enterprise Edition – Extreme Performance .

Step 1 – Create Target CDB in ExaDB-XS (No Downtime)

Navigate to Container Databases section in ExaDB-XS console and click on Create Container Database as shown below.

Fill in the details as required on the new window as shown below.

We have the option to select an existing Oracle Home or create a new one.

I have selected an existing Oracle Home with 23.6 version which I had created earlier.

Enter the SYS user password as shown below.

Expand the advanced options and select same Database and National Character set as your Source Database and click on Create container database to proceed with creation of Target CDB.

We will have a CDB with a default PDB (PDB1 here) after successful creation.

Below is sample output of the existing PDBs.

Step 2 – Create Database Link (No Downtime)

We need a database link to create a refreshable PDB in target CDB from the source PDB.

Follow below steps.

Source Database

Create a user with below privileges on the Source CDB.

We will use this user while creating database link.

Target Database

On target CDB in ExaDB-XS , create a database link pointing to source CDB using below SQL.

Please note that it is important to use the above format (with SID) otherwise you might face error similar to below while creating Refreshable PDB.

Unable to determine the traces files directory for entry <entry in config file>

This is because service based connection(instead of SID) can redirect the database link to any available database instance and this error will be reported whenever database link tries to connect to the instance which is running on a different node than the node from which you are executing any refreshable PDB related activity.

Refer MOS note : 3044069.1 for more details.

Verify the database link using below SQL , you should be able to get source database name as output.

If you are interested in using a database link name other than the source database name , you will have to set init parameter global_names to false on the target CDB.

I had to set global_names to false.

Step 3 – Create Refreshable PDB (No Downtime)

We can create a Refreshable PDB on Target CDB using command similar to below one.

PDB_Name – Name of the new PDB in Exascale.

Source_PDB_Name – Name of PDB in Source which we would like to migrate.

db_link_name – Name of the database link created in Step 2.

keystore_password – Password of Source TDE keystore.

Below is sample output.

We can see the new PDB in mount mode as shown below.

How about PDB plug in violations , let’s use below command to check.

I could see lot of violations as below.

Let’s ignore them for now and proceed with next step.

Step 4 – Refresh the PDB (No Downtime)

We have created a refreshable PDB with manual refresh in previous step.

let’s manually refresh the PDB on regular intervals so that the target PDB is in sync with the source PDB until we decide to cutover.

Issue the below command to refresh the PDB.

We can monitor the alert log to see more details about the refresh.

We can also skip this step if we had created the PDB with auto refresh.

Step 5 – Final refresh and cutover (Downtime window)

Proceed to shutdown the applications pertaining to Source PDB so that there are no more transactions coming to Source PDB.

Perform a final refresh using the command given in step 4.

We can now convert the refreshable PDB to a regular PDB using below command.

Now we can open the pluggable database in read write.

Use the below command.

Below is sample outout.

We have completed the migration of the PDB to ExaDB-XS now , however we will perform additional steps mentioned in next step to ensure we are good with migration.

Step 6 – Post checks

a. PDB Plug in violations.

Let’s see what happened to the plug in violations we had noticed earlier.

Surprise , there are no more violations now.

b. PDB availability.

We will check whether the new PDB is up on all nodes by issuing below command.

Below is sample output.

As we can see PDB is up only on one node.

Let’s bring it up on all nodes using below command.

Check the status again using previous command to ensure PDB is up on all nodes.

Below is sample output.

c. PDB service

We will check whether there is any service associated with the newly created PDB.

Let’s check the services of existing for the default PDB (PDB1) which got created along with CDB creation.

We will use below command.

Below is sample output.

Let’s check the services for the migrated PDB.

We can see that there are no services created for the migrated PDB . This can be issue when we restart our CDB since a PDB won’t be open if there are no associated services for it.

Let’s create a service for our PDB using below command.

I have used a service name similar to the service name of existing PDB . Please note that you can also use a different service name.

Below is sample output.

We also have to start the service using below command.

d. TDE encryption.

Check the wallet status using below command.

Below is sample output.

All looks good in the above output.

Let’s check the master encryption key also.

Below is sample output.

Again , output looks good.

We will find that this is the same key of the source PDB.

e. Init parameters

We have seen that there were PDB plug in violations for the PDB before we converted to a regular PDB.

Please note that even though there are no violations now , new PDB has adopted some of the parameter of the target CDB.

There are many parameter changes , some of them are based on the target memory and ECPU.

However , one major thing that caught my attention is the change in compatibility.

My source database (23.6) has compatibility of 23.0.0 where as the PDB after migration has compatibility of 23.6.0 which might have an impact on your database .

There are of course other changes like replacing ASM with Storage Vault . I haven’t tested any impact due to that change , however you should definitely test your database and application before an actual Production Database migration.

Happy Migration!

One response to “Migrate Oracle Base Database to Oracle Exadata Database Service on ExaScale Infrastructure using Refreshable PDBs”

  1. […] my previous blog , I have explained how you can migrate Oracle Base Database 23ai to ExaDB-XS […]

Leave a Reply