Restore RAC database to different client

Envirenment

requirements

  1. Successful Netbackup backup of set.
  2. Same version of database.
  3. Record Source DBID/DATAFILE/TABLESPACE.
  4. Install database software only on Destination client.
  5. Install Netbackup client software on Destination client.

SQL> select name from v$datafile;
Press Return to Continue

SQL> select name from v$tempfile;

SQL> select name from v$controlfile;

Master Server hosts file

Netbackup-master:/home/maintenance # tail -5 /etc/hosts

192.168.74.151 MC-PMS-DB
192.168.80.155  Netbackup-master
192.168.80.152  oem

192.168.80.162 MC-POSHIS-DB

Client/Media Server

Netbackup-master: ~# cat /usr/openv/netbackup/bp.conf 

[oracle@MC-PMS-DB ~]$ cat /usr/openv/netbackup/bp.conf
SERVER = Netbackup-master
CLIENT_NAME = MC-PMS-DB
CONNECT_OPTIONS = localhost 1 0 2

[root@MC-POSHIS-DB ~]# cat /usr/openv/netbackup/bp.conf 
SERVER = Netbackup-master
CLIENT_NAME = MC-POSHIS-DB
CONNECT_OPTIONS = localhost 1 0 2

Excute restore

Create initPMSDB.ora & orapwd file

copy pfile from Source client MC-PMS-DB OR create new one.

PMSDB.__db_cache_size=5737807872
PMSDB.__java_pool_size=117440512
PMSDB.__large_pool_size=134217728
PMSDB.__pga_aggregate_target=3221225472
PMSDB.__sga_target=7516192768
PMSDB.__shared_io_pool_size=0
PMSDB.__shared_pool_size=1308622848
PMSDB.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/PMSDB/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/MC-POSHIS-DB/PMSDB/controlfile/ctrl_dPMSDB.ctl'
*.db_block_size=8192
*.db_create_file_dest='/MC-POSHIS-DB'
*.db_domain=''
*.db_name='PMSDB'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=PMSDBXDB)'
*.log_archive_dest_1='LOCATION=/MC-POSHIS-DB/PMSDB/arch'
*.log_archive_format='arch_%t_%s_%r.arc'
*.open_cursors=300
*.pga_aggregate_target=3221225472
*.processes=300
*.remote_login_passwordfile='exclusive'
*.sessions=335
*.sga_target=7516192768
*.undo_tablespace='UNDOTBS1'

[oracle@MC-POSHIS-DB dbs]$ orapwd password=Systec36 file=orapwPMSDB

[oracle@MC-POSHIS-DB dbs]$ ls
hc_PMSDB.dat  initPMSDB.ora  initPMSDB.ora.old  init.ora  orapwPMSDB

create directories

[root@MC-POSHIS-DB ]# mkdir -pv /MC-POSHIS-DB/PMSDB/{controlfile,arch}
[root@MC-POSHIS-DB ]# chown -Rv oracle:oinstall /MC-POSHIS-DB/PMSDB/


[oracle@MC-POSHIS-DB dbs]$ mkdir -pv /u01/app/oracle/admin/PMSDB/{adump,bdump,cdump,ddump,udump,pfile}

restore controlfile

/usr/openv/netbackup/bin/bplist -S Netbackup-master -C MC-PMS-DB -t 4 -l -R / | tee nbu_backups20170704_MC-PMS-DB.txt

  export ORACLE_SID=PMSDB
  rman target / nocatalog

RMAN> startup nomount pfile='/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initPMSDB.ora';

RMAN> set DBID=2147825860
run {
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
SEND 'NB_ORA_SERV=Netbackup-master, NB_ORA_CLIENT=MC-PMS-DB';
restore controlfile from '/cntrl_HDPMS_set11_piece1_20180913_0btd0ica_1_1';
RELEASE CHANNEL ch00;
}

RMAN> startup mount

RMAN> startup mount;

}}}

restore database by UNTIL TIME

spool log to rman_restore-PMSDB-preview.log
set echo on
show all;
report schema;
list backup summary;
list backup;
list copy;
run {
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
SEND 'NB_ORA_SERV=Netbackup-master, NB_ORA_CLIENT=MC-PMS-DB';
ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
SEND 'NB_ORA_SERV=Netbackup-master, NB_ORA_CLIENT=MC-PMS-DB';

restore database preview;
restore database validate;
RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
}
spool log off

RMAN> 
spool log to rman_restore-PMSDB-v1.log
set echo on
run {
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
SEND 'NB_ORA_SERV=Netbackup-master, NB_ORA_CLIENT=MC-PMS-DB';
ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
SEND 'NB_ORA_SERV=Netbackup-master, NB_ORA_CLIENT=MC-PMS-DB';
restore database;
restore archivelog all;
RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
}
recover database until cancel using backup controlfile;
spool log off

