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.
Tutoriel recommandé : "Tutoriel Oracle"
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.
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
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.
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
SHUTDOWN IMMEDIATE; STARTUP;
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;
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;
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;
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é
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;
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.
(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!