Restore Oracle9i tramite HP Data Protector
Dobbiamo effettuare il restore del db RATP versione Oracle 9i il cui backup è fatto con Hp Data Protector.
Individuare un ambiente contenente il client Oracle9i dove creare un instanza ausiliaria.
Il server in questione è oradbt04-test. Essendo due server differenti, l'istanza ausiliaria conserva lo stesso nome del db sorgente.
1) Inserire nel listener.ora sotto /u01/app/oracle/product/9.2.0/network/admin la stringa di connessione.
(SID_DESC =
(GLOBAL_DBNAME = RATP)
(ORACLE_HOME = /u01/app/oracle/product/9.2.0)
(SID_NAME = RATP)
)
2) Modificare il tnsnames.ora mettendo come host quello della macchina di test.
RATP.WORLD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = oradbt04-test.intra.xxxxxx.it)(PORT = 1521))
)
(CONNECT_DATA =
(UR = A)
(SERVER = DEDICATED)
(SERVICE_NAME = RATP)
)
)
3) Copiare spfile del db sorgente (oradbp06 )sulla macchina test (oradbt04-test).
scp spfileRATP.ora root@oradbt04-test:/u01/app/oracle/product/9.2.0/dbs
4) Sulla macchina target (oratest05) creare le stesse directory del db sorgente
mkdir -p /u01/app/oracle/admin/RATP/audit
mkdir -p /u01/app/oracle/admin/RATP/bdump
mkdir -p /u01/app/oracle/oradata/RATP
mkdir -p /u01/app/oracle/admin/RATP/cdump
mkdir -p /u01/app/oracle/oradata/RATP/arch
mkdir -p /u01/app/oracle/admin/RATP/udump
chown oracle: /u01/app/oracle/admin/RATP/audit
chown oracle: /u01/app/oracle/admin/RATP/bdump
chown oracle: /u01/app/oracle/oradata/RATP
chown oracle: /u01/app/oracle/admin/RATP/cdump
chown oracle: /u01/app/oracle/oradata/RATP/arch
chown oracle: /u01/app/oracle/admin/RATP/udump
oppure dalla macchina sorgente creare il file pfile e poi portarlo sulla macchina di test
export ORACLE_SID=<sid_target>
SQL> create pfile='/home/oracle/u01/app/oracle/product/11.2.0/dbhome_2/dbs/initaux1.ora' from spfile.ora;
5) Copiare orapwRATP dal server sorgente sulla macchina test.
6) Avviare il db target in modalità nomount.
export ORACLE_SID=RATP
SQL>startup nomout;
7) Collegarsi al Catalog e risalire all'ultimo backup.
rman target / catalog rman/rman@recat96.world
Recovery Manager: Release 9.2.0.8.1 - 64bit Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
connected to target database: RATP (not mounted)
connected to recovery catalog database
RMAN > list backup of control file
RMAN> set DBID=312705549 (preso dal db sorgente select dbid, name from v$database;)
8) Effettuare il restore del control file su un path tmp
run{
allocate channel 'dev_0' type 'sbt_tape' parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=RATP)';
SET UNTIL TIME "TO_DATE('22-GEN-2019 07:00:00','DD-MON-YYYY HH24:MI:SS')";
restore controlfile to '/tmp/controlRATP.ctl ;
}
cp /tmp/controlRATP.ctl /u01/app/oracle/oradata/RATP
cp control01.ctl control02.ctl
cp control01.ctl control03.ctl
9) Portare il db in stato mount.
SQL > alter database mount;
10) Creare tre file lancio.sh, rst_db.rcv e rec_db.rcv.
### script
#lancio.sh
export ORACLE_SID=RATP
rman cmdfile=rst_db.rcv log=log_rst_db.log
#rman cmdfile=rec_db.rcv log=log_rec_db.log
#rst_db.rcv
connect catalog rman/rman@RECAT96.WORLD
connect target /
run {
allocate channel dev_0 type 'sbt_tape' parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=RATP)';
allocate channel dev_1 type 'sbt_tape' parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=RATP)';
allocate channel dev_2 type 'sbt_tape' parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=RATP)';
allocate channel dev_3 type 'sbt_tape' parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=RATP)';
set until time "TO_DATE ('20190122 07:00:05','YYYYMMDD HH24:MI:SS')";
restore database;
}
#rec_db.rcv
connect catalog rman/rman@RECAT96.WORLD
connect target /
run {
allocate channel dev_0 type 'sbt_tape' parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=RATP)';
allocate channel dev_1 type 'sbt_tape' parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=RATP)';
allocate channel dev_2 type 'sbt_tape' parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=RATP)';
allocate channel dev_3 type 'sbt_tape' parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=RATP)';
set until time "TO_DATE ('20190122 07:00:05','YYYYMMDD HH24:MI:SS')";
recover database;
}
11) Lanciare il restore del db.
nohup ./lancio.sh &
termina con
..................
released channel: dev_0
released channel: dev_1
released channel: dev_2
released channel: dev_3
Recovery Manager complete.
12) Modificare il file lancio.sh per lanciare il recovery.
#lancio.sh
export ORACLE_SID=RATP
#rman cmdfile=rst_db.rcv log=log_rst_db.log
rman cmdfile=rec_db.rcv log=log_rec_db.log
Eseguire il revocery
nohup ./lancio.sh &
13) Aprire il db in modalità resetlog.
alter database open resetlogs;
Controllare la numerosità degli oggetti importati e se ci sono funzioni\procedure\package da compilare
Individuare un ambiente contenente il client Oracle9i dove creare un instanza ausiliaria.
Il server in questione è oradbt04-test. Essendo due server differenti, l'istanza ausiliaria conserva lo stesso nome del db sorgente.
1) Inserire nel listener.ora sotto /u01/app/oracle/product/9.2.0/network/admin la stringa di connessione.
(SID_DESC =
(GLOBAL_DBNAME = RATP)
(ORACLE_HOME = /u01/app/oracle/product/9.2.0)
(SID_NAME = RATP)
)
2) Modificare il tnsnames.ora mettendo come host quello della macchina di test.
RATP.WORLD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = oradbt04-test.intra.xxxxxx.it)(PORT = 1521))
)
(CONNECT_DATA =
(UR = A)
(SERVER = DEDICATED)
(SERVICE_NAME = RATP)
)
)
3) Copiare spfile del db sorgente (oradbp06 )sulla macchina test (oradbt04-test).
scp spfileRATP.ora root@oradbt04-test:/u01/app/oracle/product/9.2.0/dbs
Sulla macchina target (oratest04) cambiare il proprietario
Chowm oracle: spfileRATP
4) Sulla macchina target (oratest05) creare le stesse directory del db sorgente
mkdir -p /u01/app/oracle/admin/RATP/audit
mkdir -p /u01/app/oracle/admin/RATP/bdump
mkdir -p /u01/app/oracle/oradata/RATP
mkdir -p /u01/app/oracle/admin/RATP/cdump
mkdir -p /u01/app/oracle/oradata/RATP/arch
mkdir -p /u01/app/oracle/admin/RATP/udump
chown oracle: /u01/app/oracle/admin/RATP/audit
chown oracle: /u01/app/oracle/admin/RATP/bdump
chown oracle: /u01/app/oracle/oradata/RATP
chown oracle: /u01/app/oracle/admin/RATP/cdump
chown oracle: /u01/app/oracle/oradata/RATP/arch
chown oracle: /u01/app/oracle/admin/RATP/udump
oppure dalla macchina sorgente creare il file pfile e poi portarlo sulla macchina di test
export ORACLE_SID=<sid_target>
SQL> create pfile='/home/oracle/u01/app/oracle/product/11.2.0/dbhome_2/dbs/initaux1.ora' from spfile.ora;
5) Copiare orapwRATP dal server sorgente sulla macchina test.
Sulla macchina target (oratest05) cambiare il proprietario
Chowm oracle: orapwRATP
6) Avviare il db target in modalità nomount.
export ORACLE_SID=RATP
SQL>startup nomout;
7) Collegarsi al Catalog e risalire all'ultimo backup.
rman target / catalog rman/rman@recat96.world
Recovery Manager: Release 9.2.0.8.1 - 64bit Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
connected to target database: RATP (not mounted)
connected to recovery catalog database
RMAN > list backup of control file
RMAN> set DBID=312705549 (preso dal db sorgente select dbid, name from v$database;)
8) Effettuare il restore del control file su un path tmp
run{
allocate channel 'dev_0' type 'sbt_tape' parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=RATP)';
SET UNTIL TIME "TO_DATE('22-GEN-2019 07:00:00','DD-MON-YYYY HH24:MI:SS')";
restore controlfile to '/tmp/controlRATP.ctl ;
}
cp /tmp/controlRATP.ctl /u01/app/oracle/oradata/RATP
cp control01.ctl control02.ctl
cp control01.ctl control03.ctl
9) Portare il db in stato mount.
SQL > alter database mount;
10) Creare tre file lancio.sh, rst_db.rcv e rec_db.rcv.
### script
#lancio.sh
export ORACLE_SID=RATP
rman cmdfile=rst_db.rcv log=log_rst_db.log
#rman cmdfile=rec_db.rcv log=log_rec_db.log
#rst_db.rcv
connect catalog rman/rman@RECAT96.WORLD
connect target /
run {
allocate channel dev_0 type 'sbt_tape' parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=RATP)';
allocate channel dev_1 type 'sbt_tape' parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=RATP)';
allocate channel dev_2 type 'sbt_tape' parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=RATP)';
allocate channel dev_3 type 'sbt_tape' parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=RATP)';
set until time "TO_DATE ('20190122 07:00:05','YYYYMMDD HH24:MI:SS')";
restore database;
}
#rec_db.rcv
connect catalog rman/rman@RECAT96.WORLD
connect target /
run {
allocate channel dev_0 type 'sbt_tape' parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=RATP)';
allocate channel dev_1 type 'sbt_tape' parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=RATP)';
allocate channel dev_2 type 'sbt_tape' parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=RATP)';
allocate channel dev_3 type 'sbt_tape' parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=RATP)';
set until time "TO_DATE ('20190122 07:00:05','YYYYMMDD HH24:MI:SS')";
recover database;
}
11) Lanciare il restore del db.
nohup ./lancio.sh &
termina con
..................
released channel: dev_0
released channel: dev_1
released channel: dev_2
released channel: dev_3
Recovery Manager complete.
12) Modificare il file lancio.sh per lanciare il recovery.
#lancio.sh
export ORACLE_SID=RATP
#rman cmdfile=rst_db.rcv log=log_rst_db.log
rman cmdfile=rec_db.rcv log=log_rec_db.log
Eseguire il revocery
nohup ./lancio.sh &
13) Aprire il db in modalità resetlog.
alter database open resetlogs;
Controllare la numerosità degli oggetti importati e se ci sono funzioni\procedure\package da compilare