Uncategorized

Oracle Database Appliance : Create Snapshot Database Using OAKCLI

About ODA Snapshot Database

  • ODA Snapshot Database is created using oakcli command line utility
  • ODA automates the entire snapshot database creation process
  • Snapshot Database is created by taking a snapshot of the Oracle ASM Cluster File System (ACFS) where the source data files reside
  • The Source Database can be:
    • Non-RAC
    • RAC
    • RAC One Node
  • Snapshot Database requires less time and Storage
  • No downtime for source database for creating snapshot database
  • You can create an Oracle RAC database from an Oracle RAC One Node database
  • Create snapshot database feature is not available in ODA X6 – S / M / L
  • Create snapshot database feature is planned for 12.2 ODA X6 – S / M / L  RDBMS


Prerequisites

The Source Database must meet the following requirement to create Snapshot Database

  • It shouldn’t be a Standby database
  • It shouldn’t be a Container database
  • It shouldn’t be in READ-ONLY, RESTRICTED or ONLINE BACKUP Mode
  • It must be in ARCHIVE LOG Mode
  • All datafiles should be ONLINE
  • It shouldn’t use centralized wallet with TDE
  • It should be 11.2.0.4 and above


Important Note


  • Both the Compute Nodes in ODA cluster must have system clock synchronized. The create snapshot database command may fail if the clocks are not synchronized.
  • You can’t create a RAC snapshot database from Non-RAC source database and vice versa
  • You can create Non-RAC snapshot Database from a Non-RAC Snapshot database



Courtesy Oracle

Steps to Create Snapshot Database Using oakcli utility


  • List existing databases

[root@odanode1 ~]# oakcli show databases
Name     Type       Storage   HomeName             HomeLocation                               Version
—–    ——     ——–  ————–       —————-                           ———-
orcldb   RAC        ACFS      OraDb12102_home1     /u01/app/oracle/product/12.1.0.2/dbhome_1  12.1.0.2.170117(24732082,24828633)
odatest  RAC        ACFS      OraDb12102_home1     /u01/app/oracle/product/12.1.0.2/dbhome_1  12.1.0.2.170117(24732082,24828633)


  • Make source database is ARCHIVE LOG Mode

SQL> select name, open_mode, database_role, log_mode from gv$database;

NAME      OPEN_MODE            DATABASE_ROLE    LOG_MODE
——— ——————– —————- ————
ODATEST   READ WRITE           PRIMARY          ARCHIVELOG
ODATEST   READ WRITE           PRIMARY          ARCHIVELOG

SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     53
Current log sequence           54


  • List the database files

SQL> set lines 400 pages 200
SQL> col name for a120
SQL> select name, status from v$datafile;

NAME                                                                                                                     STATUS
———————————————————————————————————————— ——-
/u02/app/oracle/oradata/datastore/.ACFS/snaps/odatest/ODATEST/datafile/o1_mf_system_doqhbjop_.dbf                        SYSTEM
/u02/app/oracle/oradata/datastore/.ACFS/snaps/odatest/ODATEST/datafile/o1_mf_sysaux_doqhbnkx_.dbf                        ONLINE
/u02/app/oracle/oradata/datastore/.ACFS/snaps/odatest/ODATEST/datafile/o1_mf_undotbs1_doqhbq7b_.dbf                      ONLINE
/u02/app/oracle/oradata/datastore/.ACFS/snaps/odatest/ODATEST/datafile/o1_mf_undotbs2_doqhbzyd_.dbf                      ONLINE
/u02/app/oracle/oradata/datastore/.ACFS/snaps/odatest/ODATEST/datafile/o1_mf_users_doqhc0tz_.dbf                         ONLINE
/u02/app/oracle/oradata/datastore/.ACFS/snaps/odatest/ODATEST/datafile/o1_mf_test_ffsnh1x9_.dbf                          ONLINE

6 rows selected.


  • Syntax for oakcli create command

[root@odanode1 ~]# oakcli create -h
Usage:
oakcli create {database | dbstorage | snapshotdb| dbhome | db_config_params } [<options>]
Where:
         database            – Creates the Database
         snapshotdb          – Creates the Snapshot Database
         dbhome              – Creates the Database Home
         dbstorage           – Creates Storage for a given Database
         db_config_params    – Creates the Database configuration parameter file
[root@odanode1 ~]# oakcli create snapshotdb -h
Usage:
      oakcli create snapshotdb  -db <db_name> -from <db_name>

      where:
         db_name      – Name of the database to be created.
         from         – Source database for creating  the snapshot database.


  • Execute the following command to create snapshot database

Here we are creating a snapshot database newdb from source database odatest

[root@odanode1 ~]# oakcli create snapshotdb -db newdb -from odatest
INFO: 2018-04-22 14:51:11: Please check the logfile  ‘/opt/oracle/oak/log/odanode1/tools/12.1.2.10.0/createdb_newdb_56401.log’ for more details

Please enter the ‘root’  password :
Please re-enter the ‘root’ password:

Please enter the ‘SYS’  password for the Database odatest:
Please re-enter the ‘SYS’ password:
Please select one of the following for Database Deployment  [1 .. 2] :
1    => RACONE
2    => RAC
2
The selected value is : RAC

Specify the  Database Class (1. odb-01 ‘1 core, 8 GB memory’   2. Others) [1] :
The selected value is : odb-01 ‘1 core, 8 GB memory’
……….Completed

SUCCESS: All nodes in /opt/oracle/oak/temp_clunodes.txt are pingable and alive.
……
SUCCESS: All nodes in /opt/oracle/oak/temp_clunodes.txt are pingable and alive.
INFO: 2018-04-22 14:54:03: Creating the SNAP Database ‘newdb’ from the source Database ‘odatest’
INFO: 2018-04-22 14:54:11: Do not perform any Structural change to Database ‘odatest’ till SNAP Database ‘newdb’ is created
INFO: 2018-04-22 14:54:31: Taking SNAP of the Database ‘odatest’
INFO: 2018-04-22 14:54:32: Successfully took  the SNAP of database: odatest
INFO: 2018-04-22 14:55:24: Creating controlfile for database: newdb
INFO: 2018-04-22 14:56:05: Successfully created the control file for the database : newdb
INFO: 2018-04-22 14:56:05: Adding log files for the second thread for the database : newdb
INFO: 2018-04-22 14:56:11: Successfully added the log files for second thread
INFO: 2018-04-22 14:56:15: Recovering the database: newdb,  snapshot time : ‘2018-04-22:14:54:32’ , until time : ‘2018-04-22:14:54:49’
INFO: 2018-04-22 14:56:17: Successfully recovered the database
INFO: 2018-04-22 14:56:17: Opening the database with resetlogs
INFO: 2018-04-22 14:56:27: Successfully opened the database after recovery
INFO: 2018-04-22 14:56:31: Setting the temporary tablespace for database : newdb
INFO: 2018-04-22 14:56:33: Successfully set the temporary tablespace for the database : newdb
INFO: 2018-04-22 14:57:35: Successfully changed the Database ID
INFO: 2018-04-22 14:58:51: Adding the Database resource to the clusterware
INFO: 2018-04-22 14:59:48: Successfully started the database
INFO: 2018-04-22 14:59:48: Updating the TNS entries for the database newdb
INFO: 2018-04-22 15:00:24: Successfully set the RMAN SNAPSHOT control file
INFO: 2018-04-22 15:00:34: Disabling the external references in the database ‘newdb’ inherited from ‘odatest’
INFO: 2018-04-22 15:00:35: Successfully disabled the external references
INFO: 2018-04-22 15:00:59: Run the SQL script ‘/u01/app/oracle/product/12.1.0.2/dbhome_1/enable_external_refs_newdb_oMj0.sql’ on the 
database ‘newdb’ to enable these external references
 Also need to restart the database after running the SQL script
SUCCESS: 2018-04-22 15:01:57: Successfully created the Database ‘newdb’ from ‘odatest’


  • List the databases

