SlideShare une entreprise Scribd logo
1  sur  48
Télécharger pour lire hors ligne
Oracle LogMinerって
レプリケーションソフトでも
使われているけどどうなっている?
セッション中に覗いてみましょうか
株式会社インサイトテクノロジー
プロダクトコンサルティング事業部
森田 俊哉
Introduction
森田 俊哉 / Toshiya Morita
株式会社インサイトテクノロジー
プロダクトコンサルティング事業部部長
Past Experience:
• DBA & Database Condulting
• Unix Admin/Project Manager
• C Language Debugger Developer/Programmer
Agenda
 Oracleの処理の仕組み
 Oracle LogMinerって何?
 LogMiner検証
 実際にV$LOGMNR_CONTENTSを覗いてみる
 追加SUPPLEMENTAL LOGGING ?
 レプリケーションソフトは、LOGMinerを使ってる
 Attunity Replicate Demo
 Q&A
Oracle
処理の仕組み
9
Oracle Database の構成
Client Oracle DatabaseListener
REDO LogsControlfileData File
Server
Server
Server
SGA
LGWRCKPTSMON PMON DBWn
REDO LOG BufferDatabase BufferShared Pool
データベース・バッファ・
キャッシュ
データベースから取得されたデータ・ブロック(表、索引など)を
キャッシュする領域
REDOログ・バッファ ディスク(REDOログ・ファイル)に書き込むまでREDO情報を
キャッシュ(インスタンス・リカバリに使用)する領域
共有プール 一度実行されたSQL文の解析に使うデータや実行計画、および
ユーザー間で共有できる様々な構造をキャッシュする領域
ラージ・プール
(オプション)
特定の大きなプロセス(Oracleバックアップおよびリカバリ操作、
I/Oサーバー・プロセスなど)が使用できるオプション領域
Javaプール
(オプション)
データベース内でJavaを実行する場合に使用するオプション領域
(JVM内のすべてのセッション固有のJavaコードおよびデータ)
14
SGAコンポーネントの詳細
SGA
REDO LOG BufferDatabase BufferShared Pool
SQL文
実行計画
検索対象
データブロック
変更履歴
A→B
COMMIT
9
Oracle Database の処理(検索)
Client Oracle Database
REDO LogsControlfileData File
Server
SGA
LGWRCKPTSMON PMON DBWn
REDO LOG BufferDatabase BufferShared Pool
SQL解析情報
SQL実行計画
A
A
SELECT COLA
FROM TABA
データ
ディクショナリ
データベース内のオブジェクト定義や
ユーザ情報などを管理するための内部表
この情報を使って、実行前に解析を行う。
9
Oracle Database の処理(更新)
Client Oracle Database
REDO LogsControlfileData File
Server
SGA
LGWRCKPTSMON PMON DBWn
REDO LOG BufferDatabase BufferShared Pool
SQL解析情報
SQL実行計画
A
A
SELECT COLA
FROM TABA
データ
ディクショナリ
ロールバックの際に使用
するため変更情報を保存
B A
更新履歴
A→B
変更前に
変更履歴を残す
UPDATE TABA
SET COLA=‘B’
9
Oracle Database の処理(更新)
Client Oracle Database
REDO LogsControlfileData File
Server
SGA
LGWRCKPTSMON PMON DBWn
REDO LOG BufferDatabase BufferShared Pool
SQL解析情報
SQL実行計画
A
B
SELECT COLA
FROM TABA
データ
ディクショナリ
B A
更新履歴
A→B
データベースで行われた変更履歴
(DML,DDL処理)を格納
障害からの復旧に使用
UPDATE TABA
SET COLA=‘B’
COMMIT
メモリ上の変更をいつファイルに
反映したか(チェックポイント)
他の物理ファイルの場所
A
Oracle Database の処理(更新)
以下のテーブル及びデータが作成
1. CREATE TABLE INSIGHT
(COL1 VARCHAR2(1));
2. INSERT INTO INSIGHT VALULES(‘A’);
3. INSERT INTO INSIGHT VALULES(‘B’);
4. COMMIT;
INSIGHTテーブルの2件のデータは、
1つのデータブロックに格納
(Public LAN)
SGA
A
B block
Oracle Database の処理(更新)
 次の操作が行われた時を例にします。
(Public LAN)
SGA
A
B
A
B
1. セッション1でINSIGHTテーブルを
SELECT ・・ WHERE COL1=‘A’ FOR UPDATE
でデータ”A”をロックします
2. セッション2でINSIGHTテーブルを
SELECT ・・ WHERE COL1=‘B’ FOR UPDATE
でデータ”B”をロックします
3. セッション1でデータ”A”を”P”にUPDATE
UPDATE ・・ SET COL1=‘P’ WHERE COL1=‘A’
4. セッション2でデータ”B”を”Q”にUPDATE
UPDATE ・・ SET COL1=‘Q’ WHERE COL1=‘B’
5. セッション1でCOMMIT
6. セッション2でCOMMIT
TX
TX
P
Q
A
B
P
Q
block
UNDO
REDO
Oracle LogMiner って何…?
 REDOログと関連するデータ・ディクショナリに直接アクセス
 REDOログは、データベース上で実行されるすべてのアクティビティの完全な記録。
 データ・ディクショナリは、内部オブジェクト識別子およびタイプを外部名とデータ形式へ変
換する際に使用されます。
 LogMinerはデータベースで実行される各論理操作を動的なビュー
V$LOGMNR_CONTENTSに提供
 各行には、変更のロールバックに使用できるSQL UNDO文と、元の操作が詳細に記述されて
いるSQL REDO文が含まれます。
LOGMinerとは?
データ・ディクショナリ
REDOログ
V$LOGMNR_CONTENTS
 アプリケーション・レベルで発生したエラーなどデータベースの論
理的破損が発生した時期を特定。
 DML文の事後監査、コミットされたトランザクション、アップデー
トしたユーザー
 リカバリを行うために必要なSQLを特定。
 どの表にどんな更新が多いかなどの統計情報を取得し、チューニン
グ時の優先順位を決定することができる。
LOGMinerで出来ること
V$LOGMNR_CONTENTS(Oracleマニュアルから一部抜粋)
列 データ型 説明
SCN NUMBER データベースに変更が加えられた時点のシステム変更番号
(SCN)
TIMESTAMP DATE データベースに変更が加えられた時点のタイムスタンプ
SESSION# NUMBER 変更を行ったセッションのセッション番号
SERIAL# NUMBER 変更を行ったセッションのシリアル番号
USERNAME VARCHAR2(30) トランザクションを実行したユーザーの名前
OS_USERNAME VARCHAR2(4000) オペレーティング・システムのユーザー名
SQL_REDO VARCHAR2(4000) 再構成されたSQL文で、
変更を実行した元のSQL文と同じ。
SQL_UNDO VARCHAR2(4000) 再構成されたSQL文で、
変更を実行した元の文の結果を取り消すために使用できる
LOGMiner検証
実際にV$LOGMNR_CONTENTSを覗いてみる
 検証環境
 OS:Oracle Enterprise Linux(Red Hat 4.1.2)
 DB:Oracle11g(11.2.0.1)
 検証スキーマ
 SCOTT
 テーブル
 EMP
 DEPT
 SALGRADE
LOGMiner検証~1.検証環境
LOGMiner検証~2.検証スキーマ
EMP
EMPNO NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
DEPT
DEPTNO CHAR(5)
DNAME VARCHAR2(40)
LOC CHAR(3)
SALGRADE
GRADE NUMBER(38,10)
LOSAL NUMBER(38,10)
HISAL NUMBER(38,10)
DEPTNO DNAME LOC
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 SALES2 OSAKA
60 SALES3 TOKYO
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
7839 KING PRESIDENT 1981/11/17 5,000.00 10
7782 CLARK MANAGER 7839 1981/06/09 2,450.00 10
7934 MILLER CLERK 7782 1982/01/23 1,300.00 10
7566 JONES MANAGER 7839 1981/04/02 2,975.00 20
7788 SCOTT ANALYST 7566 1987/04/19 3,000.00 20
7876 ADAMS CLERK 7788 1987/05/23 1,100.00 20
7902 FORD ANALYST 7566 1981/12/03 3,000.00 20
7369 SMITH CLERK 7902 1980/12/17 800.00 20
7698 BLAKE MANAGER 7839 1981/05/01 2,850.00 30
7900 JAMES CLERK 7698 1981/12/03 950.00 30
7499 ALLEN SALESMAN 7698 1981/02/20 1,600.00 300.00 30
7521 WARD SALESMAN 7698 1981/02/22 1,250.00 500.00 30
7654 MARTIN SALESMAN 7698 1981/09/28 1,250.00 1,400.00 30
7844 TURNER SALESMAN 7698 1981/09/08 1,500.00 0.00 30
GRADE LOSAL HISAL
1 700 1,200
2 1,201 1,400
3 1,401 2,000
4 2,001 3,000
5 3,001 9,999
LOGMiner検証~3.検証データ
EMP表
SALGRADE表 DEPT表
 SUPPLEMENTAL LOGGINGの設定
 まずは、現在の設定状態を確認
SQL> select SUPPLEMENTAL_LOG_DATA_MIN from v$database;
SUPPLEMENTAL_LOG_DATA_MIN
------------------------------
NO
 デフォルトでは、無効なので有効化
SQL> alter database add supplemental log data;
データベースが変更されました。
 実際に変更されたか確認
SQL> select SUPPLEMENTAL_LOG_DATA_MIN from v$database;
SUPPLEMENTAL_LOG_DATA_MIN
------------------------------
YES
LOGMiner検証~4.SUPPLEMENTAL LOGGING
 REDOログ切替
 現在のREDOログの確認
SQL> SELECT L.GROUP#, F.MEMBER, L.STATUS
FROM V$LOG L, V$LOGFILE F WHERE L.GROUP#=F.GROUP#;
GROUP# MEMBER STATUS
-----------------------------------------------------------------------------------------------------------------------
1 /oradata/ora11g/redo1/redo01_1.log INACTIVE
1 /oradata/ora11g/redo2/redo01_2.log INACTIVE
2 /oradata/ora11g/redo1/redo02_1.log INACTIVE
2 /oradata/ora11g/redo2/redo02_2.log INACTIVE
3 /oradata/ora11g/redo1/redo03_1.log CURRENT
3 /oradata/ora11g/redo2/redo03_2.log CURRENT
 REDOログの切替
