Your SlideShare is downloading. ×
[A23] Oracle移行を簡単に。レプリケーションテクノロジーを使いこなす by Keishi Miyachi
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

[A23] Oracle移行を簡単に。レプリケーションテクノロジーを使いこなす by Keishi Miyachi

675
views

Published on

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
675
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
25
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Oracle移行を簡単に。 ~レプリケーションテクノロジーを使いこなす~ (株)インサイトテクノロジー(株)インサイトテクノロジー(株)インサイトテクノロジー(株)インサイトテクノロジー K.Miyachi
  • 2. 【自己紹介】
  • 3. システムリプレイス実施の関門となるDB、データ移行 を、 『できるだけ短期間』 かつ 『より心安らか』 に行えるよう、ポイントとなる点について解説します! ~はじめに~
  • 4. Export / Import DataPump(expdp / impdp) DataGuard(Physical Standby) DataGuard(Logical Standby) Replication software 自前で開発 データデータデータデータ移行移行移行移行のののの方法方法方法方法 ~方式方式方式方式~
  • 5. データ移行の方法データ移行の方法データ移行の方法データ移行の方法 ~決定要素決定要素決定要素決定要素~ サービス停止(DB停止)の許容時間 使用データ型 データチェック方法 プロジェクト期間、予算
  • 6. exp/imp or datapump ? ~ Oracleが標準で提供するユーティリティ ~ ※※※※10g以降は以降は以降は以降はdatapump推奨推奨推奨推奨 システム停止時間は必要だけど、実績もたっぷり、安定感 ・安心感は半端ない憎いやつ サービス停止時間は? 数時間~数十時間必要。(データ量に比例) データ型については? 制限はない
  • 7. exp/imp or datapump ? データチェック方法は? ログで件数、エラー無しを確認 それ以上は自作が必要 注意点は? - マルチバイト文字 - パフォーマンス - exp/impは性能に難ありなので、9iからの データ移行時のみ
  • 8. DataGuard((((Physical Standby)))) or DataGuard((((Losical Standby)))) ???? ~ Oracle EEで使えるDR用の機能 ~ EEが必要だけど、システム停止時間が短くて済む、 ゴージャスなやつ サービス停止時間は? 数分~数十分。(ロールの切替え等) データ型については? logical standbyは一部データ型が使えない
  • 9. DataGuard((((Physical Standby)))) or DataGuard((((Losical Standby)))) ???? 特になし 移行元、先のバージョンが一致している必要あり データチェック方法は? 注意点は?
  • 10. Physical Standby Database Architecture スタンバイデータベースは、 プライマリーデータベースの100%バイナリコピー (redo logs, standby controlfilesを除く) リカバリリカバリリカバリリカバリ
  • 11. Losical Standby Database Architecture 変更情報を変更情報を変更情報を変更情報をSQL文に変換し文に変換し文に変換し文に変換し て実行て実行て実行て実行
  • 12. DataGuard((((Physical Standby)))) or DataGuard((((Losical Standby)))) ???? REDO適用の特徴適用の特徴適用の特徴適用の特徴 フィジカルフィジカルフィジカルフィジカル ロジカルロジカルロジカルロジカル REDO適用のアーキテクチャ Redo Apply SQL Apply REDO適用の方法 リカバリの機能で適用 SQL文に変換して適用 REDO適用のパフォーマンス REDO適用時のスタンバイの状態 マウント、オープン オープン 災害対策 プライマリの更新量が多い バックアップ目的で利用 スタンバイを検索目的で利用 運用の容易性 【参考】Physical vs Logical
  • 13. 無停止(に近い)データレプリケーションのためには: 1. DDL/DML Replication DML文だけでなくDDL文もターゲットデータベースへレプリケート 2. Delta Replication (Incremental Load) 更新情報のレプリケート 3. Group Replication スキーマ単位・テーブルグループ単位でのレプリケート データベースレプリケーション
  • 14. REDOログファイル分析のためのLogMinerを使用して情報を取得 V$LOGMNR_CONTENTS(Oracleマニュアルから一部抜粋) Replication Architecture 列 データ型 説明 SCN NUMBER データベースに変更が加えられた時点のシステム変更番号(SCN) START_SCN NUMBER この変更を含むトランザクションが開始されたときのシステム変更番号(SCN)。 COMMITTED_DATA_ONLYオプションがDBMS_LOGMNR.START_LOGMNR()の 起動時に選択された場合のみ有効、それ以外の場合はNULL。この列は、トランザ クションの開始を含まない時間/SCN範囲に問合せが実⾏されると、NULLになるこ ともある。 COMMIT_SCN NUMBER トランザクションのコミット時のシステム変更番号(SCN)。 COMMITTED_DATA_ONLYオプションがDBMS_LOGMNR.START_LOGMNR()の 起動時に選択された場合のみ有効。 TIMESTAMP DATE データベースに変更が加えられた時点のタイムスタンプ START_TIMESTAMP DATE この変更を含むトランザクションが開始されたときのタイムスタンプ。 COMMITTED_DATA_ONLYオプションがDBMS_LOGMNR.START_LOGMNR()の 起動時に選択された場合のみ有効、それ以外の場合はNULL。この列は、トランザ クションの開始を含まない時間/SCN範囲に問合せが実⾏されると、NULLになるこ ともある。 COMMIT_TIMESTAMP DATE トランザクションのコミット時のタイムスタンプ。COMMITTED_DATA_ONLYオ プションがDBMS_LOGMNR.START_LOGMNR()の起動時に選択された場合のみ有 効。 USERNAME VARCHAR2(30) トランザクションを実⾏したユーザーの名前 OS_USERNAME VARCHAR2(4000) オペレーティング・システムのユーザー名 SQL_REDO VARCHAR2(4000) 再構成されたSQL⽂で、変更を実⾏した元のSQL文と同じ。 SQL_UNDO VARCHAR2(4000) 再構成されたSQL⽂で、変更を実⾏した元の⽂の結果を取り消すために使⽤できる。
  • 15. USERNAME SQL_REDO RON set transaction read write; RON insert into "HR"."JOBS"("JOB_ID","JOB_TITLE","MIN_SALARY","MAX_SALARY") values ('9782','HR_ENTRY',NULL,NULL); RON commit; JANE set transaction read write; JANE insert into "OE"."CUSTOMERS"("CUSTOMER_ID","CUST_FIRST_NAME","CUST_LAST_NAME", "CUST_ADDRESS","PHONE_NUMBERS","NLS_LANGUAGE","NLS_TERRITORY", "CREDIT_LIMIT","CUST_EMAIL","ACCOUNT_MGR_ID") values ('9839','Edgar','Cummings',NULL,NULL,NULL,NULL,NULL,NULL,NULL); JANE commit; JANE set transaction read write; JANE insert into "OE"."CUSTOMERS"("CUSTOMER_ID","CUST_FIRST_NAME","CUST_LAST_NAME", "CUST_ADDRESS","PHONE_NUMBERS","NLS_LANGUAGE","NLS_TERRITORY", "CREDIT_LIMIT","CUST_EMAIL","ACCOUNT_MGR_ID") values ('8933','Ronald','Frost',NULL,NULL,NULL,NULL,NULL,NULL,NULL); JANE commit; RON set transaction read write; RON insert into "HR"."JOBS"("JOB_ID","JOB_TITLE","MIN_SALARY","MAX_SALARY") values ('9566','FI_ENTRY',NULL,NULL); RON commit; Replication Architecture V$LOGMNR_CONTENTSサンプル(Oracleマニュアル抜粋)
  • 16. USERNAME SQL_REDO RON set transaction read write; RON insert into "HR"."JOBS"("JOB_ID","JOB_TITLE","MIN_SALARY","MAX_SALARY") values ('9782','HR_ENTRY',NULL,NULL); RON commit; JANE set transaction read write; JANE insert into "OE"."CUSTOMERS"("CUSTOMER_ID","CUST_FIRST_NAME","CUST_LAST_NAME", "CUST_ADDRESS","PHONE_NUMBERS","NLS_LANGUAGE","NLS_TERRITORY", "CREDIT_LIMIT","CUST_EMAIL","ACCOUNT_MGR_ID") values ('9839','Edgar','Cummings',NULL,NULL,NULL,NULL,NULL,NULL,NULL); JANE commit; JANE set transaction read write; JANE insert into "OE"."CUSTOMERS"("CUSTOMER_ID","CUST_FIRST_NAME","CUST_LAST_NAME", "CUST_ADDRESS","PHONE_NUMBERS","NLS_LANGUAGE","NLS_TERRITORY", "CREDIT_LIMIT","CUST_EMAIL","ACCOUNT_MGR_ID") values ('8933','Ronald','Frost',NULL,NULL,NULL,NULL,NULL,NULL,NULL); JANE commit; RON set transaction read write; RON insert into "HR"."JOBS"("JOB_ID","JOB_TITLE","MIN_SALARY","MAX_SALARY") values ('9566','FI_ENTRY',NULL,NULL); RON commit; Replication Architecture V$LOGMNR_CONTENTSサンプル(Oracleマニュアル抜粋) このデータを使えば(ほぼ)リア ルタイムにデータの同期ができ るぞ!!
  • 17. 小まとめ小まとめ小まとめ小まとめ 方式方式方式方式 ポイントポイントポイントポイント exp/imp or datapump システム停止時間がシステム停止時間がシステム停止時間がシステム停止時間が2日間程度日間程度日間程度日間程度取れるなら 迷わずこれ! 移行検証に掛かる時間も少ない。 dataguard システム停止時間が無停止に近い、且つ移移移移 行元・先が同バージョンで行元・先が同バージョンで行元・先が同バージョンで行元・先が同バージョンでEEならならならなら 迷わずこれ迷わずこれ迷わずこれ迷わずこれ! 移行検証に掛かる時間も少ない。 replication software システム停止時間が無停止に近いシステム停止時間が無停止に近いシステム停止時間が無停止に近いシステム停止時間が無停止に近い、且つ移移移移 行元・先が別バージョンなら検討行元・先が別バージョンなら検討行元・先が別バージョンなら検討行元・先が別バージョンなら検討! 柔軟にデータ連携ができるので、複数DBか らの統合にも使える。
  • 18. replication software ? ~ 各社が提供するソフトウェア ~ ライセンス料はかかるけど、色々できる、 ユーティリティ・プレイヤー! サービス停止時間は? 数分~3時間程度 データ型については? 製品により制限がある。 ※※※※全く制限のないものはない全く制限のないものはない全く制限のないものはない全く制限のないものはない
  • 19. 製品により対応状況が異なる 次スライド以降・・・ データチェック方法は? 注意点は? replication software ?
  • 20. replication software ? ハマリポイント1 変更情報を記録するための設定 - サプリメンタル・ロギングの設定が必要サプリメンタル・ロギングの設定が必要サプリメンタル・ロギングの設定が必要サプリメンタル・ロギングの設定が必要 → データベース単位、テーブル単位で設定可能データベース単位、テーブル単位で設定可能データベース単位、テーブル単位で設定可能データベース単位、テーブル単位で設定可能 <コマンドコマンドコマンドコマンド> alter database add supplemental log data(); alter table XXXX add supplemental log data (); コマンド実行時に排他ロックが掛かるので要注意コマンド実行時に排他ロックが掛かるので要注意コマンド実行時に排他ロックが掛かるので要注意コマンド実行時に排他ロックが掛かるので要注意 排他ロックを獲得するまでに7時間待たされた・・・
  • 21. replication software ? ハマリポイント2 初期データ移行、差分同期開始タイミング exp開始時に実行中のトランザクションデ ータが連携されない・・・ - exp/impを使用する場合、静止点が必須 - その他の方式でも静止点をとって実行が推奨
  • 22. replication software ? ハマリポイント2 初期データ移行、差分同期開始タイミング exp開始時に実行中のトランザクションデータが 連携されなくなる・・・ exp/impを使用する場合、静止点が必須
  • 23. replication software ? ハマリポイント3 トリガー トリガーで作成されたデータが倍になってる・・・ → 件数が合わなくて困る!! - 移行先DBで無効にしておく!(C/O時に有効化)
  • 24. replication software ? ハマリポイント4 シーケンス シーケンスがずれているせいで、アプリの動作確認で 問題発生!! - 移行元DB停止直前のシーケンス番号から開始と なるようにする。
  • 25. replication software ? ハマリポイント5 nologging 上記処理で登録されたデータが連携されない為、デ ータが一致しない・・・ nologgingのテーブルにダイレクト・パス・インサート等を行 うと変更履歴がREDOに記録されない!! - SQL*Loaderのダイレクト・ロード - insert /*+ APPEND +*/ into XXXX as select .....; 的な処理が行われていないか確認が必要
  • 26. replication software ? ハマリポイント6 事前検証・テスト ①検証環境 - 移行元・先のデータベースは本番と合わせる移行元・先のデータベースは本番と合わせる移行元・先のデータベースは本番と合わせる移行元・先のデータベースは本番と合わせる → OS,バージョン、エディション、データベースの作成方法までバージョン、エディション、データベースの作成方法までバージョン、エディション、データベースの作成方法までバージョン、エディション、データベースの作成方法まで
  • 27. replication software ? ハマリポイント6 事前検証・テスト 本番移行中、原因不明のエラーで異常終了した・・・ ②検証内容 - 実際に実行されるバッチ・オンライン処理を一通り実行さ実際に実行されるバッチ・オンライン処理を一通り実行さ実際に実行されるバッチ・オンライン処理を一通り実行さ実際に実行されるバッチ・オンライン処理を一通り実行さ せて、正常に同期されることを確認する。せて、正常に同期されることを確認する。せて、正常に同期されることを確認する。せて、正常に同期されることを確認する。 通り一遍等のSQL文や簡単な処理のみのテストでは 本番移行期間中に予期せぬ事故に合う可能性も・・・
  • 28. replication software ? 事例事例事例事例 原因・対応原因・対応原因・対応原因・対応 本番移行/データ同期期間中に移行元・先でデータ 件数不一致 <原因> nologgingテーブルへのダイレクト・パス・インサート <対応> 該当テーブルはexp/impで個別に移行 本番移行/データ同期期間中にレプリケーション ソフトウェアで一意制約違反(ora-0001)が発生 <原因> ソフトのバグ <対応> メーカーから提供されたパッチを適用 本番移行/データ同期期間中に、データ件数不一致 <原因> 初期データ移行時のexp時に実行中のトランザクシ ョンあり。該当トランザクションのデータロスト <対応> 初期データ移行から再実行 本番移行/データ同期期間中にレプリケーション タスクが異常終了 <原因> REDOログのSCN番号不正 <対応> メーカーから提供されたパッチを適用 代表的なハマり事例
  • 29. replication software ? 事例事例事例事例 原因・対応原因・対応原因・対応原因・対応 本番移行/データ同期期間中に移行元・先でデータ 件数不一致 <原因> nologgingテーブルへのダイレクト・パス・インサート <対応> 該当テーブルはexp/impで個別に移行 本番移行/データ同期期間中にレプリケーション ソフトウェアで一意制約違反(ora-0001)が発生 <原因> ソフトのバグ <対応> メーカーから提供されたパッチを適用 本番移行/データ同期期間中に、データ件数不一致 <原因> 初期データ移行時のexp時に実行中のトランザクシ ョンあり。該当トランザクションのデータロスト <対応> 初期データ移行から再実行 本番移行/データ同期期間中にレプリケーション タスクが異常終了 <原因> REDOログのSCN番号不正 <対応> メーカーから提供されたパッチを適用 代表的なハマり事例 実運用に合わせた検証に時間を使えば実運用に合わせた検証に時間を使えば実運用に合わせた検証に時間を使えば実運用に合わせた検証に時間を使えば このような障害は回避できる!!このような障害は回避できる!!このような障害は回避できる!!このような障害は回避できる!!
  • 30. レプリケーションソフトウェアの紹介
  • 31. Oracle GoldedGate Architecture Source DB Target DB ※Source DB/Target DBにAgentのインストールが必要 GoldenGate Manager Extract (Capture) Extract (Data Pump) GoldenGate Manager Collector Replicat (Data Pump) Change Data Capture Trail file Trail file REDO LOG
  • 32. Attunity Replicate Architecture Replication Server Bulk Reader CDC Agent Stream Loader Source DB Target DB Change Data Capture Change Data Load REDO LOG
  • 33. 2000+ Customers 42% of Fortune 50; 37% of Fortune 100
  • 34. 項目 Oracle GoldenGate Attunity Replicate 非対応データタイプ BFILE ROWID REF UROWID User-defined data types etc… BFILE ROWID REF UROWID User-defined data types Nested Table etc… 監視 オプション GUI オプション 初期データローディング × システムへの負荷 △ エージェントインストール 要 不要 レプリケーション方式実装比較
  • 35. GoldenGate ユーザ・インタフェース
  • 36. Attunity ユーザ・インタフェース
  • 37. Demonstration
  • 38. 移⾏ツール自作に時間を掛ける(≒お⾦もかかる)なら、 移⾏⽤ソフトウェアを使用して事前のテストを タップリと実施し、心安らかにC/O当日を迎えませんか? ~まとめ~