recover database by UNTIL TIME

RMAN >
spool log to rman_recover-PMSDB-v1.log
set echo on
run {
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
SEND 'NB_ORA_SERV=Netbackup-master, NB_ORA_CLIENT=MC-PMS-DB';
set UNTIL TIME "to_date('2017-06-29 18:00:00','YYYY-MM-DD HH24:MI:SS')";
recover database;
RELEASE CHANNEL ch00;
}
spool log off

run {
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
SEND 'NB_ORA_SERV=Netbackup-master, NB_ORA_CLIENT=MC-PMS-DB';
#set UNTIL TIME "to_date('2017-07-01 17:00:00','YYYY-MM-DD HH24:MI:SS')";
restore datafile 2;
RELEASE CHANNEL ch00;
}

restore archivelog by UNTIL TIME

RMAN >
   list backup of archivelog time between "to_date('2017-06-29 17:00:00','YYYY-MM-DD HH24:MI:SS')" and "to_date('2017-07-01 17:00:00','YYYY-MM-DD HH24:MI:SS')";

spool log to rman_v1.log
set echo on
run {
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
SEND 'NB_ORA_SERV=Netbackup-master, NB_ORA_CLIENT=MC-PMS-DB';
ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
SEND 'NB_ORA_SERV=Netbackup-master, NB_ORA_CLIENT=MC-PMS-DB';

#set UNTIL TIME "to_date('2017-07-01 17:00:00','YYYY-MM-DD HH24:MI:SS')";
#restore validate database archivelog from sequence 33171;
#RESTORE VALIDATE CHECK LOGICAL  ARCHIVELOG from sequence 33171;

restore archivelog from logseq 30013 until logseq 30019 thread=1;
restore archivelog from logseq 33161 until logseq 33169 thread=2;

RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
}
spool log off

spool log to rman_v1.log
set echo on
RMAN> run {
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
SEND 'NB_ORA_SERV=Netbackup-master, NB_ORA_CLIENT=MC-PMS-DB';
set UNTIL TIME "to_date('2017-07-01 17:00:00','YYYY-MM-DD HH24:MI:SS')";
set until sequence 30024 thread 1;
recover database;

#restore validate database archivelog all;
#restore validate archivelog all;
#restore archivelog from time "TRUNC(sysdate)" until time "sysdate";
#restore validate archivelog from scn 31231 until scn 33225;
#restore validate archivelog from scn 31178 until scn 33171;
RELEASE CHANNEL ch00;
}
spool log off

Open database

NBU restore script

crosscheck backupset of database;

Use restore ... validate when you want RMAN to choose the backups to test.

NetBackup 7.7.1 AdministratorGuide => 131 to 138 pages

https://www.veritas.com/support/en_US/article.HOWTO64200

  1. Make sure you have installed Oracle with the same user as used on the original source client machine
  2. Install NetBackup Client and Oracle agent

  3. Patch if needed
  4. Touch the file on the master server: => /usr/openv/netbackup/db/altnames/No.Restrictions

  5. Browse the Oracle backups by running /usr/openv/netbackup/bin/bplist -S <master server> - C <Oracle source client name> -t 4 -l -R /

    • => Make sure you can browse the backups

  6. Restore the control file (in NOMOUNT mode) - See exact steps for this procedure in technote HOWTO63971
    •    => SQL> STARTUP NOMOUNT pfile='/u01/xxx.ora'
        rman nocatalog
         => RMAN> connect target 
         => RMAN> SET DBID=XXXXXX
            RMAN> restore controlfile from '/tmp/xxx';
  7. Restore the database (in MOUNT mode)
     RMAN> mount database
     
    
     8. Restore the database using the script in /usr/openv/netbackup/ext/db_ext/oracle/samples/rman/database_restore.sh
    {{{
     SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE RESETLOGS;
     ALTER DATABASE RENAME FILE '/old/location' TO '/new/location';
    
     SQL> select log_mode from v$database;
     SQL> select name from v$datafile;
     SQL> select member from v$logfile;
     SQL> select name from v$tempfile;
     SQL> select name from v$controlfile;
  8. SQL> SELECT NAME,FILE#,STATUS FROM V$DATAFILE;

RUN {
  ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
  ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE';
  SEND 'NB_ORA_SERV=<master server>, NB_ORA_CLIENT=<Oracle source client name>’;
  set newname for datafile 1 to '/data/lsdb/datafile/system01.dbf'
  set newname for datafile 2 to '/data/lsdb/datafile/sysaux01.dbf'
  RESTORE DATABASE;
  RECOVER DATABASE;
  sql 'alter database open resetlogs';
  RELEASE CHANNEL ch00;
  RELEASE CHANNEL ch01;
} 

Troubleshooting