(1) Présentation du catalogue de récupération
La base de données d'archives RMAN est utilisée pour stocker les informations requises pour la sauvegarde, la réparation et la récupération de la base de données. Ces informations peuvent être enregistrées dans le fichier de contrôle de la base de données de sauvegarde, ou elles peuvent être enregistrées séparément dans le répertoire de récupération d'une base de données de catalogue de récupération indépendante. La différence entre les deux méthodes est la suivante:
(1) Enregistrez les informations de sauvegarde dans le fichier de contrôle. Si les informations de sauvegarde sont enregistrées dans le fichier de contrôle, le fichier de contrôle comprendra des enregistrements non réutilisables et des enregistrements réutilisables. ; Répétable est les informations continuellement nouvelles générées pendant le fonctionnement de la base de données, telles que: les informations historiques des fichiers de journalisation, les informations des fichiers journaux archivés, les informations de sauvegarde, etc. Étant donné que l'espace réutilisable est limité et que le travail est effectué de manière cyclique, les informations de sauvegarde qui peuvent être enregistrées sont également limitées.
(2) Enregistrez les informations de sauvegarde dans le répertoire de récupération. Lorsque RMAN est utilisé pour sauvegarder et restaurer la base de données, RMAN obtient les informations requises directement à partir du catalogue de récupération au lieu d'obtenir des informations à partir du fichier de contrôle. Un catalogue de récupération peut être utilisé par plusieurs bases de données cible, il suffit d'enregistrer la base de données cible dans le catalogue de récupération. Le catalogue de récupération enregistre principalement:
- Informations sur les fichiers de données de la base de données cible et les fichiers journaux de rétablissement
- Informations de copie miroir de la base de données cible
- La relation entre l'espace table de la base de données cible et les fichiers de données
- Stocker des scripts RMAN créés par l'utilisateur, qui peuvent être réutilisés
- Informations de configuration des paramètres prédéfinis RMAN permanents
Cet article utilisera le catalogue de récupération pour les tests de sauvegarde et de récupération.
(2) Informations sur l'environnement de test
Adresse IP | Nom d'instance de base de données | Remarques |
192.168.10.11 | testdb1 | Base de données 1 à sauvegarder, également appelée base de données cible |
192.168.10.12 | testdb2 | Base de données à sauvegarder 2, également appelée base de données cible |
192.168.10.51 | catalogdb | base de données de catalogue |
(3) Configurer le catalogue de récupération pour la base de données
(3.1) Créer un espace table dans la base de données du catalogue de récupération (192.168.10.51:catalogdb) pour stocker les données de sauvegarde RMAN
créer tablespace recovery_catalog datafile ' /u01/app/oracle/oradata/catalogdb/catalog.dbf ' taille 1G;
(3.2) Créer un utilisateur dans la base de données du catalogue de récupération
Le même utilisateur peut être utilisé pour plusieurs bases de données cible ou un utilisateur peut être créé séparément pour chaque base de données cible. Ici, un utilisateur est créé séparément pour chaque base de données cible.
- utilisé pour faire l' utilisateur du catalogue de récupération sourcedb l' option Créer l'utilisateur rman_testdb1 IDENTIFIÉ par « rman_testdb1 » par défaut TABLESPACE recovery_catalog le temporaire TABLESPACE TEMP ; Grant le RECOVERY_CATALOG_OWNER, Connect, des ressources à rman_testdb1; - utilisé pour faire l' utilisateur catalogue de récupération TargetDB l' option Créer l'utilisateur rman_testdb2 IDENTIFIÉ par " rman_testdb2 " espace de table par défaut recovery_catalog temporaire de l' espace de table ; accorder recovery_catalog_owner, connect, ressource à rman_testdb2;
(3.3) Configurer la chaîne de connexion de chaque instance
Configurez la chaîne de connexion tnsnames.ora pour chaque serveur. Le nœud de base de données cible doit configurer les tns de la base de données de catalogue et la base de données de catalogue doit configurer les tns de toutes les bases de données cible.
(3.3.1) Ajoutez la chaîne de connexion de la base de données catalogdb au nœud testdb1
[oracle @ source-node admin] $ cat tnsnames.ora # tnsnames.ora Fichier de configuration réseau: / u01 / app / oracle / product / 11.2 . 0 / db_1 / network / admin / tnsnames.ora # Généré par les outils de configuration Oracle. CATALOGDB = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = 192.168 . 10.51 ) (PORT = 1521 )) ) (CONNECT_DATA = (SERVICE_NAME = catalogdb) ) ))
(3.3.2) Ajoutez la chaîne de connexion de la base de données catalogdb au nœud testdb2
CATALOGDB = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.51)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = catalogdb) ) )
(3.3.3)在catalogdb节点添加testdb1和testdb2数据库的连接字符串
testdb1 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.11)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = testdb1) ) ) testdb2 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.12)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = testdb2) ) )
(3.4)启动RMAN,创建恢复目录
在catalogdb数据库节点启动RMAN,创建恢复目录
(3.4.1)为testdb1创建恢复目录
## testdb1 [oracle@primarynode admin]$ rman RMAN> connect catalog rman_testdb1/rman_testdb1 connected to recovery catalog database RMAN> create catalog tablespace recovery_catalog; recovery catalog created
(3.4.2)为testdb2创建恢复目录
## testdb2 [oracle@primarynode admin]$ rman RMAN> connect catalog rman_testdb2/rman_testdb2 connected to recovery catalog database RMAN> create catalog tablespace recovery_catalog; recovery catalog created
(3.5)注册数据库
(3.5.1)将testdb1注册到恢复目录中
[oracle@primarynode admin]$ rman RMAN> connect target sys/Oracle123@testdb1 connected to target database: TESTDB1 (DBID=789833349) RMAN> connect catalog rman_testdb1/rman_testdb1 connected to recovery catalog database RMAN> register database; database registered in recovery catalog starting full resync of recovery catalog full resync complete RMAN> exit
(3.5.2)将testdb2注册到恢复目录中
[oracle@primarynode admin]$ rman RMAN> connect target sys/Oracle123@testdb2 connected to target database: TESTDB2 (DBID=1359425552) RMAN> connect catalog rman_testdb2/rman_testdb2 connected to recovery catalog database RMAN> register database; database registered in recovery catalog starting full resync of recovery catalog full resync complete
(四)备份与恢复测试
(4.1)创建测试数据
在数据库testdb1中的用户lijiaman下面创建表test01,并插入测试数据
create user lijiaman identified by "lijiaman"; grant dba,connect to lijiaman; create table lijiaman.test01 ( id number primary key, name varchar2(30) ); insert into lijiaman.test01 values(1,'a'); commit;
(4.2)将test01数据库备份到/rman_backup目录下面,需要主义的是,备份只能放在目标数据库服务器的本地
# 创建备份路径 [root@primarynode ~]# mkdir /rman_backup [root@primarynode ~]# chown -R oracle:oinstall /rman_backup/
# 开始备份 rman target sys/Oracle123@testdb1 catalog rman_testdb1/rman_testdb1 run{ configure controlfile autobackup on; configure controlfile autobackup format for device type disk to '/rman_backup/controlfile_%F.bak'; allocate channel c1 type disk; backup full tag 'dbfull' format '/rman_backup/full_%u_%s_%p' database; sql 'alter system archive log current'; backup archivelog all format '/rman_backup/arch_%u_%s_%p'; backup spfile format '/rman_backup/spfile_%d_%U'; delete noprompt expired backup; delete noprompt obsolete; release channel c1; }
(4.3)模拟误操作
--查看误操作之前的时间 select sysdate from dual; sysdate ------------- 2020/4/14 20:48:55 --执行trucnate操作: truncate table lijiaman.test01;
(4.4)执行恢复
将数据库恢复到truncate之前,这里恢复到2020/4/14 20:48:55
(4.4.1)将testdb1设置为mount状态
[oracle@source-node ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Tue Apr 14 20:54:18 2020 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount ORACLE instance started. Total System Global Area 584568832 bytes Fixed Size 2255432 bytes Variable Size 369100216 bytes Database Buffers 205520896 bytes Redo Buffers 7692288 bytes Database mounted.
(4.4.2)在备份服务器catalog上执行恢复操作
rman target sys/Oracle123@testdb1 catalog rman_testdb1/rman_testdb1 RMAN>SQL"ALTER SESSION SET NLS_LANGUAGE=''AMERICAN''"; RMAN>SQL"ALTER SESSION SET NLS_DATE_FORMAT=''YYYY-MM-DD HH24:MI:SS''"; RUN{ SET UNTIL TIME '2020-04-14 20:48:55'; RESTORE DATABASE; RECOVER DATABASE; }
(4.5)因为是不完全恢复,以resetlogs方式打开数据库
SQL> alter database open resetlogs; Database altered.
(4.6)确认数据已经还原回来
SQL> select * from lijiaman.test01; ID NAME ---------- ------------------------------ 1 a
个人觉得,使用恢复目录来保存RMAN信息的优点有:可以长久保存RMAN信息,可以保存RMAN脚本。
与将备份信息保存在控制文件相比,最大的差别是:使用catalog时,执行备份恢复都需要连接到两个数据库,而使用控制文件则只需连接待恢复的数据库。