We can now see the newdb database created and it using ACFS file system

[root@odanode1 ~]# oakcli show databases
Name     Type       Storage   HomeName             HomeLocation                               Version                     
—–    ——     ——–  ————–       —————-                           ———-                  
orcldb   RAC        ACFS      OraDb12102_home1     /u01/app/oracle/product/12.1.0.2/dbhome_1  12.1.0.2.170117(24732082,24828633)
newdb    RAC        ACFS      OraDb12102_home1     /u01/app/oracle/product/12.1.0.2/dbhome_1  12.1.0.2.170117(24732082,24828633)
odatest  RAC        ACFS      OraDb12102_home1     /u01/app/oracle/product/12.1.0.2/dbhome_1  12.1.0.2.170117(24732082,24828633)


  • Verify the newly create snapshot database

SQL> select name, open_mode, database_role, log_mode from gv$database;

NAME      OPEN_MODE            DATABASE_ROLE    LOG_MODE
——— ——————– —————- ————
NEWDB     READ WRITE           PRIMARY          ARCHIVELOG
NEWDB     READ WRITE           PRIMARY          ARCHIVELOG

SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     2
Next log sequence to archive   3
Current log sequence           3
SQL> set lines 400 pages 200
SQL> col name for a100
SQL> select name, status from v$datafile;

NAME                                                                                                 STATUS
—————————————————————————————————- ——-
/u02/app/oracle/oradata/datastore/.ACFS/snaps/newdb/NEWDB/datafile/o1_mf_system_doqhbjop_.dbf        SYSTEM
/u02/app/oracle/oradata/datastore/.ACFS/snaps/newdb/NEWDB/datafile/o1_mf_sysaux_doqhbnkx_.dbf        ONLINE
/u02/app/oracle/oradata/datastore/.ACFS/snaps/newdb/NEWDB/datafile/o1_mf_undotbs1_doqhbq7b_.dbf      ONLINE
/u02/app/oracle/oradata/datastore/.ACFS/snaps/newdb/NEWDB/datafile/o1_mf_undotbs2_doqhbzyd_.dbf      ONLINE
/u02/app/oracle/oradata/datastore/.ACFS/snaps/newdb/NEWDB/datafile/o1_mf_users_doqhc0tz_.dbf         ONLINE
/u02/app/oracle/oradata/datastore/.ACFS/snaps/newdb/NEWDB/datafile/o1_mf_test_ffsnh1x9_.dbf          ONLINE

6 rows selected.

[root@odanode1 ~]# cd /u02/app/oracle/oradata/datastore/.ACFS/snaps/newdb/NEWDB/datafile
[root@odanode1 datafile]# ls -ltr
total 3676440
-rw-r—– 1 oracle asmadmin   23076864 Apr 21 06:00 o1_mf_temp_doqhbr2n_.tmp
-rw-r—– 1 oracle asmadmin  387981312 Apr 22 14:54 o1_mf_undotbs2_doqhbzyd_.dbf
-rw-r—– 1 oracle asmadmin    5251072 Apr 22 14:54 o1_mf_users_doqhc0tz_.dbf
-rw-r—– 1 oracle asmadmin 1073750016 Apr 22 14:54 o1_mf_test_ffsnh1x9_.dbf
-rw-rw—- 1 oracle asmadmin   23076864 Apr 22 15:01 o1_mf_temp_ffspq06s_.tmp
-rw-r—– 1 oracle asmadmin  734011392 Apr 22 15:21 o1_mf_system_doqhbjop_.dbf
-rw-r—– 1 oracle asmadmin  319823872 Apr 22 15:21 o1_mf_undotbs1_doqhbq7b_.dbf
-rw-r—– 1 oracle asmadmin 1216356352 Apr 22 15:21 o1_mf_sysaux_doqhbnkx_.dbf


Conclusion

In this article we have demonstrated how to create snapshot database using oakcli. Using oakcli automates the entire snapshot database creating process. Snapshot Database is created by taking a snapshot of the Oracle ASM Cluster File System (ACFS) where the source data files reside.