Maison >base de données >Oracle >Exemple détaillé de migration de synchronisation des données Oracle via LogMiner

Exemple détaillé de migration de synchronisation des données Oracle via LogMiner

WBOY
WBOYavant
2022-03-29 11:57:292090parcourir

Cet article vous apporte des connaissances pertinentes sur Oracle, qui présente principalement les problèmes liés à la migration de la synchronisation des données Oracle via LogMiner. Voici une introduction à la façon de réaliser la synchronisation des données Oracle. J'espère que cela sera utile à tout le monde.

Exemple détaillé de migration de synchronisation des données Oracle via LogMiner

Tutoriel recommandé : "Tutoriel Oracle"

Écrit devant

Récemment, j'ai étudié comment réaliser la synchronisation des données entre les bases de données Oracle, et il y a en effet relativement peu d'informations sur Internet. Le meilleur outil de synchronisation de base de données Oracle est : GoldenGate, et GoldenGate est payant. Alors, existe-t-il un bon moyen de synchroniser les données Oracle ? C'est vrai, LogMiner est utilisé pour implémenter la migration de la synchronisation des données Oracle.

Processus de mise en œuvre

1. Créer un répertoire

Créez le répertoire /home/oracle/tools/oracle11g/oradata/orcl/LOGMNR sur le serveur pour stocker les informations du dictionnaire de la base de données, comme indiqué ci-dessous.

mkdir -p /home/oracle/tools/oracle11g/oradata/orcl/LOGMNR

2. Configurez LogMiner

Connectez-vous au serveur en tant qu'utilisateur Oracle et connectez-vous à la base de données Oracle en tant qu'administrateur de base de données, comme indiqué ci-dessous.

sqlplus /nolog
conn  / as sysdba

Ensuite, créez la configuration du dossier de dictionnaire comme indiqué ci-dessous.

CREATE DIRECTORY utlfile AS '/home/oracle/tools/oracle11g/oradata/orcl/LOGMNR';alter system set utl_file_dir='/home/oracle/tools/oracle11g/oradata/orcl/LOGMNR' scope=spfile;

Remarque : Puisque utl_file_dir n'existe que dans les fichiers, la portée est écrite en mode fichier "spfile", pas les deux.

3. Activez le mode d'ajout de journal

alter database add supplemental log data;

Ce n'est qu'après l'avoir activé que vous pourrez voir l'enregistrement de l'opération DML, sinon vous ne pourrez voir que le DML

4. Redémarrez la base de données

SHUTDOWN IMMEDIATE;  STARTUP;

5. . Créez un utilisateur de synchronisation de données

Créez un utilisateur de synchronisation de données s'il y en a déjà un, vous pouvez l'ignorer et accorder des autorisations directement.

create user SYNC identified by SYNC;  #如果存在用户,则不需要再次创建,直接授权即可GRANT CONNECT,RESOURCE,DBA,EXECUTE_CATALOG_ROLE TO SYNC;

6. Créer un dictionnaire de données

Passez à l'utilisateur qui souhaite synchroniser les données, connectez-vous en tant qu'administrateur de base de données et créez un fichier de dictionnaire de données comme indiqué ci-dessous.

conn SYNC/SYNC@orcl as sysdba;  EXECUTE dbms_logmnr_d.build(dictionary_filename => 'dictionary.ora', dictionary_location =>'/home/oracle/tools/oracle11g/oradata/orcl/LOGMNR');

La commande permettant de créer un dictionnaire de données peut également être implémentée via du code Java. Si elle est implémentée à l'aide de code Java, vous pouvez d'abord vous connecter à la base de données Oracle via JDBC, puis exécuter la commande suivante.

BEGIN
dbms_logmnr_d.build(dictionary_filename => 'dictionary.ora', dictionary_location =>'/home/oracle/tools/oracle11g/oradata/orcl/LOGMNR');  END;

7. Ajoutez les fichiers journaux qui doivent être analysés

Cette étape peut être effectuée sur la ligne de commande Oracle ou implémentée à l'aide du code Java.

Utilisez l'instruction SQL pour réaliser comme indiqué ci-dessous.

EXECUTE dbms_logmnr.add_logfile(logfilename=>'/home/oracle/tools/oracle11g/oradata/orcl/REDO01.LOG',options=>dbms_logmnr.NEW);  EXECUTE dbms_logmnr.add_logfile(logfilename=>'/home/oracle/tools/oracle11g/oradata/orcl/REDO02.LOG',options=>dbms_logmnr.ADDFILE);  EXECUTE dbms_logmnr.add_logfile(logfilename=>'/home/oracle/tools/oracle11g/oradata/orcl/REDO03.LOG',options=>dbms_logmnr.ADDFILE);

Lors de l'utilisation de l'analyse de code Java, l'instruction SQL utilisée est la suivante.

BEGIN  
dbms_logmnr.add_logfile(logfilename=>'/home/oracle/tools/oracle11g/oradata/orcl/REDO01.LOG',options=>dbms_logmnr.NEW);  dbms_logmnr.add_logfile(logfilename=>'/home/oracle/tools/oracle11g/oradata/orcl/REDO02.LOG',options=>dbms_logmnr.ADDFILE);  dbms_logmnr.add_logfile(logfilename=>'/home/oracle/tools/oracle11g/oradata/orcl/REDO03.LOG',options=>dbms_logmnr.ADDFILE);  END;

8. Afficher le fichier journal en cours d'utilisation

SELECT group#, sequence#, status, first_change#, first_time FROM V$log ORDER BY first_change#;

Celui avec le statut CURRENT est le fichier journal actuellement utilisé

9 Utilisez Lominer pour analyser le journal

EXECUTE dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/tools/oracle11g/oradata/orcl/LOGMNR/dictionary.ora');

Les instructions SQL utilisées lors de l'utilisation du code Java. analyse Comme indiqué ci-dessous.

BEGIN
dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/tools/oracle11g/oradata/orcl/LOGMNR/dictionary.ora'); END;

10. Afficher les résultats de l'analyse

SELECT sql_redo, sql_undo, seg_owner FROM v$logmnr_contents WHERE seg_name='EMP' AND seg_owner='SYNC';

Remarque : Les résultats de l'analyse dans la vue v$logmnr_contents n'existent que pendant la durée de vie de la session lorsque nous exécutons le processus 'dbms_logmrn.start_logmnr'. nouveaux journaux, vous devez rajouter le fichier journal d'analyse et utiliser LogMiner pour l'analyser.

11. Foire aux questions

(1) Si l'exception « l'identifiant 'SYS.DBMS_LOGMNR' doit être déclaré » se produit, vous devez accorder à l'utilisateur l'autorisation EXECUTE_CATALOG_ROLE après avoir créé l'utilisateur, comme indiqué ci-dessous.

GRANT CONNECT,RESOURCE,DBA,EXECUTE_CATALOG_ROLE TO SYNC;

(2) À ce stade, vous devez spécifier l'utilisateur correspondant pour seg_owner dans l'instruction de requête. Par exemple, si j'utilise l'utilisateur SYNC pour analyser via LogMiner, vous devez spécifier seg_owner comme utilisateur SYNC, comme indiqué. ci-dessous.

SELECT sql_redo, sql_undo, seg_owner FROM v$logmnr_contents WHERE seg_name='EMP' AND seg_owner='SYNC';

Tutoriel recommandé : "Tutoriel vidéo Oracle"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer