Creare un RECOVERY CATALOG

Il repository data (metadati) di RMAN viene salvato nel Control file del db target, ma può essere anche salvato in un altro database di Oracle chiamato Recovery Catalog. Questo contiene le informazioni di backup, in un db separato ed è utile in caso di perdita del control file. Inoltre un singolo Recovery Catalog può contenere backup di più target database. Le informazioni di backup continuano ad essere memorizzate nel control file. 
Quando usarlo?
Se il backup è molto semplice conviene usare il control file perché avere un recovery catalog significa gestire ed effettuare il backup di un altro db. Il vantaggio è che offre un tempo di retention di backup più lungo del control file e una redundanza nel caso si perda il control file.
Non usare il database target come il db del Recovery Catalog perché questo deve essere protetto da una perdita del db target. Assicurarsi che il recovery catalog e database target non risiedono nello stesso disco.
RMAN propaga le informazioni sulla struttura del db target (archivlogs, backup sets, tablespace e data files indicate nel control file del db target) nel recovery catalog.

1) Creazione di un nuovo database per contenere il recovery catalog.
Prevede la creazione dei seguenti tablespace.
SYSTEM
SYSAUX
TEMP (spazio minimo perchè usate poco)
UNDO (spazio minimo perchè usate poco)
RECOVERY CATALOG (dimensione legata al numero di datafiles del database da backupare + la frequenza
di backup + archivelog (più dml abbiamo e più sono grandi questi file))


Assicurasi che le due macchine dove sono i db comunichino tra loro con il comando “ping”.
Inoltre su db del catalogo definire un nuovo listener (con netca) che punta al db target.


2) Creazione del Tablespace per Rman repository storage.


export ORACLE_SID=CATDB
sqlplus / as sysdba
SQL>
create tablespace tbs_catdb datafile '/home/oracle/u01/app/oracle/oradata/catdb2/catdb2/datafile/tbs_catdb.dbf' size 2g autoextend on next 500m maxsize 3g permanent extent management local autoallocate blocksize 8k segment space management auto;



3) Creazione di un recovery catalog owner
SQL> create user rman identified by rman
temporary tablespace temp
default tablespace cattbs
quota unlimited on cattbs;

4) Dare le grant.
SQL> grant recovery_catalog_owner to rman;

5) Modificare il file tnsnames.ora sul server dove è installato il catalog.
vi $ORACLE_HOME/network/admin/tnsnames.ora
CATDB =
 (DESCRIPTION =
   (ADDRESS = (PROTOCOL = TCP)(HOST = coslab02.intra.camera.it)
(PORT = 1521))
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = CATDB.WORLD)))


Attenzione che se in fase di collegamento a rman compare l’errore
RMAN-04004: error from recovery catalog database: ORA-12154:
TNS:could not resolve the connect identifier specified
è causato dal fatto che RMAN non risolve l’alias CATDB e in questo caso collegarsi come CATDB.<dominio>
a meno che il domain non sia messo nel file sqlnet.ora.
Modificare anche il file listener.ora sul server in cui l’istanza di catalogo è running:
(SID_DESC =
     (GLOBAL_DBNAME = CATDB)
     (ORACLE_HOME = /home/oracle/u01/app/oracle/product/11.2.0/dbhome_2)
     (SID_NAME = CATDB)
   )

6) Creare il Recovery Catalog
[oracle@oradbs05 datafile]$ rman
RMAN> connect catalog rman/rman@catdb
connected to recovery catalog database
Non è necessario usare il net_service_name se si esporta come ORACLE_SID=catdb.
RMAN> create catalog;
recovery catalog created
Nel tablespace definito precedentemente vengono create le tabelle di catalog.

7) Registrare il database target nel catalogo.
Dalla macchina dove è installato il recovery catalogo collegarsi con Rman al db target (SIAT11F).
Il target deve essere in stato mount oppure open.


[oracle]$ RMAN sys/<password>@SIAT11F  catalog rman/rman@catdb
RMAN> register database;
database registered in recovery catalog
starting full resync of recovery catalog
full resync complete


Con questo comando Rman legge il control file del db target e copia i dati nelle tabelle del recovery catalog
e sincronizza il recovery catalog con il control file.
Per verificare di aver registrato con successo il db target eseguire il comando.
RMAN> list incarnation;
List of Database Incarnations
DB Key  Inc Key DB Name  DB ID STATUS  Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
2       84 SIAT11F  3216764891 PARENT  1 15-AUG-09

2       4 SIAT11F  3216764891 CURRENT 945184     11-SEP-18



SINCRONIZZAZIONE                                                                                                                           

Per effettuare l’update del Recovery Catagol  a partire dai cambiamenti presenti nel control file, occorre prima stoppare il db target (SIAT11F) e portarlo in modalità nomount.
La sincronizzazione full fa sia quella parziale, e quindi aggiorna il recovery catalog con ogni metadata riguardante backup, archived redo log e data file, ma anche i cambiamenti della struttura del db come un cambiamento di uno schema e un nuovo tablespace. Per fare questo crea uno snapshot del control file e lo confronta con il, recovery catalog.
SQL> shutdown immediate;
SQL> startup nomount;
SQL> alter database mount;
ERROR at line 1:
ORA-00205: error in identifying control file, check alert log for more info

Collegarsi al rman con db target e catalog.
$ rman target  sys/so12mee0@SIAT11F catalog rman/rman@catdb
RMAN> resync catalog;
starting full resync of recovery catalog
full resync complete

SQL> show  parameter control_file_record_keep_time
NAME                                 TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time        integer 7

Questo parametro definisce il minimo numero di giorni dopodiché un record riusabile può essere sovrascritto.
Quali sono i record risuabili? Quelli relativi agli archivelog e backup. Quelli contenenti le informazioni dei
datafile, tablespace e redo non possono essere sovrascritti a meno che l'oggetto corrispondente non venga
eliminato dal tablespace.

Di default è 7.

control_file_record_keep_time = retention period + level 0 backup interval + 1

For example, a level 0 backup once a week with retention policy of a recovery windows of 14 days would
have a control_file_record_keep_time of 22 ( 14+7+1).


UNREGISTER DATABASE

Per rimuove dal catalogo un db collegarsi al db come target.

rman target / catalog rman/rman@catdb Recovery Manager: Release 11.2.0.1.0 - Production on Thu Jan 24 16:48:24 2019 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. connected to target database: SIAT11F (DBID=3216764891) connected to recovery catalog database RMAN> unregister database; database name is "SIAT11F" and DBID is 3216764891 Do you really want to unregister the database (enter YES or NO)? yes database unregistered from the recovery catalog
SPOSTARE RECOVERY CATALOG SU UN ALTRO DB

Spostare il recovery catalog dal db CATDB2 a CATDB che non ha all'interno alcun db registrato.

$ rman

RMAN> connect target sys/<pwd>@S11TEST1
connected to target database: S11TEST1 (DBID=4247218851)
RMAN> connect catalog rman/rman@CATDB
connected to recovery catalog database

RMAN> list incarnation;

RMAN> import catalog rman/rman@CATDB2;
Starting import catalog at 24-JAN-19
connected to source recovery catalog database
import validation complete
database unregistered from the source recovery catalog
Finished import catalog at 24-JAN-19

RMAN> list incarnation;
List of Database Incarnations
DB Key  Inc Key DB Name  DB ID            STATUS  Reset SCN  Reset Time
------- ------- -------- ---------------- --- ---------- -----------------------------------------
6169    6190    S11TEST1 4247218851       PARENT  1          09-JAN-19
6169    6191    S11TEST1 4247218851       PARENT  1301776    15-JAN-19
6169    6192    S11TEST1 4247218851       PARENT  1303703    15-JAN-19
6169    6171    S11TEST1 4247218851       CURRENT 1659368    22-JAN-19


VISTE

Risalire al DBID del database target 
SQL> select dbid from v$database;

Collegarsi come catalog
SQL> connect rman/rman@catdb
select  *  from rc_database where dbid =&dbid_target
  select  *  from rc_stored_Script
  select  * from rc_unusable_backupfile_details
  select  *  from rc_rman_status
  select  * from rc_rman_configuration
  select  *  from rc_archived_log 
  select  *  from rc_Datafile

query RMAN: risalire al backup piece di un tablesapce\datafile SELECT db.dbid , --identifica db target db.name AS DB_TARGET, d.tablespace_name, d.name AS data_file, d.file# AS file_id, df.checkpoint_change#, --coincide con Ckp SCN estratto dal comando RMAN list backup df.resetlogs_change#, TRUNC (df.block_size * df.datafile_blocks / 1048576) Total_Size_MB, TRUNC (df.block_size * df.blocks / 1048576) Backup_Size_MB, DF.BS_KEY, ---coincide con il BS Key estratto dal comando RMAN list backup df.SET_STAMP,-- identifica univocamente il record nel control file del target database a cui corrisponde il backup set df.SET_COUNT,--identifica univocamente il record nel control file del target database a cui corrisponde il backup set df.recid, df.stamp, bp.handle, media, TAG, bp.piece#, start_time, bp.completion_time, CASE bp.backup_type WHEN 'D' THEN 'full backup or level 0 incremental' WHEN 'I' THEN 'incremental level 1' WHEN 'L' THEN 'archived redo log' ELSE bp.backup_type END AS tipo_bkp, CASE bp.status WHEN 'A' THEN 'all backup pieces available' WHEN 'D' THEN 'all backup pieces deleted' WHEN 'O' THEN 'the backup set is unusable' ELSE bp.status END stato FROM rc_backup_datafile df, rc_Datafile D, rc_backup_Piece bp, rc_database db, RC_DATABASE_INCARNATION inc WHERE inc.dbinc_key = (select max(inc.dbinc_key) from RC_DATABASE_INCARNATION inc where name = d.db_name and status='CURRENT') and inc.dbinc_key = db.dbinc_key and inc.dbinc_key = df.dbinc_key and inc.dbinc_key = d.dbinc_key and Df.DB_KEY = d.db_key AND df.file# = d.file# AND bp.db_id = db.dbid AND db.name = d.db_name AND DF.BS_KEY = bp.BS_KEY AND d.db_name = 'SIAT11' ---AND d.tablespace_name = 'TSDATISICA_LOB' --and handle = 'CONCT_23tgrilu_1_1' AND df.completion_time >= TO_DATE ('29/10/2018', 'dd/mm/yyyy') order by d.tablespace_name, d.file#;

Post popolari in questo blog

Create e Drop Pluggable Database

ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione