ホームページ  >  記事  >  データベース  >  LogMiner を使用した Oracle データ同期移行の詳細な例

LogMiner を使用した Oracle データ同期移行の詳細な例

WBOY
WBOY転載
2022-03-29 11:57:292044ブラウズ

この記事では、Oracle に関する関連知識を提供します。主に、LogMiner を使用した Oracle データ同期の移行に関連する問題を紹介します。ここでは、Oracle データ同期を実現する方法について説明します。ヘルプ。

LogMiner を使用した Oracle データ同期移行の詳細な例

推奨チュートリアル: 「Oracle チュートリアル

前に書いてあります

最近、 Oracle データベース間のデータ同期を実現するために、インターネット上に存在する情報は実際には比較的少ないです。最適な Oracle データベース同期ツールは GoldenGate で、GoldenGate は有料です。 Oracle データを同期する良い方法はあるのでしょうか?そうです、LogMiner は Oracle データの同期移行を実現するために使用されます。

実装プロセス

1. ディレクトリの作成

サーバー上に /home/oracle/tools/oracle11g/oradata/orcl/ を作成します。次に示すように、データベースの辞書情報を保存する LOGMNR ディレクトリ。

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

2. LogMiner の構成

次に示すように、サーバーに oracle ユーザーとしてログインし、Oracle データベースに DBA としてログインします。

sqlplus /nolog
conn  / as sysdba

次に、以下のような辞書フォルダ構成を作成します。

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;

注: utl_file_dir はファイル内にのみ存在するため、スコープはファイル モード「spfile」で書き込まれます。両方ではありません。

3. ログ追加モードをオンにする

alter database add supplemental log data;

これをオンにした後でのみ、DML 操作レコードを表示できます。それ以外の場合は、DML のみを表示できます。

4. データベースを再起動します

SHUTDOWN IMMEDIATE;  STARTUP;

5. データ同期ユーザーの作成

データ同期ユーザーを作成します。すでに 1 つある場合は、それをスキップして直接アクセス許可を付与できます。

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

6. データ ディクショナリの作成

データを同期するユーザーに切り替え、DBA としてログインし、以下に示すようにデータ ディクショナリ ファイルを作成します。

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

データ ディクショナリを作成するコマンドは、Java コードを使用して実装することもできます。Java コードを使用して実装する場合は、まず JDBC 経由で Oracle データベースに接続し、次に次のコマンドを実行します。

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

7. 分析する必要があるログ ファイルを追加します

この手順は、Oracle コマンド ラインで実行することも、Java コードを使用して実装することもできます。

SQL ステートメントを使用して、次のことを実現します。

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);

Java コード解析を使用する場合、使用される SQL ステートメントは次のとおりです。

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. 使用中のログ ファイルを確認してください

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

ステータス CURRENT のログ ファイルは現在使用中です

9. 使用します。ログを分析するための Lominer

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

Java コード分析を使用する場合、使用される SQL ステートメントは次のとおりです。

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

10. 分析結果の表示

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

注: v$logmnr_contents ビューの分析結果は、プロセスを実行したときのセッション内にのみ表示されます。 'dbms_logmrn.start_logmnr' ライフサイクルに存在します。新しいログを表示する場合は、分析ログ ファイルを再度追加し、LogMiner を使用して分析する必要があります。

11. よくある質問

(1) 「識別子 'SYS.DBMS_LOGMNR' を宣言する必要があります」例外が発生した場合は、ユーザーに、以下に示すように EXECUTE_CATALOG_ROLE 権限を付与します。

GRANT CONNECT,RESOURCE,DBA,EXECUTE_CATALOG_ROLE TO SYNC;

(2) このとき、クエリ文の seg_owner に対応するユーザーを指定する必要があります。たとえば、SYNC ユーザーを使用して LogMiner で分析する場合、SYNC として seg_owner を指定する必要があります。以下に示すように、ユーザー。

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

推奨チュートリアル: 「Oracle ビデオ チュートリアル

以上がLogMiner を使用した Oracle データ同期移行の詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。