SQL> ALTER SYSTEM SWITCH LOGFILE;
LOGMiner検証~5.REDOログの切替
 LOG Miner起動
 分析対象REDOログを指定(今回は、オンラインREDOログ)
SQL> execute dbms_logmnr.add_logfile(logfilename => -
> '/home/ora102/oracle/oradata/ora102/redo01.log' -
> ,options => dbms_logmnr.new);
PL/SQLプロシージャが正常に完了しました。
 LOG Miner起動
SQL> execute dbms_logmnr.start_logmnr(options => -
> dbms_logmnr.dict_from_online_catalog);
PL/SQLプロシージャが正常に完了しました。
LOGMiner検証~6.LOG Miner起動
 データ更新
 EMPテーブル更新
SQL> DELETE FROM EMP WHERE EMPNO=7844;
SQL> ROLLBACK;
SQL> UPDATE EMP SET SAL=SAL*1.1 WHERE EMPNO=7844;
SQL> DELETE FROM EMP WHERE DEPTNO=20;
SQL> COMMIT;
 SALGRADEテーブル更新
SQL> DELETE FROM SALGRADE WHERE GRADE=5;
SQL> ROLLBACK;
SQL> UPDATE SALGRADE SET HISAL=20000 WHERE GRADE=5;
SQL> COMMIT;
LOGMiner検証~7.データ更新処理
SQL V$LOGMNR_CONTENTS / SQL_REDO
DELETE FROM EMP
WHERE EMPNO=7844;
delete from "SCOTT"."EMP"
where "EMPNO" = '7844' and "ENAME" = 'TURNER'
and "JOB" = 'SALESMAN' and "MGR" = '7698'
and "HIREDATE" = TO_DATE('81-09-08', 'RR-MM-DD')
and "SAL" = '1500' and "COMM" = '0' and "DEPTNO" = '30'
and ROWID = 'AAAD8yAAEAAA+k7AAN';
ROLLBACK;
insert into "SCOTT"."EMP“
("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO")
values ('7844','TURNER','SALESMAN','7698',TO_DATE('81-09-08', 'RR-
MM-DD'),'1500','0','30');
UPDATE EMP
SET SAL=SAL*1.1
WHERE EMPNO=7844;
update "SCOTT"."EMP"
set "SAL" = '1650'
where "SAL" = '1500'
and ROWID = 'AAD8yAAEAAA+k7AAN';
DELETE FROM
SALGRADE WHERE
GRADE=5;
delete from "SCOTT"."SALGRADE"
where "GRADE" = '5' and "LOSAL" = '3001' and "HISAL" = '9999‘
and ROWID = 'AAAD7dAAEAAAADMAAI';
ROLLBACK;
insert into "SCOTT"."SALGRADE"("GRADE","LOSAL","HISAL")
values ('5','3001','9999');
UPDATE SALGRADE
SET HISAL=20000
WHERE GRADE=5;
update "SCOTT"."SALGRADE" set "HISAL" = '20000‘
where "HISAL" = '9999‘
and ROWID = 'AAAD7dAAEAAAADMAAI';
V$LOGMNR_CONTENTSの内容
計算式は、固定値に変換されて生成
SQL V$LOGMNR_CONTENTS / SQL_REDO
DELTE FROM EMP
WHERE DEPTNO=20;
delete from "SCOTT"."EMP" where "EMPNO" = '7566'
and “ENAME” = ‘JONES’ and "JOB" = 'MANAGER' and "MGR" = '7839'
and "HIREDATE" = TO_DATE('81-04-02', 'RR-MM-DD')
and "SAL" = '2975' and "COMM" IS NULL and "DEPTNO" = '20'
and ROWID = 'AAAD8yAAEAAA+k7AAD';
delete from "SCOTT"."EMP" where "EMPNO" = '7788'
and "ENAME" = 'SCOTT' and "JOB" = 'ANALYST' and "MGR" = '7566'
and "HIREDATE" = TO_DATE('87-04-19', 'RR-MM-DD')
and "SAL" = '3000' and "COMM" IS NULL and "DEPTNO" = '20'
and ROWID = 'AAAD8yAAEAAA+k7AAE';
delete from "SCOTT"."EMP" where "EMPNO" = '7876'
and "ENAME" = 'ADAMS' and "JOB" = 'CLERK' and "MGR" = '7788'
and "HIREDATE" = TO_DATE('87-05-23', 'RR-MM-DD')
and "SAL" = '1100' and "COMM" IS NULL and "DEPTNO" = '20'
and ROWID = 'AAAD8yAAEAAA+k7AAF';
delete from "SCOTT"."EMP" where "EMPNO" = '7902'
and "ENAME" = 'FORD' and "JOB“ = 'ANALYST' and "MGR" = '7566'
and "HIREDATE" = TO_DATE('81-12-03', 'RR-MM-DD')
and "SAL" = '3000' and "COMM" IS NULL and "DEPTNO" = '20'
and ROWID = 'AAAD8yAAEAAA+k7AAG';
delete from "SCOTT"."EMP" where "EMPNO" = '7369'
and "ENAME" = 'SMITH' and "JOB" = 'CLERK' and "MGR" = '7902'
and "HIREDATE" = TO_DATE('80-12-17', 'RR-MM-DD')
and "SAL" = '800' and "COMM" IS NULL and "DEPTNO" = '20'
and ROWID = 'AAAD8yAAEAAA+k7AAH';
V$LOGMNR_CONTENTSの内容
SQL文が5レコード更新すると各レコード毎に更新するSQLが生成される
LOGMiner検証
追加SUPPLEMENTAL LOGGING ?
 追加SUPPLEMENTAL LOGGINGの設定
 最小サプリメンタル・ロギングは分析するログ・ファイルを生成する前に必
ず有効にしておかなければならない。
 以下はマニュアルからの抜粋となりますが補助的なカラムが必要となる例を
示しています。
LOGMiner検証~8.追加SUPPLEMENTAL LOGGING
1.再構築されたSQL文を別のデータベースに適用するアプリケーションでは、行を一意に識別す
る列(主キーなど)で更新文を識別する必要があります。
ROWID はデータベースごとに異なり、他のデータベースでは意味を持たないため
V$LOGMNR_CONTENTS ビューによって返される再構築されたSQL に示されるROWID では識
別できません。
2.アプリケーションは、行変更の追跡をより効率的にするために、変更された列のみでなく、行
全体のビフォア・イメージを記録する必要がある場合があります。
レプリケーションソフトウェア
Source DB Target DB
EMP
DEPT
SALGRADE
EMP
DEPT
SALGRADE
同期
Attunity Replicate Architecture
SQL加工 SQL実行
Source DB Target DB
SQL
Data
Capture
SQL
Data
Apply
V$LOGMNR_CONTENTS
EMP
DEPT
SALGRADE
EMP
DEPT
SALGRADE
 追加SUPPLEMENTAL LOGGINGの設定
 まずは、現在の設定状態を確認
SQL> SELECT LOG_GROUP_NAME, TABLE_NAME, ALWAYS,
LOG_GROUP_TYPE FROM USER_LOG_GROUPS;
レコードが選択されませんでした。
 デフォルトでは、設定されていないなので有効化
SQL> ALTER TABLE EMP ADD SUPPLEMENTAL LOG DATA(PRIMARY KEY) COLUMNS;
表が変更されました。
SQL> ALTER TABLE DEPT ADD SUPPLEMENTAL LOG DATA(PRIMARY KEY) COLUMNS;
表が変更されました。
SQL> ALTER TABLE SALGRADE ADD SUPPLEMENTAL LOG DATA(ALL) COLUMNS;
表が変更されました。
LOGMiner検証~9.SUPPLEMENTAL LOGGING
 追加SUPPLEMENTAL LOGGINGの設定
 実際に変更されたか確認
SQL> SELECT LOG_GROUP_NAME, TABLE_NAME, ALWAYS,
LOG_GROUP_TYPE FROM USER_LOG_GROUPS;
LOG_GROUP_NAME TABLE_NAME ALWAYS LOG_GROUP_TYPE
----------------------- --------------------- ----------- -------------------
SYS_C004204 EMP ALWAYS PRIMARY KEY LOGGING
SYS_C004205 DEPT ALWAYS PRIMARY KEY LOGGING
SYS_C004206 SALGRAD ALWAYS ALL COLUMN LOGGING
LOGMiner検証~9.SUPPLEMENTAL LOGGING
SQL V$LOGMNR_CONTENTS / SQL_REDO
DELETE FROM EMP
WHERE EMPNO=7844;
delete from "SCOTT"."EMP"
where "EMPNO" = '7844' and "ENAME" = 'TURNER'
and “JOB” = ‘SALESMAN’ and "MGR" = '7698'
and "HIREDATE" = TO_DATE('81-09-08', 'RR-MM-DD')
and "SAL" = '1500' and "COMM" = '0' and "DEPTNO" = '30'
and ROWID = 'AAAD8yAAEAAA+k8AAN';
ROLLBACK;
insert into
"SCOTT"."EMP"("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","CO
MM","DEPTNO")
values ('7844','TURNER','SALESMAN','7698',TO_DATE('81-09-08', 'RR-
MM-DD'),'1500','0','30');
UPDATE EMP
SET SAL=SAL*1.1
WHERE EMPNO=7844;
update "SCOTT"."EMP"
set "SAL" = '1650'
where "EMPNO" = '7844' and "SAL" = '1500'
and ROWID = 'AAAD7cAAEAAAACUAAb';
DELETE FROM
SALGRADE WHERE
GRADE=5;
delete from "SCOTT"."SALGRADE"
where "GRADE" = '5' and "LOSAL" = '3001' and "HISAL" = '9999'
and ROWID = 'AAAD7dAAEAAAADMAAI';
ROLLBACK;
insert into "SCOTT"."SALGRADE"("GRADE","LOSAL","HISAL")
values ('5','3001','9999');
UPDATE SALGRADE
SET HISAL=20000
WHERE GRADE=5;
update "SCOTT"."SALGRADE" set "HISAL" = '20000'
where "GRADE" = '5' and "LOSAL"= '3001' and "HISAL" = '9999'
and ROWID = 'AAAD7dAAEAAAADMAAI';
V$LOGMNR_CONTENTSの内容(追加設定後)
プライマリーキーまたは、全カラムの条件が付加されて生成
V$LOGMNR_CONTENTSの内容(追加設定後)
プライマリーキーまたは、全カラムの条件が付加されて生成
SQL V$LOGMNR_CONTENTS / SQL_REDO
DELTE FROM EMP
WHERE DEPTNO=20;
delete from "SCOTT"."EMP" where "EMPNO" = '7566'
and “ENAME” = ‘JONES’ and "JOB" = 'MANAGER' and "MGR" = '7839'
and "HIREDATE" = TO_DATE('81-04-02', 'RR-MM-DD')
and "SAL" = '2975' and "COMM" IS NULL and "DEPTNO" = '20'
and ROWID = 'AAAD8yAAEAAA+k7AAD';
delete from "SCOTT"."EMP" where "EMPNO" = '7788'
and "ENAME" = 'SCOTT' and "JOB" = 'ANALYST' and "MGR" = '7566'
and "HIREDATE" = TO_DATE('87-04-19', 'RR-MM-DD')
and "SAL" = '3000' and "COMM" IS NULL and "DEPTNO" = '20'
and ROWID = 'AAAD8yAAEAAA+k7AAE';
delete from "SCOTT"."EMP" where "EMPNO" = '7876'
and "ENAME" = 'ADAMS' and "JOB" = 'CLERK' and "MGR" = '7788'
and "HIREDATE" = TO_DATE('87-05-23', 'RR-MM-DD')
and "SAL" = '1100' and "COMM" IS NULL and "DEPTNO" = '20'
and ROWID = 'AAAD8yAAEAAA+k7AAF';
delete from "SCOTT"."EMP" where "EMPNO" = '7902'
and "ENAME" = 'FORD' and "JOB“ = 'ANALYST' and "MGR" = '7566'
and "HIREDATE" = TO_DATE('81-12-03', 'RR-MM-DD')
and "SAL" = '3000' and "COMM" IS NULL and "DEPTNO" = '20'
and ROWID = 'AAAD8yAAEAAA+k7AAG';
delete from "SCOTT"."EMP" where "EMPNO" = '7369'
and "ENAME" = 'SMITH' and "JOB" = 'CLERK' and "MGR" = '7902'
and "HIREDATE" = TO_DATE('80-12-17', 'RR-MM-DD')
and "SAL" = '800' and "COMM" IS NULL and "DEPTNO" = '20'
and ROWID = 'AAAD8yAAEAAA+k7AAH';
 プライマリキーを持つ表への追加SUPPLEMENTAL LOGGINGの設定
LOGMiner検証~9.SUPPLEMENTAL LOGGING
UPDATE EMP SET SAL=SAL*1.1
WHERE EMPNO=7844;
update "SCOTT"."EMP"
set "SAL" = '1650'
where "SAL" = '1500'
and ROWID = 'AAAD7cAAEAAAACUAAb';
update "SCOTT"."EMP"
set "SAL" = '1650'
where "EMPNO" = '7844' and "SAL" = '1500'
and ROWID = 'AAAD7cAAEAAAACUAAb';
ADD SUPPLEMENTAL LOG DATA
(PRIMARY KEY) COLUMNS
ALTER DATABASE
ADD SUPPLEMENTAL LOG DATA
 プライマリキーを持たない表への追加SUPPLEMENTAL LOGGINGの設定
LOGMiner検証~9.SUPPLEMENTAL LOGGING
UPDATE SALGRADE SET HISAL=20000
WHERE GRADE=5;
update "SCOTT"."SALGRADE"
set "HISAL" = '20000‘
where "HISAL" = '9999‘
and ROWID = 'AAAD7dAAEAAAADMAAI';
update "SCOTT"."SALGRADE"
set "HISAL" = '20000'
where "GRADE" = '5' and "LOSAL"= '3001'
and "HISAL" = '9999'
and ROWID = 'AAAD7dAAEAAAADMAAI';
ADD SUPPLEMENTAL LOG DATA
(ALL) COLUMNS
ALTER DATABASE
ADD SUPPLEMENTAL LOG DATA
レプリケーションソフトは、LOGMinerを使ってる
これで実現出来る !?
 プライマリキーを持つ表への追加SUPPLEMENTAL LOGGINGの設定
LOGMiner検証~9.SUPPLEMENTAL LOGGING
UPDATE EMP SET SAL=SAL*1.1
WHERE EMPNO=7844;
update "SCOTT"."EMP"
set "SAL" = '1650'
where "SAL" = '1500'
and ROWID = 'AAAD7cAAEAAAACUAAb';
update "SCOTT"."EMP"
set "SAL" = '1650'
where "EMPNO" = '7844' and "SAL" = '1500'
and ROWID = 'AAAD7cAAEAAAACUAAb';
ADD SUPPLEMENTAL LOG DATA
(PRIMARY KEY) COLUMNS
ALTER DATABASE
ADD SUPPLEMENTAL LOG DATA
 プライマリキーを持たない表への追加SUPPLEMENTAL LOGGINGの設定
LOGMiner検証~9.SUPPLEMENTAL LOGGING
UPDATE SALGRADE SET HISAL=20000
WHERE GRADE=5;
update "SCOTT"."SALGRADE"
set "HISAL" = '20000‘
where "HISAL" = '9999‘
and ROWID = 'AAAD7dAAEAAAADMAAI';
update "SCOTT"."SALGRADE"
set "HISAL" = '20000'
where "GRADE" = '5' and "LOSAL"= '3001'
and "HISAL" = '9999'
and ROWID = 'AAAD7dAAEAAAADMAAI';
ADD SUPPLEMENTAL LOG DATA
(ALL) COLUMNS
ALTER DATABASE
ADD SUPPLEMENTAL LOG DATA
Attunity Replicate Architecture
SQL加工 SQL実行
Source DB Target DB
SQL
Data
Capture
SQL
Data
Apply
V$LOGMNR_CONTENTS
EMP
DEPT
SALGRADE
EMP
DEPT
SALGRADE
SQL
SQL
SQL
複数セッションからSQLが実行
SESSION 10:00 10:01 10:02 10:03 10:04 10:05 10:06
INSERT INSERT UPDATE ROLLBACK DELETE INSERT COMMIT
INSERT UPDATE COMMIT
DELETE INSERT COMMIT DELETE INSERT COMMIT
V$LOGMNR_CONTENTS(複数セッションからSQL実行した場合)
TIMESTAMP SESSION# SERIAL# USERNAME SQL_REDO
6/20 10:00 1 1 SCOTT INSERT
6/20 10:00 3 3 SCOTT DELETE
6/20 10:01 1 1 SCOTT INSERT
6/20 10:01 2 2 SCOTT INSERT
6/20 10:01 3 3 SCOTT INSERT
6/20 10:02 1 1 SCOTT UPDATE
6/20 10:02 3 3 SCOTT COMMIT
6/20 10:03 1 1 SCOTT ROLLBACK
6/20 10:03 2 2 SCOTT UPDATE
6/20 10:03 3 3 SCOTT DELETE
6/20 10:04 1 1 SCOTT DELETE
6/20 10:04 2 2 SCOTT COMMIT
6/20 10:04 3 3 SCOTT INSERT
6/20 10:05 1 1 SCOTT INSERT
6/20 10:05 3 3 SCOTT COMMIT
6/20 10:06 1 1 SCOTT COMMIT
 V$LOGMNR_CONTENTSで出力されている順序でそのままSQLを実
行する?
 途中でROLLBACKされる場合もありレプリケーションターゲットにトラン
ザクションを混合してSQLを実行することは出来ない
 複数セッションをターゲットデータベースに生成してSQLをセッシ
ョン毎に実行する?
 大量のセッションがターゲットに生成されてしまう可能性が高い
 ソースデータベースで実行されたSQLが複数のSQLとしてキャプチ
ャーされる
 ターゲットデータベースに多数のSQLが実行されて高負荷、長時間処理を
要する可能性がある
V$LOGMNR_CONTENTSからレプリケーション
Demonstration
Attunity Replicate Architecture
Attunity Replicate
Replication ServerBulk Reader
CDC Agent
Stream Loader
Source DB Target DB
SQL
Data
Capture
SQL
Data
Apply
V$LOGMNR_CONTENTS
EMP
DEPT
SALGRADE
EMP
DEPT
SALGRADE
V$LOGMNR_CONTENTS(複数セッションからSQL実行した場合)
TIMESTAMP SESSION# SERIAL# USERNAME SQL_REDO
6/20 10:00 1 1 SCOTT INSERT
6/20 10:01 1 1 SCOTT INSERT
6/20 10:02 1 1 SCOTT UPDATE
6/20 10:03 1 1 SCOTT ROLLBACK
6/20 10:00 3 3 SCOTT DELETE
6/20 10:01 3 3 SCOTT INSERT
6/20 10:02 3 3 SCOTT COMMIT
6/20 10:01 2 2 SCOTT INSERT
6/20 10:03 2 2 SCOTT UPDATE
6/20 10:04 2 2 SCOTT COMMIT
6/20 10:03 3 3 SCOTT DELETE
6/20 10:04 3 3 SCOTT INSERT
6/20 10:05 3 3 SCOTT COMMIT
6/20 10:04 1 1 SCOTT DELETE
6/20 10:05 1 1 SCOTT INSERT
6/20 10:06 1 1 SCOTT COMMIT
1
2
3
4
5
LOGMinerを活用することで
レプリケーションの構築も可能!?
Oracle LOGMinerを活用して
Oracleの動作を確認してみよう

Contenu connexe

Tendances

【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介オラクルエンジニア通信
 
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニングしばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニングオラクルエンジニア通信
 
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説Masahiko Sawada
 
Oracle Gen 2 Exadata Cloud@Customer:サービス概要のご紹介 [2021年7月版]
Oracle Gen 2 Exadata Cloud@Customer:サービス概要のご紹介 [2021年7月版]Oracle Gen 2 Exadata Cloud@Customer:サービス概要のご紹介 [2021年7月版]
Oracle Gen 2 Exadata Cloud@Customer:サービス概要のご紹介 [2021年7月版]オラクルエンジニア通信
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...NTT DATA Technology & Innovation
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションMasahiko Sawada
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)NTT DATA Technology & Innovation
 
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...NTT DATA Technology & Innovation
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)NTT DATA Technology & Innovation
 
GoldenGateテクニカルセミナー4「テクニカルコンサルタントが語るOracle GoldenGate現場で使える極意」(2016/5/11)
GoldenGateテクニカルセミナー4「テクニカルコンサルタントが語るOracle GoldenGate現場で使える極意」(2016/5/11)GoldenGateテクニカルセミナー4「テクニカルコンサルタントが語るOracle GoldenGate現場で使える極意」(2016/5/11)
GoldenGateテクニカルセミナー4「テクニカルコンサルタントが語るOracle GoldenGate現場で使える極意」(2016/5/11)オラクルエンジニア通信
 

Tendances (20)

【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
 
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニングしばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
 
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
 
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
 
Oracle Gen 2 Exadata Cloud@Customer:サービス概要のご紹介 [2021年7月版]
Oracle Gen 2 Exadata Cloud@Customer:サービス概要のご紹介 [2021年7月版]Oracle Gen 2 Exadata Cloud@Customer:サービス概要のご紹介 [2021年7月版]
Oracle Gen 2 Exadata Cloud@Customer:サービス概要のご紹介 [2021年7月版]
 
Exadata X8M-2 KVM仮想化ベストプラクティス
Exadata X8M-2 KVM仮想化ベストプラクティスExadata X8M-2 KVM仮想化ベストプラクティス
Exadata X8M-2 KVM仮想化ベストプラクティス
 
Oracle GoldenGate FAQ
Oracle GoldenGate FAQOracle GoldenGate FAQ
Oracle GoldenGate FAQ
 
Oracle Data Guard による高可用性
Oracle Data Guard による高可用性Oracle Data Guard による高可用性
Oracle Data Guard による高可用性
 
DataGuard体験記
DataGuard体験記DataGuard体験記
DataGuard体験記
 
使ってみませんか?pg_hint_plan
使ってみませんか?pg_hint_plan使ってみませんか?pg_hint_plan
使ってみませんか?pg_hint_plan
 
OCI GoldenGate Overview 2021年4月版
OCI GoldenGate Overview 2021年4月版OCI GoldenGate Overview 2021年4月版
OCI GoldenGate Overview 2021年4月版
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 
Oracle GoldenGate Cloud Serviceユーザーズガイド
Oracle GoldenGate Cloud ServiceユーザーズガイドOracle GoldenGate Cloud Serviceユーザーズガイド
Oracle GoldenGate Cloud Serviceユーザーズガイド
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
 
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
 
Oracle GoldenGate 概要 2020年11月版
Oracle GoldenGate 概要 2020年11月版Oracle GoldenGate 概要 2020年11月版
Oracle GoldenGate 概要 2020年11月版
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
 
GoldenGateテクニカルセミナー4「テクニカルコンサルタントが語るOracle GoldenGate現場で使える極意」(2016/5/11)
GoldenGateテクニカルセミナー4「テクニカルコンサルタントが語るOracle GoldenGate現場で使える極意」(2016/5/11)GoldenGateテクニカルセミナー4「テクニカルコンサルタントが語るOracle GoldenGate現場で使える極意」(2016/5/11)
GoldenGateテクニカルセミナー4「テクニカルコンサルタントが語るOracle GoldenGate現場で使える極意」(2016/5/11)
 

En vedette

IT業界のサバイバビリティ - Oracle LOVERS 勉強会 #12 / 18-Jun-2009
IT業界のサバイバビリティ - Oracle LOVERS 勉強会 #12 / 18-Jun-2009IT業界のサバイバビリティ - Oracle LOVERS 勉強会 #12 / 18-Jun-2009
IT業界のサバイバビリティ - Oracle LOVERS 勉強会 #12 / 18-Jun-2009Hiroshi Sekiguchi
 
20140620 dbts osaka_redshift_v1.0_slideshare
20140620 dbts osaka_redshift_v1.0_slideshare20140620 dbts osaka_redshift_v1.0_slideshare
20140620 dbts osaka_redshift_v1.0_slideshareJun Okubo
 
SQLチューニング総合診療Oracle CloudWorld出張所
SQLチューニング総合診療Oracle CloudWorld出張所SQLチューニング総合診療Oracle CloudWorld出張所
SQLチューニング総合診療Oracle CloudWorld出張所Hiroshi Sekiguchi
 
Riak: 本物の高可用性を実現する仕組みとは?
Riak: 本物の高可用性を実現する仕組みとは?Riak: 本物の高可用性を実現する仕組みとは?
Riak: 本物の高可用性を実現する仕組みとは?Takahiko Sato
 
Oracle cloudworld な〜んでだ?#3
Oracle cloudworld な〜んでだ?#3Oracle cloudworld な〜んでだ?#3
Oracle cloudworld な〜んでだ?#3Hiroshi Sekiguchi
 
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニングdb tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニングHiroshi Sekiguchi
 
[D35] インメモリーデータベース徹底比較 by Komori
[D35] インメモリーデータベース徹底比較 by Komori[D35] インメモリーデータベース徹底比較 by Komori
[D35] インメモリーデータベース徹底比較 by KomoriInsight Technology, Inc.
 

En vedette (7)

IT業界のサバイバビリティ - Oracle LOVERS 勉強会 #12 / 18-Jun-2009
IT業界のサバイバビリティ - Oracle LOVERS 勉強会 #12 / 18-Jun-2009IT業界のサバイバビリティ - Oracle LOVERS 勉強会 #12 / 18-Jun-2009
IT業界のサバイバビリティ - Oracle LOVERS 勉強会 #12 / 18-Jun-2009
 
20140620 dbts osaka_redshift_v1.0_slideshare
20140620 dbts osaka_redshift_v1.0_slideshare20140620 dbts osaka_redshift_v1.0_slideshare
20140620 dbts osaka_redshift_v1.0_slideshare
 
SQLチューニング総合診療Oracle CloudWorld出張所
SQLチューニング総合診療Oracle CloudWorld出張所SQLチューニング総合診療Oracle CloudWorld出張所
SQLチューニング総合診療Oracle CloudWorld出張所
 
Riak: 本物の高可用性を実現する仕組みとは?
Riak: 本物の高可用性を実現する仕組みとは?Riak: 本物の高可用性を実現する仕組みとは?
Riak: 本物の高可用性を実現する仕組みとは?
 
Oracle cloudworld な〜んでだ?#3
Oracle cloudworld な〜んでだ?#3Oracle cloudworld な〜んでだ?#3
Oracle cloudworld な〜んでだ?#3
 
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニングdb tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
 
[D35] インメモリーデータベース徹底比較 by Komori
[D35] インメモリーデータベース徹底比較 by Komori[D35] インメモリーデータベース徹底比較 by Komori
[D35] インメモリーデータベース徹底比較 by Komori
 

Similaire à [B31] LOGMinerってレプリケーションソフトで使われているけどどうなってる? by Toshiya Morita

[db tech showcase Sapporo 2015] B15:ビッグデータ/クラウドにデータ連携自由自在 (オンプレミス ↔ クラウド ↔ クラ...
[db tech showcase Sapporo 2015] B15:ビッグデータ/クラウドにデータ連携自由自在 (オンプレミス ↔ クラウド ↔ クラ...[db tech showcase Sapporo 2015] B15:ビッグデータ/クラウドにデータ連携自由自在 (オンプレミス ↔ クラウド ↔ クラ...
[db tech showcase Sapporo 2015] B15:ビッグデータ/クラウドにデータ連携自由自在 (オンプレミス ↔ クラウド ↔ クラ...Insight Technology, Inc.
 
20151120_ビッグデータ/クラウドにデータ連携自由自在 “オンプレミス ↔ クラウド ↔ クラウド” by 株式会社インサイトテクノロジー 森田俊哉
20151120_ビッグデータ/クラウドにデータ連携自由自在 “オンプレミス ↔ クラウド ↔ クラウド” by 株式会社インサイトテクノロジー 森田俊哉20151120_ビッグデータ/クラウドにデータ連携自由自在 “オンプレミス ↔ クラウド ↔ クラウド” by 株式会社インサイトテクノロジー 森田俊哉
20151120_ビッグデータ/クラウドにデータ連携自由自在 “オンプレミス ↔ クラウド ↔ クラウド” by 株式会社インサイトテクノロジー 森田俊哉Insight Technology, Inc.
 
[db tech showcase Tokyo 2015] A27: RDBエンジニアの為のNOSQL, 今どうしてNOSQLなのか?
[db tech showcase Tokyo 2015] A27: RDBエンジニアの為のNOSQL, 今どうしてNOSQLなのか?[db tech showcase Tokyo 2015] A27: RDBエンジニアの為のNOSQL, 今どうしてNOSQLなのか?
[db tech showcase Tokyo 2015] A27: RDBエンジニアの為のNOSQL, 今どうしてNOSQLなのか?datastaxjp
 
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付きInsight Technology, Inc.
 
MySQL 8.0で強化されたGIS機能のご紹介と周辺ツールとの連携について
MySQL 8.0で強化されたGIS機能のご紹介と周辺ツールとの連携についてMySQL 8.0で強化されたGIS機能のご紹介と周辺ツールとの連携について
MySQL 8.0で強化されたGIS機能のご紹介と周辺ツールとの連携についてyoyamasaki
 
Develop Web Application with Node.js + Express
Develop Web Application with Node.js + ExpressDevelop Web Application with Node.js + Express
Develop Web Application with Node.js + ExpressAkinari Tsugo
 
Oracle DML Auditing Technique
Oracle DML Auditing TechniqueOracle DML Auditing Technique
Oracle DML Auditing Technique拓也 岸本
 
[db tech showcase Tokyo 2018] #dbts2018 #D34 『サポートのトップエンジニアが語る - ワンランク上のStats...
[db tech showcase Tokyo 2018] #dbts2018 #D34 『サポートのトップエンジニアが語る - ワンランク上のStats...[db tech showcase Tokyo 2018] #dbts2018 #D34 『サポートのトップエンジニアが語る - ワンランク上のStats...
[db tech showcase Tokyo 2018] #dbts2018 #D34 『サポートのトップエンジニアが語る - ワンランク上のStats...Insight Technology, Inc.
 
20200627_MySQL開発最新動向
20200627_MySQL開発最新動向20200627_MySQL開発最新動向
20200627_MySQL開発最新動向Machiko Ikoma
 
MySQLのGIS機能とか超入門 ~MyNA会2018年7月
MySQLのGIS機能とか超入門 ~MyNA会2018年7月MySQLのGIS機能とか超入門 ~MyNA会2018年7月
MySQLのGIS機能とか超入門 ~MyNA会2018年7月sakaik
 
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能Ryusuke Kajiyama
 
MySQLに本格GIS機能がやってきた~MySQL8.0最新情報~@OSC2018北海道
MySQLに本格GIS機能がやってきた~MySQL8.0最新情報~@OSC2018北海道MySQLに本格GIS機能がやってきた~MySQL8.0最新情報~@OSC2018北海道
MySQLに本格GIS機能がやってきた~MySQL8.0最新情報~@OSC2018北海道sakaik
 
MySQL 8.0で強化されたGIS機能のご紹介+α:「FOSS4G Tokai 2018 」での発表資料
MySQL 8.0で強化されたGIS機能のご紹介+α:「FOSS4G Tokai 2018 」での発表資料 MySQL 8.0で強化されたGIS機能のご紹介+α:「FOSS4G Tokai 2018 」での発表資料
MySQL 8.0で強化されたGIS機能のご紹介+α:「FOSS4G Tokai 2018 」での発表資料 yoyamasaki
 
Introduction new features in Spark 3.0
Introduction new features in Spark 3.0Introduction new features in Spark 3.0
Introduction new features in Spark 3.0Kazuaki Ishizaki
 
20170622_MySQL最新情報 ~MySQL 8.0 開発状況、MySQL InnoDB Cluster、などのご紹介~ by 日本オラクル株式会社...
20170622_MySQL最新情報 ~MySQL 8.0 開発状況、MySQL InnoDB Cluster、などのご紹介~ by 日本オラクル株式会社...20170622_MySQL最新情報 ~MySQL 8.0 開発状況、MySQL InnoDB Cluster、などのご紹介~ by 日本オラクル株式会社...
20170622_MySQL最新情報 ~MySQL 8.0 開発状況、MySQL InnoDB Cluster、などのご紹介~ by 日本オラクル株式会社...Insight Technology, Inc.
 
2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」
2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」
2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」Ryusuke Kajiyama
 
SAP Applicationのソース・エンドポイントとしての利用
SAP Applicationのソース・エンドポイントとしての利用SAP Applicationのソース・エンドポイントとしての利用
SAP Applicationのソース・エンドポイントとしての利用QlikPresalesJapan
 

Similaire à [B31] LOGMinerってレプリケーションソフトで使われているけどどうなってる? by Toshiya Morita (20)

[db tech showcase Sapporo 2015] B15:ビッグデータ/クラウドにデータ連携自由自在 (オンプレミス ↔ クラウド ↔ クラ...
[db tech showcase Sapporo 2015] B15:ビッグデータ/クラウドにデータ連携自由自在 (オンプレミス ↔ クラウド ↔ クラ...[db tech showcase Sapporo 2015] B15:ビッグデータ/クラウドにデータ連携自由自在 (オンプレミス ↔ クラウド ↔ クラ...
[db tech showcase Sapporo 2015] B15:ビッグデータ/クラウドにデータ連携自由自在 (オンプレミス ↔ クラウド ↔ クラ...
 
20151120_ビッグデータ/クラウドにデータ連携自由自在 “オンプレミス ↔ クラウド ↔ クラウド” by 株式会社インサイトテクノロジー 森田俊哉
20151120_ビッグデータ/クラウドにデータ連携自由自在 “オンプレミス ↔ クラウド ↔ クラウド” by 株式会社インサイトテクノロジー 森田俊哉20151120_ビッグデータ/クラウドにデータ連携自由自在 “オンプレミス ↔ クラウド ↔ クラウド” by 株式会社インサイトテクノロジー 森田俊哉
20151120_ビッグデータ/クラウドにデータ連携自由自在 “オンプレミス ↔ クラウド ↔ クラウド” by 株式会社インサイトテクノロジー 森田俊哉
 
[db tech showcase Tokyo 2015] A27: RDBエンジニアの為のNOSQL, 今どうしてNOSQLなのか?
[db tech showcase Tokyo 2015] A27: RDBエンジニアの為のNOSQL, 今どうしてNOSQLなのか?[db tech showcase Tokyo 2015] A27: RDBエンジニアの為のNOSQL, 今どうしてNOSQLなのか?
[db tech showcase Tokyo 2015] A27: RDBエンジニアの為のNOSQL, 今どうしてNOSQLなのか?
 
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
 
MySQL 8.0で強化されたGIS機能のご紹介と周辺ツールとの連携について
MySQL 8.0で強化されたGIS機能のご紹介と周辺ツールとの連携についてMySQL 8.0で強化されたGIS機能のご紹介と周辺ツールとの連携について
MySQL 8.0で強化されたGIS機能のご紹介と周辺ツールとの連携について
 
Develop Web Application with Node.js + Express
Develop Web Application with Node.js + ExpressDevelop Web Application with Node.js + Express
Develop Web Application with Node.js + Express
 
Oracle DML Auditing Technique
Oracle DML Auditing TechniqueOracle DML Auditing Technique
Oracle DML Auditing Technique
 
[db tech showcase Tokyo 2018] #dbts2018 #D34 『サポートのトップエンジニアが語る - ワンランク上のStats...
[db tech showcase Tokyo 2018] #dbts2018 #D34 『サポートのトップエンジニアが語る - ワンランク上のStats...[db tech showcase Tokyo 2018] #dbts2018 #D34 『サポートのトップエンジニアが語る - ワンランク上のStats...
[db tech showcase Tokyo 2018] #dbts2018 #D34 『サポートのトップエンジニアが語る - ワンランク上のStats...
 
20200627_MySQL開発最新動向
20200627_MySQL開発最新動向20200627_MySQL開発最新動向
20200627_MySQL開発最新動向
 
MySQLのGIS機能とか超入門 ~MyNA会2018年7月
MySQLのGIS機能とか超入門 ~MyNA会2018年7月MySQLのGIS機能とか超入門 ~MyNA会2018年7月
MySQLのGIS機能とか超入門 ~MyNA会2018年7月
 
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
 
MySQLに本格GIS機能がやってきた~MySQL8.0最新情報~@OSC2018北海道
MySQLに本格GIS機能がやってきた~MySQL8.0最新情報~@OSC2018北海道MySQLに本格GIS機能がやってきた~MySQL8.0最新情報~@OSC2018北海道
MySQLに本格GIS機能がやってきた~MySQL8.0最新情報~@OSC2018北海道
 
MySQL 8.0で強化されたGIS機能のご紹介+α:「FOSS4G Tokai 2018 」での発表資料
MySQL 8.0で強化されたGIS機能のご紹介+α:「FOSS4G Tokai 2018 」での発表資料 MySQL 8.0で強化されたGIS機能のご紹介+α:「FOSS4G Tokai 2018 」での発表資料
MySQL 8.0で強化されたGIS機能のご紹介+α:「FOSS4G Tokai 2018 」での発表資料
 
Keynote In Japanese
Keynote In JapaneseKeynote In Japanese
Keynote In Japanese
 
Introduction new features in Spark 3.0
Introduction new features in Spark 3.0Introduction new features in Spark 3.0
Introduction new features in Spark 3.0
 
20170622_MySQL最新情報 ~MySQL 8.0 開発状況、MySQL InnoDB Cluster、などのご紹介~ by 日本オラクル株式会社...
20170622_MySQL最新情報 ~MySQL 8.0 開発状況、MySQL InnoDB Cluster、などのご紹介~ by 日本オラクル株式会社...20170622_MySQL最新情報 ~MySQL 8.0 開発状況、MySQL InnoDB Cluster、などのご紹介~ by 日本オラクル株式会社...
20170622_MySQL最新情報 ~MySQL 8.0 開発状況、MySQL InnoDB Cluster、などのご紹介~ by 日本オラクル株式会社...
 
2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」
2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」
2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」
 
SAP Applicationのソース・エンドポイントとしての利用
SAP Applicationのソース・エンドポイントとしての利用SAP Applicationのソース・エンドポイントとしての利用
SAP Applicationのソース・エンドポイントとしての利用
 
Azure Search 大全
Azure Search 大全Azure Search 大全
Azure Search 大全
 
ILE-RPG Study 001
ILE-RPG Study 001ILE-RPG Study 001
ILE-RPG Study 001
 

Plus de Insight Technology, Inc.

グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?Insight Technology, Inc.
 
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~Insight Technology, Inc.
 
事例を通じて機械学習とは何かを説明する
事例を通じて機械学習とは何かを説明する事例を通じて機械学習とは何かを説明する
事例を通じて機械学習とは何かを説明するInsight Technology, Inc.
 
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーンInsight Technology, Inc.
 
MBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごとMBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごとInsight Technology, Inc.
 
グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?Insight Technology, Inc.
 
DBREから始めるデータベースプラットフォーム
DBREから始めるデータベースプラットフォームDBREから始めるデータベースプラットフォーム
DBREから始めるデータベースプラットフォームInsight Technology, Inc.
 
SQL Server エンジニアのためのコンテナ入門
SQL Server エンジニアのためのコンテナ入門SQL Server エンジニアのためのコンテナ入門
SQL Server エンジニアのためのコンテナ入門Insight Technology, Inc.
 
db tech showcase2019オープニングセッション @ 森田 俊哉
db tech showcase2019オープニングセッション @ 森田 俊哉 db tech showcase2019オープニングセッション @ 森田 俊哉
db tech showcase2019オープニングセッション @ 森田 俊哉 Insight Technology, Inc.
 
db tech showcase2019 オープニングセッション @ 石川 雅也
db tech showcase2019 オープニングセッション @ 石川 雅也db tech showcase2019 オープニングセッション @ 石川 雅也
db tech showcase2019 オープニングセッション @ 石川 雅也Insight Technology, Inc.
 
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー Insight Technology, Inc.
 
難しいアプリケーション移行、手軽に試してみませんか?
難しいアプリケーション移行、手軽に試してみませんか?難しいアプリケーション移行、手軽に試してみませんか?
難しいアプリケーション移行、手軽に試してみませんか?Insight Technology, Inc.
 
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介Attunityのソリューションと異種データベース・クラウド移行事例のご紹介
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介Insight Technology, Inc.
 
そのデータベース、クラウドで使ってみませんか?
そのデータベース、クラウドで使ってみませんか?そのデータベース、クラウドで使ってみませんか?
そのデータベース、クラウドで使ってみませんか?Insight Technology, Inc.
 
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...Insight Technology, Inc.
 
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。 複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。 Insight Technology, Inc.
 
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...Insight Technology, Inc.
 
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]Insight Technology, Inc.
 

Plus de Insight Technology, Inc. (20)

グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?
 
Docker and the Oracle Database
Docker and the Oracle DatabaseDocker and the Oracle Database
Docker and the Oracle Database
 
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~
 
事例を通じて機械学習とは何かを説明する
事例を通じて機械学習とは何かを説明する事例を通じて機械学習とは何かを説明する
事例を通じて機械学習とは何かを説明する
 
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン
 
MBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごとMBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごと
 
グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?
 
DBREから始めるデータベースプラットフォーム
DBREから始めるデータベースプラットフォームDBREから始めるデータベースプラットフォーム
DBREから始めるデータベースプラットフォーム
 
SQL Server エンジニアのためのコンテナ入門
SQL Server エンジニアのためのコンテナ入門SQL Server エンジニアのためのコンテナ入門
SQL Server エンジニアのためのコンテナ入門
 
Lunch & Learn, AWS NoSQL Services
Lunch & Learn, AWS NoSQL ServicesLunch & Learn, AWS NoSQL Services
Lunch & Learn, AWS NoSQL Services
 
db tech showcase2019オープニングセッション @ 森田 俊哉
db tech showcase2019オープニングセッション @ 森田 俊哉 db tech showcase2019オープニングセッション @ 森田 俊哉
db tech showcase2019オープニングセッション @ 森田 俊哉
 
db tech showcase2019 オープニングセッション @ 石川 雅也
db tech showcase2019 オープニングセッション @ 石川 雅也db tech showcase2019 オープニングセッション @ 石川 雅也
db tech showcase2019 オープニングセッション @ 石川 雅也
 
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー
 
難しいアプリケーション移行、手軽に試してみませんか?
難しいアプリケーション移行、手軽に試してみませんか?難しいアプリケーション移行、手軽に試してみませんか?
難しいアプリケーション移行、手軽に試してみませんか?
 
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介Attunityのソリューションと異種データベース・クラウド移行事例のご紹介
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介
 
そのデータベース、クラウドで使ってみませんか?
そのデータベース、クラウドで使ってみませんか?そのデータベース、クラウドで使ってみませんか?
そのデータベース、クラウドで使ってみませんか?
 
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...
 
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。 複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
 
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
 
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]
 

[B31] LOGMinerってレプリケーションソフトで使われているけどどうなってる? by Toshiya Morita

  • 1.
  • 3. Introduction 森田 俊哉 / Toshiya Morita 株式会社インサイトテクノロジー プロダクトコンサルティング事業部部長 Past Experience: • DBA & Database Condulting • Unix Admin/Project Manager • C Language Debugger Developer/Programmer
  • 4. Agenda  Oracleの処理の仕組み  Oracle LogMinerって何?  LogMiner検証  実際にV$LOGMNR_CONTENTSを覗いてみる  追加SUPPLEMENTAL LOGGING ?  レプリケーションソフトは、LOGMinerを使ってる  Attunity Replicate Demo  Q&A
  • 6. 9 Oracle Database の構成 Client Oracle DatabaseListener REDO LogsControlfileData File Server Server Server SGA LGWRCKPTSMON PMON DBWn REDO LOG BufferDatabase BufferShared Pool
  • 7. データベース・バッファ・ キャッシュ データベースから取得されたデータ・ブロック(表、索引など)を キャッシュする領域 REDOログ・バッファ ディスク(REDOログ・ファイル)に書き込むまでREDO情報を キャッシュ(インスタンス・リカバリに使用)する領域 共有プール 一度実行されたSQL文の解析に使うデータや実行計画、および ユーザー間で共有できる様々な構造をキャッシュする領域 ラージ・プール (オプション) 特定の大きなプロセス(Oracleバックアップおよびリカバリ操作、 I/Oサーバー・プロセスなど)が使用できるオプション領域 Javaプール (オプション) データベース内でJavaを実行する場合に使用するオプション領域 (JVM内のすべてのセッション固有のJavaコードおよびデータ) 14 SGAコンポーネントの詳細 SGA REDO LOG BufferDatabase BufferShared Pool SQL文 実行計画 検索対象 データブロック 変更履歴 A→B COMMIT
  • 8. 9 Oracle Database の処理(検索) Client Oracle Database REDO LogsControlfileData File Server SGA LGWRCKPTSMON PMON DBWn REDO LOG BufferDatabase BufferShared Pool SQL解析情報 SQL実行計画 A A SELECT COLA FROM TABA データ ディクショナリ データベース内のオブジェクト定義や ユーザ情報などを管理するための内部表 この情報を使って、実行前に解析を行う。
  • 9. 9 Oracle Database の処理(更新) Client Oracle Database REDO LogsControlfileData File Server SGA LGWRCKPTSMON PMON DBWn REDO LOG BufferDatabase BufferShared Pool SQL解析情報 SQL実行計画 A A SELECT COLA FROM TABA データ ディクショナリ ロールバックの際に使用 するため変更情報を保存 B A 更新履歴 A→B 変更前に 変更履歴を残す UPDATE TABA SET COLA=‘B’
  • 10. 9 Oracle Database の処理(更新) Client Oracle Database REDO LogsControlfileData File Server SGA LGWRCKPTSMON PMON DBWn REDO LOG BufferDatabase BufferShared Pool SQL解析情報 SQL実行計画 A B SELECT COLA FROM TABA データ ディクショナリ B A 更新履歴 A→B データベースで行われた変更履歴 (DML,DDL処理)を格納 障害からの復旧に使用 UPDATE TABA SET COLA=‘B’ COMMIT メモリ上の変更をいつファイルに 反映したか(チェックポイント) 他の物理ファイルの場所 A
  • 11. Oracle Database の処理(更新) 以下のテーブル及びデータが作成 1. CREATE TABLE INSIGHT (COL1 VARCHAR2(1)); 2. INSERT INTO INSIGHT VALULES(‘A’); 3. INSERT INTO INSIGHT VALULES(‘B’); 4. COMMIT; INSIGHTテーブルの2件のデータは、 1つのデータブロックに格納 (Public LAN) SGA A B block
  • 12. Oracle Database の処理(更新)  次の操作が行われた時を例にします。 (Public LAN) SGA A B A B 1. セッション1でINSIGHTテーブルを SELECT ・・ WHERE COL1=‘A’ FOR UPDATE でデータ”A”をロックします 2. セッション2でINSIGHTテーブルを SELECT ・・ WHERE COL1=‘B’ FOR UPDATE でデータ”B”をロックします 3. セッション1でデータ”A”を”P”にUPDATE UPDATE ・・ SET COL1=‘P’ WHERE COL1=‘A’ 4. セッション2でデータ”B”を”Q”にUPDATE UPDATE ・・ SET COL1=‘Q’ WHERE COL1=‘B’ 5. セッション1でCOMMIT 6. セッション2でCOMMIT TX TX P Q A B P Q block UNDO REDO
  • 14.  REDOログと関連するデータ・ディクショナリに直接アクセス  REDOログは、データベース上で実行されるすべてのアクティビティの完全な記録。  データ・ディクショナリは、内部オブジェクト識別子およびタイプを外部名とデータ形式へ変 換する際に使用されます。  LogMinerはデータベースで実行される各論理操作を動的なビュー V$LOGMNR_CONTENTSに提供  各行には、変更のロールバックに使用できるSQL UNDO文と、元の操作が詳細に記述されて いるSQL REDO文が含まれます。 LOGMinerとは? データ・ディクショナリ REDOログ V$LOGMNR_CONTENTS
  • 15.  アプリケーション・レベルで発生したエラーなどデータベースの論 理的破損が発生した時期を特定。  DML文の事後監査、コミットされたトランザクション、アップデー トしたユーザー  リカバリを行うために必要なSQLを特定。  どの表にどんな更新が多いかなどの統計情報を取得し、チューニン グ時の優先順位を決定することができる。 LOGMinerで出来ること
  • 16. V$LOGMNR_CONTENTS(Oracleマニュアルから一部抜粋) 列 データ型 説明 SCN NUMBER データベースに変更が加えられた時点のシステム変更番号 (SCN) TIMESTAMP DATE データベースに変更が加えられた時点のタイムスタンプ SESSION# NUMBER 変更を行ったセッションのセッション番号 SERIAL# NUMBER 変更を行ったセッションのシリアル番号 USERNAME VARCHAR2(30) トランザクションを実行したユーザーの名前 OS_USERNAME VARCHAR2(4000) オペレーティング・システムのユーザー名 SQL_REDO VARCHAR2(4000) 再構成されたSQL文で、 変更を実行した元のSQL文と同じ。 SQL_UNDO VARCHAR2(4000) 再構成されたSQL文で、 変更を実行した元の文の結果を取り消すために使用できる
  • 18.  検証環境  OS:Oracle Enterprise Linux(Red Hat 4.1.2)  DB:Oracle11g(11.2.0.1)  検証スキーマ  SCOTT  テーブル  EMP  DEPT  SALGRADE LOGMiner検証~1.検証環境
  • 19. LOGMiner検証~2.検証スキーマ EMP EMPNO NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2) DEPT DEPTNO CHAR(5) DNAME VARCHAR2(40) LOC CHAR(3) SALGRADE GRADE NUMBER(38,10) LOSAL NUMBER(38,10) HISAL NUMBER(38,10)
  • 20. DEPTNO DNAME LOC 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 50 SALES2 OSAKA 60 SALES3 TOKYO EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7839 KING PRESIDENT 1981/11/17 5,000.00 10 7782 CLARK MANAGER 7839 1981/06/09 2,450.00 10 7934 MILLER CLERK 7782 1982/01/23 1,300.00 10 7566 JONES MANAGER 7839 1981/04/02 2,975.00 20 7788 SCOTT ANALYST 7566 1987/04/19 3,000.00 20 7876 ADAMS CLERK 7788 1987/05/23 1,100.00 20 7902 FORD ANALYST 7566 1981/12/03 3,000.00 20 7369 SMITH CLERK 7902 1980/12/17 800.00 20 7698 BLAKE MANAGER 7839 1981/05/01 2,850.00 30 7900 JAMES CLERK 7698 1981/12/03 950.00 30 7499 ALLEN SALESMAN 7698 1981/02/20 1,600.00 300.00 30 7521 WARD SALESMAN 7698 1981/02/22 1,250.00 500.00 30 7654 MARTIN SALESMAN 7698 1981/09/28 1,250.00 1,400.00 30 7844 TURNER SALESMAN 7698 1981/09/08 1,500.00 0.00 30 GRADE LOSAL HISAL 1 700 1,200 2 1,201 1,400 3 1,401 2,000 4 2,001 3,000 5 3,001 9,999 LOGMiner検証~3.検証データ EMP表 SALGRADE表 DEPT表
  • 21.  SUPPLEMENTAL LOGGINGの設定  まずは、現在の設定状態を確認 SQL> select SUPPLEMENTAL_LOG_DATA_MIN from v$database; SUPPLEMENTAL_LOG_DATA_MIN ------------------------------ NO  デフォルトでは、無効なので有効化 SQL> alter database add supplemental log data; データベースが変更されました。  実際に変更されたか確認 SQL> select SUPPLEMENTAL_LOG_DATA_MIN from v$database; SUPPLEMENTAL_LOG_DATA_MIN ------------------------------ YES LOGMiner検証~4.SUPPLEMENTAL LOGGING
  • 22.  REDOログ切替  現在のREDOログの確認 SQL> SELECT L.GROUP#, F.MEMBER, L.STATUS FROM V$LOG L, V$LOGFILE F WHERE L.GROUP#=F.GROUP#; GROUP# MEMBER STATUS ----------------------------------------------------------------------------------------------------------------------- 1 /oradata/ora11g/redo1/redo01_1.log INACTIVE 1 /oradata/ora11g/redo2/redo01_2.log INACTIVE 2 /oradata/ora11g/redo1/redo02_1.log INACTIVE 2 /oradata/ora11g/redo2/redo02_2.log INACTIVE 3 /oradata/ora11g/redo1/redo03_1.log CURRENT 3 /oradata/ora11g/redo2/redo03_2.log CURRENT  REDOログの切替 SQL> ALTER SYSTEM SWITCH LOGFILE; LOGMiner検証~5.REDOログの切替
  • 23.  LOG Miner起動  分析対象REDOログを指定(今回は、オンラインREDOログ) SQL> execute dbms_logmnr.add_logfile(logfilename => - > '/home/ora102/oracle/oradata/ora102/redo01.log' - > ,options => dbms_logmnr.new); PL/SQLプロシージャが正常に完了しました。  LOG Miner起動 SQL> execute dbms_logmnr.start_logmnr(options => - > dbms_logmnr.dict_from_online_catalog); PL/SQLプロシージャが正常に完了しました。 LOGMiner検証~6.LOG Miner起動
  • 24.  データ更新  EMPテーブル更新 SQL> DELETE FROM EMP WHERE EMPNO=7844; SQL> ROLLBACK; SQL> UPDATE EMP SET SAL=SAL*1.1 WHERE EMPNO=7844; SQL> DELETE FROM EMP WHERE DEPTNO=20; SQL> COMMIT;  SALGRADEテーブル更新 SQL> DELETE FROM SALGRADE WHERE GRADE=5; SQL> ROLLBACK; SQL> UPDATE SALGRADE SET HISAL=20000 WHERE GRADE=5; SQL> COMMIT; LOGMiner検証~7.データ更新処理
  • 25. SQL V$LOGMNR_CONTENTS / SQL_REDO DELETE FROM EMP WHERE EMPNO=7844; delete from "SCOTT"."EMP" where "EMPNO" = '7844' and "ENAME" = 'TURNER' and "JOB" = 'SALESMAN' and "MGR" = '7698' and "HIREDATE" = TO_DATE('81-09-08', 'RR-MM-DD') and "SAL" = '1500' and "COMM" = '0' and "DEPTNO" = '30' and ROWID = 'AAAD8yAAEAAA+k7AAN'; ROLLBACK; insert into "SCOTT"."EMP“ ("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values ('7844','TURNER','SALESMAN','7698',TO_DATE('81-09-08', 'RR- MM-DD'),'1500','0','30'); UPDATE EMP SET SAL=SAL*1.1 WHERE EMPNO=7844; update "SCOTT"."EMP" set "SAL" = '1650' where "SAL" = '1500' and ROWID = 'AAD8yAAEAAA+k7AAN'; DELETE FROM SALGRADE WHERE GRADE=5; delete from "SCOTT"."SALGRADE" where "GRADE" = '5' and "LOSAL" = '3001' and "HISAL" = '9999‘ and ROWID = 'AAAD7dAAEAAAADMAAI'; ROLLBACK; insert into "SCOTT"."SALGRADE"("GRADE","LOSAL","HISAL") values ('5','3001','9999'); UPDATE SALGRADE SET HISAL=20000 WHERE GRADE=5; update "SCOTT"."SALGRADE" set "HISAL" = '20000‘ where "HISAL" = '9999‘ and ROWID = 'AAAD7dAAEAAAADMAAI'; V$LOGMNR_CONTENTSの内容 計算式は、固定値に変換されて生成
  • 26. SQL V$LOGMNR_CONTENTS / SQL_REDO DELTE FROM EMP WHERE DEPTNO=20; delete from "SCOTT"."EMP" where "EMPNO" = '7566' and “ENAME” = ‘JONES’ and "JOB" = 'MANAGER' and "MGR" = '7839' and "HIREDATE" = TO_DATE('81-04-02', 'RR-MM-DD') and "SAL" = '2975' and "COMM" IS NULL and "DEPTNO" = '20' and ROWID = 'AAAD8yAAEAAA+k7AAD'; delete from "SCOTT"."EMP" where "EMPNO" = '7788' and "ENAME" = 'SCOTT' and "JOB" = 'ANALYST' and "MGR" = '7566' and "HIREDATE" = TO_DATE('87-04-19', 'RR-MM-DD') and "SAL" = '3000' and "COMM" IS NULL and "DEPTNO" = '20' and ROWID = 'AAAD8yAAEAAA+k7AAE'; delete from "SCOTT"."EMP" where "EMPNO" = '7876' and "ENAME" = 'ADAMS' and "JOB" = 'CLERK' and "MGR" = '7788' and "HIREDATE" = TO_DATE('87-05-23', 'RR-MM-DD') and "SAL" = '1100' and "COMM" IS NULL and "DEPTNO" = '20' and ROWID = 'AAAD8yAAEAAA+k7AAF'; delete from "SCOTT"."EMP" where "EMPNO" = '7902' and "ENAME" = 'FORD' and "JOB“ = 'ANALYST' and "MGR" = '7566' and "HIREDATE" = TO_DATE('81-12-03', 'RR-MM-DD') and "SAL" = '3000' and "COMM" IS NULL and "DEPTNO" = '20' and ROWID = 'AAAD8yAAEAAA+k7AAG'; delete from "SCOTT"."EMP" where "EMPNO" = '7369' and "ENAME" = 'SMITH' and "JOB" = 'CLERK' and "MGR" = '7902' and "HIREDATE" = TO_DATE('80-12-17', 'RR-MM-DD') and "SAL" = '800' and "COMM" IS NULL and "DEPTNO" = '20' and ROWID = 'AAAD8yAAEAAA+k7AAH'; V$LOGMNR_CONTENTSの内容 SQL文が5レコード更新すると各レコード毎に更新するSQLが生成される
  • 28.  追加SUPPLEMENTAL LOGGINGの設定  最小サプリメンタル・ロギングは分析するログ・ファイルを生成する前に必 ず有効にしておかなければならない。  以下はマニュアルからの抜粋となりますが補助的なカラムが必要となる例を 示しています。 LOGMiner検証~8.追加SUPPLEMENTAL LOGGING 1.再構築されたSQL文を別のデータベースに適用するアプリケーションでは、行を一意に識別す る列(主キーなど)で更新文を識別する必要があります。 ROWID はデータベースごとに異なり、他のデータベースでは意味を持たないため V$LOGMNR_CONTENTS ビューによって返される再構築されたSQL に示されるROWID では識 別できません。 2.アプリケーションは、行変更の追跡をより効率的にするために、変更された列のみでなく、行 全体のビフォア・イメージを記録する必要がある場合があります。
  • 29. レプリケーションソフトウェア Source DB Target DB EMP DEPT SALGRADE EMP DEPT SALGRADE 同期
  • 30. Attunity Replicate Architecture SQL加工 SQL実行 Source DB Target DB SQL Data Capture SQL Data Apply V$LOGMNR_CONTENTS EMP DEPT SALGRADE EMP DEPT SALGRADE
  • 31.  追加SUPPLEMENTAL LOGGINGの設定  まずは、現在の設定状態を確認 SQL> SELECT LOG_GROUP_NAME, TABLE_NAME, ALWAYS, LOG_GROUP_TYPE FROM USER_LOG_GROUPS; レコードが選択されませんでした。  デフォルトでは、設定されていないなので有効化 SQL> ALTER TABLE EMP ADD SUPPLEMENTAL LOG DATA(PRIMARY KEY) COLUMNS; 表が変更されました。 SQL> ALTER TABLE DEPT ADD SUPPLEMENTAL LOG DATA(PRIMARY KEY) COLUMNS; 表が変更されました。 SQL> ALTER TABLE SALGRADE ADD SUPPLEMENTAL LOG DATA(ALL) COLUMNS; 表が変更されました。 LOGMiner検証~9.SUPPLEMENTAL LOGGING
  • 32.  追加SUPPLEMENTAL LOGGINGの設定  実際に変更されたか確認 SQL> SELECT LOG_GROUP_NAME, TABLE_NAME, ALWAYS, LOG_GROUP_TYPE FROM USER_LOG_GROUPS; LOG_GROUP_NAME TABLE_NAME ALWAYS LOG_GROUP_TYPE ----------------------- --------------------- ----------- ------------------- SYS_C004204 EMP ALWAYS PRIMARY KEY LOGGING SYS_C004205 DEPT ALWAYS PRIMARY KEY LOGGING SYS_C004206 SALGRAD ALWAYS ALL COLUMN LOGGING LOGMiner検証~9.SUPPLEMENTAL LOGGING
  • 33. SQL V$LOGMNR_CONTENTS / SQL_REDO DELETE FROM EMP WHERE EMPNO=7844; delete from "SCOTT"."EMP" where "EMPNO" = '7844' and "ENAME" = 'TURNER' and “JOB” = ‘SALESMAN’ and "MGR" = '7698' and "HIREDATE" = TO_DATE('81-09-08', 'RR-MM-DD') and "SAL" = '1500' and "COMM" = '0' and "DEPTNO" = '30' and ROWID = 'AAAD8yAAEAAA+k8AAN'; ROLLBACK; insert into "SCOTT"."EMP"("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","CO MM","DEPTNO") values ('7844','TURNER','SALESMAN','7698',TO_DATE('81-09-08', 'RR- MM-DD'),'1500','0','30'); UPDATE EMP SET SAL=SAL*1.1 WHERE EMPNO=7844; update "SCOTT"."EMP" set "SAL" = '1650' where "EMPNO" = '7844' and "SAL" = '1500' and ROWID = 'AAAD7cAAEAAAACUAAb'; DELETE FROM SALGRADE WHERE GRADE=5; delete from "SCOTT"."SALGRADE" where "GRADE" = '5' and "LOSAL" = '3001' and "HISAL" = '9999' and ROWID = 'AAAD7dAAEAAAADMAAI'; ROLLBACK; insert into "SCOTT"."SALGRADE"("GRADE","LOSAL","HISAL") values ('5','3001','9999'); UPDATE SALGRADE SET HISAL=20000 WHERE GRADE=5; update "SCOTT"."SALGRADE" set "HISAL" = '20000' where "GRADE" = '5' and "LOSAL"= '3001' and "HISAL" = '9999' and ROWID = 'AAAD7dAAEAAAADMAAI'; V$LOGMNR_CONTENTSの内容(追加設定後) プライマリーキーまたは、全カラムの条件が付加されて生成
  • 34. V$LOGMNR_CONTENTSの内容(追加設定後) プライマリーキーまたは、全カラムの条件が付加されて生成 SQL V$LOGMNR_CONTENTS / SQL_REDO DELTE FROM EMP WHERE DEPTNO=20; delete from "SCOTT"."EMP" where "EMPNO" = '7566' and “ENAME” = ‘JONES’ and "JOB" = 'MANAGER' and "MGR" = '7839' and "HIREDATE" = TO_DATE('81-04-02', 'RR-MM-DD') and "SAL" = '2975' and "COMM" IS NULL and "DEPTNO" = '20' and ROWID = 'AAAD8yAAEAAA+k7AAD'; delete from "SCOTT"."EMP" where "EMPNO" = '7788' and "ENAME" = 'SCOTT' and "JOB" = 'ANALYST' and "MGR" = '7566' and "HIREDATE" = TO_DATE('87-04-19', 'RR-MM-DD') and "SAL" = '3000' and "COMM" IS NULL and "DEPTNO" = '20' and ROWID = 'AAAD8yAAEAAA+k7AAE'; delete from "SCOTT"."EMP" where "EMPNO" = '7876' and "ENAME" = 'ADAMS' and "JOB" = 'CLERK' and "MGR" = '7788' and "HIREDATE" = TO_DATE('87-05-23', 'RR-MM-DD') and "SAL" = '1100' and "COMM" IS NULL and "DEPTNO" = '20' and ROWID = 'AAAD8yAAEAAA+k7AAF'; delete from "SCOTT"."EMP" where "EMPNO" = '7902' and "ENAME" = 'FORD' and "JOB“ = 'ANALYST' and "MGR" = '7566' and "HIREDATE" = TO_DATE('81-12-03', 'RR-MM-DD') and "SAL" = '3000' and "COMM" IS NULL and "DEPTNO" = '20' and ROWID = 'AAAD8yAAEAAA+k7AAG'; delete from "SCOTT"."EMP" where "EMPNO" = '7369' and "ENAME" = 'SMITH' and "JOB" = 'CLERK' and "MGR" = '7902' and "HIREDATE" = TO_DATE('80-12-17', 'RR-MM-DD') and "SAL" = '800' and "COMM" IS NULL and "DEPTNO" = '20' and ROWID = 'AAAD8yAAEAAA+k7AAH';
  • 35.  プライマリキーを持つ表への追加SUPPLEMENTAL LOGGINGの設定 LOGMiner検証~9.SUPPLEMENTAL LOGGING UPDATE EMP SET SAL=SAL*1.1 WHERE EMPNO=7844; update "SCOTT"."EMP" set "SAL" = '1650' where "SAL" = '1500' and ROWID = 'AAAD7cAAEAAAACUAAb'; update "SCOTT"."EMP" set "SAL" = '1650' where "EMPNO" = '7844' and "SAL" = '1500' and ROWID = 'AAAD7cAAEAAAACUAAb'; ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS ALTER DATABASE ADD SUPPLEMENTAL LOG DATA
  • 36.  プライマリキーを持たない表への追加SUPPLEMENTAL LOGGINGの設定 LOGMiner検証~9.SUPPLEMENTAL LOGGING UPDATE SALGRADE SET HISAL=20000 WHERE GRADE=5; update "SCOTT"."SALGRADE" set "HISAL" = '20000‘ where "HISAL" = '9999‘ and ROWID = 'AAAD7dAAEAAAADMAAI'; update "SCOTT"."SALGRADE" set "HISAL" = '20000' where "GRADE" = '5' and "LOSAL"= '3001' and "HISAL" = '9999' and ROWID = 'AAAD7dAAEAAAADMAAI'; ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS ALTER DATABASE ADD SUPPLEMENTAL LOG DATA
  • 38.  プライマリキーを持つ表への追加SUPPLEMENTAL LOGGINGの設定 LOGMiner検証~9.SUPPLEMENTAL LOGGING UPDATE EMP SET SAL=SAL*1.1 WHERE EMPNO=7844; update "SCOTT"."EMP" set "SAL" = '1650' where "SAL" = '1500' and ROWID = 'AAAD7cAAEAAAACUAAb'; update "SCOTT"."EMP" set "SAL" = '1650' where "EMPNO" = '7844' and "SAL" = '1500' and ROWID = 'AAAD7cAAEAAAACUAAb'; ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS ALTER DATABASE ADD SUPPLEMENTAL LOG DATA
  • 39.  プライマリキーを持たない表への追加SUPPLEMENTAL LOGGINGの設定 LOGMiner検証~9.SUPPLEMENTAL LOGGING UPDATE SALGRADE SET HISAL=20000 WHERE GRADE=5; update "SCOTT"."SALGRADE" set "HISAL" = '20000‘ where "HISAL" = '9999‘ and ROWID = 'AAAD7dAAEAAAADMAAI'; update "SCOTT"."SALGRADE" set "HISAL" = '20000' where "GRADE" = '5' and "LOSAL"= '3001' and "HISAL" = '9999' and ROWID = 'AAAD7dAAEAAAADMAAI'; ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS ALTER DATABASE ADD SUPPLEMENTAL LOG DATA
  • 40. Attunity Replicate Architecture SQL加工 SQL実行 Source DB Target DB SQL Data Capture SQL Data Apply V$LOGMNR_CONTENTS EMP DEPT SALGRADE EMP DEPT SALGRADE SQL SQL SQL
  • 41. 複数セッションからSQLが実行 SESSION 10:00 10:01 10:02 10:03 10:04 10:05 10:06 INSERT INSERT UPDATE ROLLBACK DELETE INSERT COMMIT INSERT UPDATE COMMIT DELETE INSERT COMMIT DELETE INSERT COMMIT
  • 42. V$LOGMNR_CONTENTS(複数セッションからSQL実行した場合) TIMESTAMP SESSION# SERIAL# USERNAME SQL_REDO 6/20 10:00 1 1 SCOTT INSERT 6/20 10:00 3 3 SCOTT DELETE 6/20 10:01 1 1 SCOTT INSERT 6/20 10:01 2 2 SCOTT INSERT 6/20 10:01 3 3 SCOTT INSERT 6/20 10:02 1 1 SCOTT UPDATE 6/20 10:02 3 3 SCOTT COMMIT 6/20 10:03 1 1 SCOTT ROLLBACK 6/20 10:03 2 2 SCOTT UPDATE 6/20 10:03 3 3 SCOTT DELETE 6/20 10:04 1 1 SCOTT DELETE 6/20 10:04 2 2 SCOTT COMMIT 6/20 10:04 3 3 SCOTT INSERT 6/20 10:05 1 1 SCOTT INSERT 6/20 10:05 3 3 SCOTT COMMIT 6/20 10:06 1 1 SCOTT COMMIT
  • 43.  V$LOGMNR_CONTENTSで出力されている順序でそのままSQLを実 行する?  途中でROLLBACKされる場合もありレプリケーションターゲットにトラン ザクションを混合してSQLを実行することは出来ない  複数セッションをターゲットデータベースに生成してSQLをセッシ ョン毎に実行する?  大量のセッションがターゲットに生成されてしまう可能性が高い  ソースデータベースで実行されたSQLが複数のSQLとしてキャプチ ャーされる  ターゲットデータベースに多数のSQLが実行されて高負荷、長時間処理を 要する可能性がある V$LOGMNR_CONTENTSからレプリケーション
  • 45. Attunity Replicate Architecture Attunity Replicate Replication ServerBulk Reader CDC Agent Stream Loader Source DB Target DB SQL Data Capture SQL Data Apply V$LOGMNR_CONTENTS EMP DEPT SALGRADE EMP DEPT SALGRADE
  • 46. V$LOGMNR_CONTENTS(複数セッションからSQL実行した場合) TIMESTAMP SESSION# SERIAL# USERNAME SQL_REDO 6/20 10:00 1 1 SCOTT INSERT 6/20 10:01 1 1 SCOTT INSERT 6/20 10:02 1 1 SCOTT UPDATE 6/20 10:03 1 1 SCOTT ROLLBACK 6/20 10:00 3 3 SCOTT DELETE 6/20 10:01 3 3 SCOTT INSERT 6/20 10:02 3 3 SCOTT COMMIT 6/20 10:01 2 2 SCOTT INSERT 6/20 10:03 2 2 SCOTT UPDATE 6/20 10:04 2 2 SCOTT COMMIT 6/20 10:03 3 3 SCOTT DELETE 6/20 10:04 3 3 SCOTT INSERT 6/20 10:05 3 3 SCOTT COMMIT 6/20 10:04 1 1 SCOTT DELETE 6/20 10:05 1 1 SCOTT INSERT 6/20 10:06 1 1 SCOTT COMMIT 1 2 3 4 5