-
Configuration d'Oracle 11g DataGuard
Oracle Database 11g Enterprise Edition version 11.1.0.6.0 - Production 64 bits
Serveur Red Hat Enterprise Linux version 5.3 (Tikanga)
1. Préparation de l'environnement de test
1. La base de données principale et la base de données de secours ont la même version d'Oracle et s'exécutent sur la même plateforme telle que Linux, mais le matériel du serveur peut être différent.
2. La base de données principale doit s'exécuter en mode archive et assurez-vous d'ouvrir FORCE LOGGING sur la base de données principale pour empêcher les utilisateurs d'écrire une restauration via nologging et d'autres méthodes, ce qui entraînerait l'échec de la transmission des opérations correspondantes à la base de données de secours.
3. Les bases de données principale et de secours peuvent être appliquées dans une architecture à instance unique ou RAC, et la même configuration de protection des données peut mélanger une réserve logique et une réserve physique.
4. Il est recommandé que la base de données utilise la même architecture de stockage. Par exemple, si ASM/OMF est utilisé pour le stockage, ASM/OMF doit être utilisé indépendamment du serveur principal ou du serveur de secours.
5. L'environnement de la bibliothèque de secours est le même que celui de la bibliothèque principale.
2. Ajustez la bibliothèque principale
1. Modifiez la base de données principale pour forcer le mode de journalisation
modifier la journalisation forcée de la base de données ;
2. Créez un mot de passe
orapwd file=$ORACLE_HOME/dbs/orapwtest mot de passe=entrées de test=3
3. Modifier les paramètres d'initialisation de la bibliothèque principale
db_unique_name = 'test01'
db_name spécifie le nom de la base de données, db_unique_name spécifie les différents noms de la base de données (base de données principale et base de données de secours), qui est l'identification unique de db_name. En fait, il s'agit de distinguer les bases de données ayant le même db_name pour faciliter l'application et la gestion. C'est un paramètre après 10g.
log_archive_config='DG_CONFIG=(test01,test02)'
test01, test02 est .db_unique_name
log_archive_dest_1='location=/u01/app/oracle/arch/test/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=test01'
log_archive_dest_2='SERVICE=test_db_02 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=test02'
Déterminer log_archive_dest_state_1
log_archive_dest_state_1= activer #La valeur par défaut est activer
log_archive_dest_state_2 = activer
/*Les parties suivantes sont utilisées pour basculer l'hôte vers la base de données de secours*/
fal_server=test_db_02
fal_client=test_db_01
veille_file_management=auto
#Si les fichiers ou chemins de base de données principal et secondaire sont différents
db_file_name_convert='/u01/app/oracle/oradata/test','/u01/app/oracle/oradata/test'
log_file_name_convert='/u01/app/oracle/oradata/test','/u01/app/oracle/oradata/test'
Il est recommandé que le fichier de paramètres utilise spfile, afin que les paramètres puissent être modifiés à l'aide des commandes de la bibliothèque non-stop.
4. Assurez-vous que la base de données s'exécute en mode archivelog
SQL> liste des journaux d'archives
Mode journal de base de données Pas de mode d'archivage
Archivage automatique Désactivé
Destination d'archivage USE_DB_RECOVERY_FILE_DEST
Séquence de journal en ligne la plus ancienne 2
Séquence de journal actuelle 4
Ajuster la base de données en mode archivelog
SQL> arrêt immédiat
SQL> montage au démarrage
SQL> modifier le journal d'archivage de la base de données ;
SQL> modifier la base de données ouverte ;
5. Créez un journal de veille sur la base de données principale (pour la commutation)
modifier la base de données récupérer la base de données de secours gérée annuler ;#Non exécuté
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 TAILLE 50M ;
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 TAILLE 50M ;
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 TAILLE 50M ;
mkdir -p /u01/app/oracle/standby/test
SQL> modifier la base de données ajouter un groupe de fichiers journaux de veille 4 ('/u01/app/oracle/standby/test/stdby_redo04.log') taille 50 M ;
SQL> modifier la base de données ajouter un groupe de fichiers journaux de veille 5 ('/u01/app/oracle/standby/test/stdby_redo05.log') taille 50 M ;
SQL> modifier la base de données ajouter un groupe de fichiers journaux de veille 6 ('/u01/app/oracle/standby/test/stdby_redo06.log') taille 50 M ;
SQL> modifier la base de données récupérer la base de données de secours gérée se déconnecter de la session ; #Non exécuté
3. Créer une base de données de secours
1. Créez un fichier pwd dans la base de données de secours
orapwd file=$ORACLE_HOME/dbs/orapwtest mot de passe=entrées de test=3
Le mot de passe doit être le même que celui de la base de données principale
2. Modifiez les paramètres d'initialisation de la base de données de secours qui sont différents de ceux de la base de données principale comme suit :
db_unique_name=test02
log_archive_dest_1='location=/u01/app/oracle/arch/test valid_for=(all_logfiles,all_roles) db_unique_name=test02'
log_archive_dest_2='service=test_db_01 ARCH ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=test01'
fal_client='test_db_02'
fal_server='test_db_01'
db_file_name_convert='/u01/app/oracle/oradata/TEST01/datafile','/u01/app/oracle/oradata/TEST02/datafile'
log_file_name_convert='/u01/app/oracle/oradata/TEST01/onlinelog','/u01/app/oracle/oradata/TEST02/onlinelog', '/u01/app/oracle/flash_recovery_area/TEST01/onlinelog','/u01 /app/oracle/flash_recovery_area/TEST01/onlinelog'
Après modification, utilisez l'instruction suivante pour afficher
SQL> sélectionnez * dans V$DATAGUARD_CONFIG ;
DB_UNIQUE_NAME
-------------------------------------------------- ---------------------------------------------
test01
test02
4. Créez les répertoires correspondants, le répertoire des fichiers de vidage, le répertoire des fichiers de données et le répertoire d'archives.
mkdir -p /u01/app/oracle/oradata
mkdir -p /u01/app/oracle/flash_recovery_area
mkdir -p /u01/app/oracle/arch/test
5. Configurez les fichiers Listener.ora et tnsnames.ora de la base de données de secours pour redémarrer l'écoute avec la base de données principale et vérifiez si tnsping peut passer.
6. Démarrez la base de données de secours à l'état non monté
SQL> nom de démarrage
7. Utilisez la fonction de duplication de RMAN pour créer une base de données de secours. 11g peut la copier directement dans la base de données de secours sans effectuer de sauvegarde :
RMAN> rman auxiliaire /
connecter la cible sys/test@test_db_01
dupliquer la base de données cible pour la veille dorecover nofilenamecheck ;
Vérifier l'état de la base de données en veille
SQL> sélectionnez database_role,protection_mode,protection_level dans v$database ;
SQL> select séquence#, appliqué à partir de v$archived_log trié par séquence# ;
8. Démarrez la bibliothèque principale de l'application Redo
SQL> modifier le journal d'archive système actuel ;
Base de données en veille, 11g peut ouvrir le journal des applications de la base de données en lecture seule
SQL> modifier la base de données ouverte en lecture seule ;
SQL> modifier la base de données récupérer la base de données de secours gérée se déconnecter de la session ;
Vous pouvez également utiliser Modifier la base de données pour récupérer la base de données de secours gérée en utilisant la déconnexion du fichier journal actuel du journal de l'application ;
S'il n'y a pas d'utilisation du fichier journal actuel, appliquez le journal archivé en veille.
L'utilisation du fichier journal actuel est appliquée lorsque le journal est transféré vers le journal redo de secours. Il est en temps réel et doit disposer d'un journal redo de secours.
4. Mode de gestion et mode lecture seule du serveur de secours
1. Démarrez en mode gestion
SQL>arrêt immédiat ;
SQL>nom de démarrage ;
SQL> modifier la base de données de secours pour le montage de la base de données ;
SQL> modifier la base de données récupérer la base de données de secours gérée, se déconnecter de la session ;
2. Démarrez en mode lecture seule
SQL>arrêt immédiat ;
SQL>nom de démarrage ;
SQL> modifier la base de données de secours pour le montage de la base de données ;
SQL> modifier la base de données ouverte en lecture seule ;
(3) Si vous passez en mode lecture seule en mode de récupération de gestion
SQL> récupérer l'annulation de la base de données de secours gérée ;
SQL> modifier la base de données ouverte en lecture seule ;
À ce stade, vous pouvez ajouter des fichiers de données temporaires à la base de données (ils ne sont pas sauvegardés lors de la sauvegarde à chaud)
comme
modifier la température de l'espace de table et ajouter le fichier temporaire '/u02/oradata/test/temp01.dbf' taille 100 M ;
5. Du mode lecture seule au mode de récupération gérée
SQL> récupérer la base de données de secours gérée en se déconnectant de la session ;
5. Basculer entre les bases de données actives et en veille
arrêt lsnrctl
SQL> modifier la validation de la base de données pour passer en veille physique avec arrêt de session ;
SQL> arrêt immédiat ;
SQL> montage au démarrage ;
SQL> modifier la base de données, récupérer la déconnexion de la base de données de secours gérée ;
lsnrctl démarrer
Sauvegarde
SQL> modifier la validation de la base de données pour passer au primaire ;
SQL> arrêt immédiat ;
SQL> démarrage
6. La pièce jointe ci-dessous est le contenu du fichier de configuration :
auditeur.ora
ECOUTEUR =
(DESCRIPTION=
(ADRESSE = (PROTOCOLE = TCP)(HÔTE = oracle6)(PORT = 1521))
)
tnsnames.ora
TEST_DB_02 =
(DESCRIPTION=
(ADDRESS_LIST =
(ADRESSE = (PROTOCOLE = TCP)(HÔTE = 192.168.202.5)(PORT = 1521))
)
(CONNECT_DONNÉES =
(SERVICE_NAME = test02)
)
)
TEST_DB_01 =
(DESCRIPTION=
(ADDRESS_LIST =
(ADRESSE = (PROTOCOLE = TCP)(HÔTE = 192.168.202.6)(PORT = 1521))
)
(CONNECT_DONNÉES =
(SERVICE_NAME = test01)
)
)
fichier p
test.__db_cache_size=1526726656
test.__java_pool_size=16777216
test.__large_pool_size=16777216
test.__oracle_base='/u01/app/oracle'#ORACLE_BASE défini à partir de l'environnement
test.__pga_aggregate_target=1342177280
test.__sga_target=2013265920
test.__shared_io_pool_size=0
test.__shared_pool_size=436207616
test.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/test/adump'
*.audit_trail='db'
*.compatible='11.1.0.0.0'
*.control_files='/u01/app/oracle/oradata/test/control01.ctl','/u01/app/oracle/oradata/test/control02.ctl','/u01/app/oracle/oradata/test/ contrôle03.ctl'
*.db_block_size=8192
*.db_domain='greatsky.com'
*.db_name='test'
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.db_unique_name='test01'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=testXDB)'
*.fal_client='TEST_DB_01'
*.fal_server='TEST_DB_02'
*.log_archive_config='dg_config=(test01,test02)'
*.log_archive_dest_1='location=/u01/app/oracle/arch/test/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=test01'
*.log_archive_dest_2='SERVICE=test_db_02 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=test02'
*.memory_target=3347054592
*.open_cursors=300
*.processus=150
*.remote_login_passwordfile='EXCLUSIF'
*.service_names='test.greatsky.com','test01.greatsky.com'
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'