Introduction
If you thinking about, or already running an Oracle database within a container, you may have thought ‘how I am I going to backup and secure my database and environment ?’
In this post I will share how we can use Portworx PX-Backup to easily backup an Oracle database to a Pure Storage FlashBlade s3 Object Store and restore the environment and data.
PX-Backup Installation
Let’s start by visiting central.portworx.com and selecting ‘PX-Backup’ to generate a specification.
The spec generator wizard walks you through the Kubernetes installation, so we just need to complete the defined steps.
Step 1.
Using the helm add command add the repository pointing to the repository path, then update the repo with helm repo update command
[root@master-1 ~]# helm repo add portworx http://charts.portworx.io/ && helm repo update "portworx" has been added to your repositories Hang tight while we grab the latest from your chart repositories... ...Successfully got an update from the "portworx" chart repository Update Complete. ⎈Happy Helming!⎈
Step 2.
Install using the set command.
[root@master-1 PX-Backup]# helm install px-backup portworx/px-backup --namespace px-backup --create-namespace --version 1.2.3 --set persistentStorage.enabled=true,persistentStorage.storageClassName="portworx-sc" NAME: px-backup LAST DEPLOYED: Tue May 25 14:07:32 2021 NAMESPACE: px-backup STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Your Release is named: "px-backup" PX-Backup deployed in the namespace: px-backup
Monitor PX-Backup Install
Wait for px-backup status to change from “Running” a “Completed” state, this will take a few minutes.
[root@master-1 ~]# kubectl get po --namespace px-backup -ljob-name=pxcentral-post-install-hook -o wide | awk '{print $1, $3}' | grep -iv error
NAME STATUS
pxcentral-post-install-hook-6cs2n Completed
PX-Backup Configuration
Before we logon to the PX-Backup UI we need to capture the Kubeconfig details with.
[root@master-1 ~]# kubectl config view --flatten --minify
Access the UI and paste all he details above in the ‘Add Kubernetes Cluster‘ Kubeconfig dialogue box.

Cloud Settings
From the main dashboard click on Settings and select Cloud Settings.
Click on Add within the Cloud Accounts and provide required details.
Here I have provided my FlashBlade AWS s3 Object Store credentials

In the bottom panel click Add to setup Backup Locations.
Here I have selected my Cloud Account and provided my s3 bucket name and FlashBlade endpoint.

Kubernetes Backup
Select the cluster and the Oracle Namespace, here we can see all the resources which were created from Oracle database 19c on Kubernetes with Portworx storage blog post.
The PX-Backup will backup the Kubenetes environment, not just the data, protecting:
- ConfigMaps
- Persistent Volumes
- Services
- Secrets
Create Backup

Click Create, as I selected Now, the backup will start immediately.
Now wait for the Cloud icon to go green.

If we want to see the number of objects, size and data reduction of the backup visit the FlashBlade UI.

PX-Backup Restore
Before we delete our Sales Order Entry schema, I will perform a quick check on the number of rows in my database.
[root@master-1 bin]# ./sbutil -soe -u soe -p soe -cs //localhost:32755/ORCLPDB1 -tables Order Entry Schemas Tables ------------------------------------------------------------------------------ |Table Name | Rows| Blocks| Size| Compressed?| Partitioned?| ------------------------------------------------------------------------------ |ORDER_ITEMS | 7,206,893| 62,560| 3.9GB| Disabled| No| |ORDERS | 1,429,790| 20,992| 1.3GB| Disabled| No| |ADDRESSES | 1,500,000| 18,104| 1.1GB| Disabled| No| |CUSTOMERS | 1,000,000| 17,608| 1.1GB| Disabled| No| |CARD_DETAILS | 1,500,000| 10,672| 677.9MB| Disabled| No| |LOGON | 2,382,984| 8,074| 64.0MB| Disabled| No| |INVENTORIES | 899,228| 2,640| 20.6MB| Disabled| No| |PRODUCT_DESCRIPTIONS | 1,000| 35| 320KB| Disabled| No| |PRODUCT_INFORMATION | 1,000| 28| 256KB| Disabled| No| |ORDERENTRY_METADATA | 0| 0| 64KB| Disabled| No| |WAREHOUSES | 1,000| 5| 64KB| Disabled| No| ------------------------------------------------------------------------------ Total Space 8.1GB
Disaster strikes!!!
To simulate a disaster I will drop my soe tablespace.
Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0 SQL> drop tablespace soe including contents; Tablespace dropped.
And all my Sale Order Entry data.
[root@master-1 bin]# ./sbutil -soe -u soe -p soe -cs //localhost:32755/ORCLPDB1 -tables Order Entry Schemas Tables ---------------------------------------------------------------------- |Table Name | Rows| Blocks| Size| Compressed?| Partitioned?| ---------------------------------------------------------------------- Total Space 0b
Time to test our backup with a restore

Wait for the Restore job status to go green.

Using kubectl we can see we now have a new statefulset, running pod and the associated persistent volume claims.
[root@master-1 Oracle-on-Kubernetes]# kubectl get statefulset NAME READY AGE oracle19c 1/1 2m14s [root@master-1 Oracle-on-Kubernetes]# kubectl get pods NAME READY STATUS RESTARTS AGE oracle19c-0 1/1 Running 0 3m10s [root@master-1 Oracle-on-Kubernetes]# kubectl get pvc NAME STATUS VOLUME CAPACIT ACCESS STORAGECLASS AGE ora-data193-oracle19c-0 Bound pvc-068206ed-9997-4549-b5d9-53788feb8771 50Gi RWO px-ora-sc 2m48s ora-setup193-oracle19c-0 Bound pvc-a8ffc36a-82d7-4b95-8dbb-89b4612ee407 1Gi RWO px-ora-sc 2m48s ora-startup193-oracle19c-0 Bound pvc-3e4d930f-b47d-45ca-99c2-b89609e15565 1Gi RWO px-ora-sc 2m48s
Add most importantly all our data back.
[root@master-1 bin]# ./sbutil -soe -u soe -p soe -cs //localhost:32755/ORCLPDB1 -tables Order Entry Schemas Tables ------------------------------------------------------------------------------ |Table Name | Rows| Blocks| Size| Compressed?| Partitioned?| ------------------------------------------------------------------------------ |ORDER_ITEMS | 7,206,893| 62,560| 3.9GB| Disabled| No| |ORDERS | 1,429,790| 20,992| 1.3GB| Disabled| No| |ADDRESSES | 1,500,000| 18,104| 1.1GB| Disabled| No| |CUSTOMERS | 1,000,000| 17,608| 1.1GB| Disabled| No| |CARD_DETAILS | 1,500,000| 10,672| 677.9MB| Disabled| No| |LOGON | 2,382,984| 8,074| 64.0MB| Disabled| No| |INVENTORIES | 899,228| 2,640| 20.6MB| Disabled| No| |PRODUCT_DESCRIPTIONS | 1,000| 35| 320KB| Disabled| No| |PRODUCT_INFORMATION | 1,000| 28| 256KB| Disabled| No| |ORDERENTRY_METADATA | 0| 0| 64KB| Disabled| No| |WAREHOUSES | 1,000| 5| 64KB| Disabled| No| ------------------------------------------------------------------------------ Total Space 8.1GB
Summary
In this post I have shared how to install and set-up PX-Backup, perform a backup of an Oracle 19c database to a Flashblade AWS/s3 compliant Object store and perform a restore.
If you found this post interesting you may want to check-out some of my other Kubernetes themed posts.
[twitter-follow screen_name=’RonEkins’ show_count=’yes’]
Leave a Reply