Oracle Databaseをアップグレードしたり、クラウド移行する際に頭を悩ますのがダウンタイムやアプリのテストです。 今回のTech Nightでは、Oracle Consulting Serviceのメンバーが中心となり、実プロジェクトでの経験を交えながらGoldenGateとReal Application Testingを活用してそれらの悩みを解決する方法を、その効果やTipsと共にご紹介します。
Oracle Technology Night #54Oracle Databaseのアップグレードとクラウド移行実践GoldenGateとReal Application Testingの活用日本オラクル株式会社2022年3月24日
View Slide
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することを確約するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリース、時期及び価格については、弊社の裁量により決定され、変更される可能性があります。Safe harbor statement2 Copyright © 2022, Oracle and/or its affiliates
GoldenGate と OCI GoldenGateOCI GoldenGate を理解する3 Copyright © 2022, Oracle and/or its affiliates
Copyright © 2021, Oracle and/or its affiliates4BusinessContinuity99.999% Data AvailabilityNo Downtime MigrationsGoldenGateData requirements for mission-critical, cloud & multi-cloudTimelyInsightsStream AnalyticsReal-time Data Warehouse,Data Lake, Data LakehouseContinuousIntegrationGround to Cloud to Multi-cloudEvent-based Data IntegrationGoldenGate はリアルタイムデータ連携を実現するテクノロジーマルチ・クラウド環境においても最適なデータ連携を提供可能な基盤
OCI GoldenGate - フルマネージド型の違い5 Copyright © 2021, Oracle and/or its affiliatesOCI GoldenGate GG OCI Marketplace GoldenGateSolution ManagementGoldenGate 環境の作成・管理 < ----------------- 顧客側管理 ----------------- >Platform ServicesOracle Cloud AutomationsOracleマネージド未提供 未提供自動スケーリング (最大3倍)OCIモニタリング/サービス・テレメトリー分単位での計測・課金Control Plane/Data PlaneのREST API管理顧客側管理 顧客側管理DRおよびバックアップ/リストアアップグレードとパッチ適用(*)Private Endpoints と Secure Vault自律型DBとのウォレットの統合OS管理Infrastructure Management仮想化とTerraformのスタックオートメーションOracle提供 Oracle提供 顧客側提供インストール / 高速プロビジョニングサーバー管理Storage and Durability GuaranteesCore Networking(*)2021年10月時点、アップグレードが利用可能になってから手動で適用する方式となります。自動でのアップグレードは今後提供を計画しています。
• 構成の違いを理解する• OCI GoldenGate は v21.3 Microservice Architecture (以下MA) で提供される• MA は REST ベースで実装されており、従来の Classic Architecture とは操作や実装が異なる• 抽出プロセス(Extract) や 適用プロセス(Replicat)およびTrail ファイルについては従来からの技術を継承しているOCI GoldenGate の技術的な理解Copyright © 2022, Oracle and/or its affiliates6ServerProcess従来提供されてきた、【Classic Architecture】Source TargetTCP/IPServerProcessTrail File Trail FileManager Manager
• 構成の違いを理解する• 以下の図は OCI GoldenGateではなく、一般的な MA構成例である• 抽出プロセス(Extract) や 適用プロセス(Replicat)およびTrail ファイルについては従来からの技術を継承している• ブラウザからの操作で環境構築、レプリケーション操作・管理が可能になるOCI GoldenGate の技術的な理解Copyright © 2022, Oracle and/or its affiliates7【Microservices Architecture】Source TargetDistribution ReceiverServiceManagerServiceManagerAdministrationServerAdministrationServerRESTTrail File Trail File
• 構成の違いを理解する• OCI GoldenGate および、GG OCI Marketplace では GG HUB構成となるOCI GoldenGate の技術的な理解Copyright © 2022, Oracle and/or its affiliates8Source TargetTrail Fileremotecaptureremotedelivery(replicat)DeploymentServiceManagerAdministrationServer実装・管理・制御Distribution /Receiver(必要に応じて実装する)現時点では、以下に注意-> コマンドラインI/F(AdminClient) を持たない-> デプロイメント(実行環境コンテナ)やTrail Fileの維持・管理が少し違う-> Exadata [email protected] は未サポート-> 管理系の実装が異なるhttps://docs.oracle.com/en-us/iaas/releasenotes/services/goldengate/
OCI GoldenGate の理解 ~ 自動スケーリング• Autonomous Database同様、ベースサイズを選択し自動スケーリングをONにすると、最大3倍までの自動スケーリングが可能• 自動スケーリングは最大24OCPU• スケーリングはダウンタイムなくオンラインで実行され、1時間あたりに消費されたOCPUの実平均が課金対象(例:3OCPUでAuto ScalingをONにすると最大9OCPUとなり、1時間あたりの平均消費OCPUが60%であれば6OCPU分が課金されます)9 Copyright © 2022, Oracle and/or its affiliates04812Dynamic Auto-Scale自動的に3倍までスケールアップゼロダウンタイムでのスケーリングOCI GoldenGateCPU Usageワークロードの時間経過利用実態に応じた課金のため、小規模ではじめても大規模トランザクションに対応可能
2021年3月時点OCI GoldenGate 価格(日本円)Copyright © 2022, Oracle and/or its affiliates10Pay asYou GoAnnualFlexMetric Metric MinimumOracle Cloud Infrastructure - GoldenGate ¥161.292 ¥161.292 OCPU Per Hour -Oracle Cloud Infrastructure - GoldenGate - BYOL ¥38.71 ¥38.71 OCPU Per Hour -【補足】• 金額は1$=120円換算の日本円表記です• BYOLの換算率については、Oracle PaaS and IaaS Universal Credits Service Descriptions を御確認下さいhttps://www.oracle.com/us/corporate/contracts/paas-iaas-universal-credits-3940775.pdf
GoldenGate 案件におけるオブジェクトのアセスメント工程についてGoldenGate 案件で Database の把握は重要1. データ型やファンクションの制約を知るサポート対象の理解https://docs.oracle.com/cd/F51462_01/oracle-db/1-understanding-whats-supported.html#GUID-702F5D2B-58AB-4F08-9E20-50B95661B98B2. サポートされるデータ型、されないデータ型 (DBA_GOLDNEGATE_SUPPORT_MODE : R11.2.0.4 以降 )3. サポートされるDDL、されないDDLなどのチェック4. 移行やデータ連携の要件(サービス停止時間の有無、単方向・双方向、変換有無など)上記を含むGoldenGate連携における難易度把握や要件整理工程は必須Tips11 Copyright © 2022, Oracle and/or its affiliates
参考資料 : Cloud Premigration Advisor Tool(CPAT)を活用しよう12 Copyright © 2022, Oracle and/or its affiliateshttps://oracle-japan.github.io/ocitutorials/database/adb302-cpat/Cloud Premigration Advisor Tool (CPAT) Analyzes Databases for Suitability of Cloud Migration (ドキュメントID 2758371.1)コマンドの例./premigration.sh -connectstringjdbc:oracle:thin:@xxxx.xx.xxxx.com:1521:orcl -u sys--targetcloud Default --sysdba--migrationmethod GOLDENGATE-r text (or json)
DDL伝播ありなしGoldenGate 案件で Database の把握は重要要件の明確化と難易度の見極め13 Copyright © 2022, Oracle and/or its affiliates連携パターンOracle-Oracle(On-P, OCI に関わらず)Oracle-Oracle(他社Cloudが絡む場合)Non-Oracle(Oracle以外のRDBMSがある)RDBMS以外(Big Data などが絡む場合)移行か常時連携か移行案件常時連携変換の有無表構造はそのまま表構造が変わる連携対象数1:11:n や n:1連携方向単方向双方向CDR(競合)競合なし競合あり難易度(高)難易度(低)常時連携の要件は?DR(RPO,RTO)Zero Downtimeメンテナンス対応他(BCPに必須なデータのみの連携など)※ For Big Data 以外シンプルな移行案件のパターン
Oracle Databaseのアップグレードとクラウド移行実践GoldenGateとReal Application Testingの活用クラウド移行でGoldenGateを活用する場合の構成事例とTipsOracle Database Technology Night #54日本オラクル株式会社コンサルティングサービス事業統括テクノロジーコンサルティング事業本部浅井 純2022年3月24日
GoldenGateの構成例について15 Copyright © 2022, Oracle and/or its affiliates. All rights reserved.
On-premise から Cloud への移行にも利用できます『移行時のダウンタイムを短くしたい』と要件がある場合、GoldenGateは検討すべき移行方式のひとつです。移行当日に行う作業を大幅に削減できるため、移行当日の手戻り等のリスクを低減することができます。逆伝播を構成することで、切り戻しを見越した構成をとることも可能です。16現行システム 新システム 現行システム 新システム 旧システム 新システムApplication Application Application1) システム移行前 2) システム切替当日 3) システム移行後現行システムによるサービス提供 新システムによるサービス提供Copyright © 2022, Oracle and/or its affiliates. All rights reserved.
GoldenGateの構成例(①一般的な構成)17On-Premise DCSourceDBGoldenGateTrailFileOCI Tokyo RegionREDOソースDBサーバTargetDBGoldenGateTrailFileターゲットDBサーバ• ソース、ターゲットの各DBサーバにGoldenGateをインストール• ソースDBサーバ上にCapture、ターゲットDBサーバ上にReplicatを構成【対応可能製品/アーキテクチャ】GoldenGate Classic Architecture / GoldenGate Microservices ArchitectureCopyright © 2022, Oracle and/or its affiliates. All rights reserved.※ 以下は構成イメージであり、記載されていないコンポーネントもあります。
GoldenGateの構成例(②外部アクセス構成)18On-Premise DCSourceDBOCI Tokyo RegionREDOソースDBサーバTargetDBGoldenGateTrailFileターゲットDBサーバ• 中間サーバにGoldenGateとOracle Database Clientをインストール• 中間サーバにCapture/Replicatを構成して、ソースDBとターゲットDBにはリモートアクセスを行う【対応可能製品/アーキテクチャ】GoldenGate Classic Architecture / GoldenGate Microservices Architecture /OCI GoldenGate Microservices Architecture中間サーバCopyright © 2022, Oracle and/or its affiliates. All rights reserved.※ 以下は構成イメージであり、記載されていないコンポーネントもあります。
GoldenGateの構成例(③ダウンストリーム構成 - 中間サーバなし)19• マイニングDBサーバを別途用意し、Oracle Databaseを構築する• マイニングDBサーバ上にCapture、ターゲットDBサーバ上にReplicatを構成【対応可能製品/アーキテクチャ】GoldenGate Classic Architecture / GoldenGate Microservices ArchitectureCopyright © 2022, Oracle and/or its affiliates. All rights reserved.On-Premise DCSourceDBOCI Tokyo RegionREDOソースDBサーバTargetDBGoldenGateTrailFileターゲットDBサーバMiningDBREDOマイニングDBサーバGoldenGateTrailFile※ 以下は構成イメージであり、記載されていないコンポーネントもあります。
GoldenGateの構成例(③ダウンストリーム構成 - 中間サーバあり)20• マイニングDBサーバを別途用意し、Oracle Databaseを構築する• 中間サーバにCapture/Replicatを構成して、マイニングDBとターゲットDBにはリモートアクセスを行う【対応可能製品/アーキテクチャ】GoldenGate Classic Architecture / GoldenGate Microservices Architecture /OCI GoldenGate Microservices ArchitectureCopyright © 2022, Oracle and/or its affiliates. All rights reserved.On-Premise DCSourceDBOCI Tokyo RegionREDOソースDBサーバTargetDBGoldenGateTrailFileターゲットDBサーバ中間サーバMiningDBREDOマイニングDBサーバ※ 以下は構成イメージであり、記載されていないコンポーネントもあります。
GoldenGate と OCI GoldenGate どちらを利用するか?OCI GoldenGate は移行元のDBバージョンによっては利用できない場合がある。移行元のソース側は GoldenGate、移行先のターゲット側は OCI GoldenGate といった構成も可能。• OCI GoldenGateのバージョンは現在『21c』、アーキテクチャは『Microservice Architecture』✓ GoldenGate 21c で CertifyされているOracle Databaseのバージョンは、11.2.0.4, 12.1.0.2, 19c, 21cCertification Matrixにて対応を確認可能( https://www.oracle.com/middleware/technologies/fusion-certification.html )OS情報(種類/バージョン/ビット数)、DB情報(バージョン)から対応を確認する✓ Oracle Database 11.2.0.4でMicroservices Architectureを利用する場合、必須パッチが存在参考: Oracle GoldenGate -- Oracle RDBMS Server Recommended Patches (Doc ID 1557031.1)参考: Latest GoldenGate/Database (OGG/RDBMS) Patch recommendations (Doc ID 2193391.1)21 Copyright © 2022, Oracle and/or its affiliates. All rights reserved.
GoldenGate導入時の影響について22 Copyright © 2022, Oracle and/or its affiliates. All rights reserved.
各構成例の影響比較(サマリ)23• 現行DBサーバ(ソースDBサーバ)へのリソース影響やデータ伝播性能、構成の複雑性を考慮し、GoldenGateの構成を検討する• 統合キャプチャ利用前提での比較(GoldenGate18c(18.1.0)以上のリリースでクラシック・キャプチャは非推奨)構成パターン ソースDBサーバOSリソース影響ソースDBサーバDBリソース影響構成複雑度 データ伝播性能①一般的な構成 大 大 小 小②外部アクセス構成 中 大 中 大③ダウンストリーム構成 小 小 大 中【凡例】大/中/小:各評価項目内(縦軸)を比較した相対評価ですCopyright © 2022, Oracle and/or its affiliates. All rights reserved.
各構成例の影響比較(1/2)24• 現行DBサーバ(ソースDBサーバ)へのリソース影響やデータ伝播性能、構成の複雑性を考慮し、GoldenGateの構成を検討する• 統合キャプチャ利用前提での比較(GoldenGate18c(18.1.0)以上のリリースでクラシック・キャプチャは非推奨)構成パターン ソースDBサーバOSリソース影響 ソースDBサーバDBリソース影響①一般的な構成大• インストールファイル、Trailファイルを保持するディスク領域の考慮• プロセスによるメモリ、CPU、I/Oへの考慮大• 統合キャプチャ実行用のStreamsプールの確保• REDOログをマイニングするためのバックグラウンドプロセスが稼働②外部アクセス構成中• ①と比べてメモリ/CPUへの影響は小さい• I/Oは中間サーバからのREDO読込み• ディスク領域の考慮は不要大• 統合キャプチャ実行用のStreamsプールの確保• REDOログをマイニングするためのバックグラウンドプロセスが稼働③ダウンストリーム構成小• ①と比べてメモリ/CPUへの影響は小さい• I/OはマイニングDBへのREDO転送• ディスク領域の考慮は不要小• 統合キャプチャ実行用のStreamsプールはマイニングDBで確保• REDOログをマイニングするためのバックグラウンドプロセスはマイニングDBで稼働【凡例】大/中/小:各評価項目内(縦軸)を比較した相対評価ですCopyright © 2022, Oracle and/or its affiliates. All rights reserved.
各構成例の影響比較(2/2)25• 現行DBサーバ(ソースDBサーバ)へのリソース影響やデータ伝播性能、構成の複雑性を考慮し、GoldenGateの構成を検討する• 統合キャプチャ利用前提での比較(GoldenGate18c(18.1.0)以上のリリースでクラシック・キャプチャは非推奨)構成パターン 構成複雑度 データ伝播性能①一般的な構成小• ソースDBとターゲットDBのみで構成できる小• GoldenGateがDBサーバ上で構成されるため、伝播性能は高い②外部アクセス構成中• 中間サーバが必要• Oracle Database Clientによる接続設定が必要大• Oracle Netによるアクセスはネットワーク帯域に依存• 全てのREDOログ情報を中間サーバに持っていく必要がある③ダウンストリーム構成大• マイニングDBへのREDOログ転送設定が必要中• REDOログ転送はネットワーク帯域に依存• 全てのREDOログ情報をマイニングDBサーバに持っていく必要がある【凡例】大/中/小:各評価項目内(縦軸)を比較した相対評価ですCopyright © 2022, Oracle and/or its affiliates. All rights reserved.
GoldenGate 利用にあたってのOracle Databaseへの設定項目(1/2)1. アーカイブログモードの設定(ソースDBのみ)• CaptureプロセスがREDOログ情報を参照するための必須の設定• 設定変更時にはDB再起動が必要2. 各種ロギングの設定(ソースDBのみ)• 強制ロギング(force logging)の設定【alter database文で設定】✓NOLOGGING処理も含め、全てのトランザクションをキャプチャする目的で、GoldenGateでは設定を強く推奨• 最小サプリメンタルロギングの設定【alter database文で設定】✓GoldenGateにおいて必須の設定✓トランザクション発生中に設定した場合にハングする事象が確認されているため、MOUNT状態での実施を検討する参考: ALTER DATABASE ADD/DROP SUPPLEMENTAL LOG DATA 文の実行がハングする(KROWN:160831) (Doc ID 1763279.1)✓設定時に共有プールのフラッシュが行われるため、SQLの再解析により実行計画変動の可能性参考: サプリメンタル・ロギングについて(KROWN:34739) (Doc ID 1711572.1)• 表単位/スキーマ単位のサプリメンタルロギングの設定【ggsciコマンドで設定】✓伝播に必要な列(主キーや一意キー、GoldenGateで定義した代替キー)の論理的な値の情報がREDOに出力される✓設定によりREDO生成量は増加するが、増量は10%未満であることがほとんど。主キーなし表がある場合は増分傾向が大きい26 Copyright © 2022, Oracle and/or its affiliates. All rights reserved.
GoldenGate 利用にあたってのOracle Databaseへの設定項目(2/2)3. 推奨DBパッチの適用(ソースDB,マイニングDB,ターゲットDB)• データベースに対するパッチを確認し、必要に応じて適用する✓基本的な考えとして、最新のDBBP/RU+Merge Patch の適用が推奨される✓OCI GoldenGateをDB11.2で利用する場合は、Microservices Architectureを利用するための必須パッチが存在参考: Oracle GoldenGate -- Oracle RDBMS Server Recommended Patches (Doc ID 1557031.1)参考: Latest GoldenGate/Database (OGG/RDBMS) Patch recommendations (Doc ID 2193391.1)4. enable_goldengate_replication初期化パラメータの変更(ソースDB,マイニングDB,ターゲットDB)• 11.2.0.4/12.1.0.2以降のDBバージョンでは、enableへの変更が必須5. GoldenGate用DBユーザの作成(ソースDB,マイニングDB,ターゲットDB)• 専用のDBユーザを準備し、要件に応じた適切な権限付与を行う6. Streamsプールの確保(ソースDB or マイニングDB,ターゲットDB)• ダウンストリーム構成の場合、マイニングDBでStreamsプールを確保できればよい27 Copyright © 2022, Oracle and/or its affiliates. All rights reserved.
クラウド移行案件におけるGoldenGate構成事例について28 Copyright © 2022, Oracle and/or its affiliates. All rights reserved.
クラウド移行案件におけるGoldenGate構成事例①29Source DB Target DB 使用製品 GoldenGate構成ExadataOracle 11.2.0.4ExaCSOracle 19c現行: GoldenGate CA 12.2, 19.1新: GoldenGate CA 19.1一般的な構成逆伝播(ターゲット):外部アクセス構成OCI Osaka RegionExaCSOn-Premise DCPrimary11.2.0.4Linux 5.x中間サーバ(Linux 7.x)GG12.2GG19.1GG19.1TrailFileNewPrimary19cOCI Tokyo RegionExaCSNewStandby19cDGStandby11.2.0.4DG順伝播逆伝播29※ CA: Classic ArchitectureCopyright © 2022, Oracle and/or its affiliates. All rights reserved.
クラウド移行案件におけるGoldenGate構成事例①30Source DB Target DB 使用製品 GoldenGate構成ExadataOracle 11.2.0.4ExaCSOracle 19c現行: GoldenGate CA 12.2, 19.1新: GoldenGate CA 19.1一般的な構成逆伝播(ターゲット):外部アクセス構成OCI Osaka RegionExaCSOn-Premise DCPrimary11.2.0.4Linux 5.x中間サーバ(Linux 7.x)GG12.2GG19.1GG19.1TrailFileソース・ターゲットでGGバージョンが異なる逆伝播構成でのGGバージョンNewPrimary19cOCI Tokyo RegionExaCSNewStandby19cDGStandby11.2.0.4DG順伝播逆伝播30※ CA: Classic ArchitectureCopyright © 2022, Oracle and/or its affiliates. All rights reserved.ソースDBサーバのOSとDBの組合せでCertifyされるGGバージョンを選択〇:GG12.2→GG19c×:GG19c→GG12.2
31On-Premise DC OCI Tokyo Regionクラウド移行案件におけるGoldenGate構成事例②ADGPrimary12.2.0.1Standby12.2.0.1 ADGStandby12.2.0.1Mining12.2.0.1REDO転送(Archのみモード)GoldenGateStandby12.2.0.1ExaCSADGUpgradeto 19cNewPrimary19cSource DB Target DB 使用製品 GoldenGate構成ExadataOracle 12.2.0.1ExaCSOracle 19cGoldenGate CA 19.1 ダウンストリーム構成(中間サーバなし)※ CA: Classic Architecture31 Copyright © 2022, Oracle and/or its affiliates. All rights reserved.
32On-Premise DC OCI Tokyo Regionクラウド移行案件におけるGoldenGate構成事例②ADGPrimary12.2.0.1Standby12.2.0.1 ADGStandby12.2.0.1Mining12.2.0.1REDO転送(Archのみモード)GoldenGateStandby12.2.0.1ExaCSADGUpgradeto 19cマイニングDBをOCI上に構成DGカスケード構成の活用NewPrimary19cSource DB Target DB 使用製品 GoldenGate構成ExadataOracle 12.2.0.1ExaCSOracle 19cGoldenGate CA 19.1 ダウンストリーム構成(中間サーバなし)※ CA: Classic Architecture32 Copyright © 2022, Oracle and/or its affiliates. All rights reserved.クラウド上にマイニングDBを構成するとリソースチューニングがしやすいオンプレミス側の設定変更を軽減するため、クラウド側にスタンバイDBを構成初期データ移行はカスケード先のスタンバイDBからUpgradeする方式
OCI Tokyo RegionExaCSクラウド移行案件におけるGoldenGate構成事例③33On-Premise DCDGPrimary11.2.0.4Standby11.2.0.4Mining19cREDO転送(Archのみモード)OCI GoldenGateNewPrimary19cOCI GoldenGateSource DB Target DB 使用製品 GoldenGate構成Oracle 11.2.0.4 ExaCSOracle 19cOCI GoldenGate MA 21c ダウンストリーム構成(中間サーバあり)※ MA: Microservices ArchitectureCopyright © 2022, Oracle and/or its affiliates. All rights reserved.
OCI Tokyo RegionExaCSクラウド移行案件におけるGoldenGate構成事例③34On-Premise DCDGPrimary11.2.0.4Standby11.2.0.4Mining19cREDO転送(Archのみモード)OCI GoldenGateNewPrimary19cOCI GoldenGateパッチ適用影響の軽減REDO転送モードの検討Source DB Target DB 使用製品 GoldenGate構成Oracle 11.2.0.4 ExaCSOracle 19cOCI GoldenGate MA 21c ダウンストリーム構成(中間サーバあり)※ MA: Microservices ArchitectureCopyright © 2022, Oracle and/or its affiliates. All rights reserved.11.2.0.4の場合、MA用DBパッチ適用が必要マイニングDBをクラウド側に19cで構築することでパッチ適用は不要にアーカイブREDOログのみをキャプチャするモードの伝播性能 vs パッチ適用影響のトレードオフ
日本オラクル株式会社テクノロジーコンサルティング事業本部Platform Solution本部大森慎司2022/3Oracle Databaseのアップグレードとクラウド移行実践~アップグレード案件におけるReal Application Testing活用パターン事例~Oracle Database Technology Night #54
36以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。Copyright © 2022, Oracle and/or its affiliates. All rights reserved.
37[経歴] SIerでアプリエンジニア->DBA -> オラクルコンサル• オラクル歴 約 10年半 (DB関連案件~Cloud関連案件を担当)日本オラクル Web記事掲載実践データベース性能テストの極意:Oracle Real Application Testingを使ってみようhttps://www.oracle.com/jp/technical-resources/article/first/real-application-testing.html『書籍: Oracleの現場を効率化する100の技』共著• 第5章システムテストのTips などを担当自己紹介:大森 慎司(おおもり しんじ)Copyright © 2022, Oracle and/or its affiliates. All rights reserved.
381. 19c UpgradeとRAT概要2. RAT(SPA)活用パターン事例3. SPA実行効果の実例4. 案件事例TipsアジェンダCopyright © 2022, Oracle and/or its affiliates. All rights reserved.
39 Copyright © 2022, Oracle and/or its affiliates. All rights reserved.19c UpgradeとRAT概要
40 Copyright © 2022, Oracle and/or its affiliates. All rights reserved.⇒ 今、19cへの移行案件が増えていますOracle Databaseサポート・ライフサイクル2009201020112012201320142015201620172018201920202021202220232024202520262027EXTENDED2027/4まで18c (12.2.0.2相当)従来 12.2.0.2として計画されていたリリースはRelease 18となります。また、12.2.0.3として計画されていたリリースはRelease 19となります。Release 18, 19は12.2のライフタイムサポートポリシーの範囲でサポート期間が定められます。Oracle Database 19cが12.2の最終リリースになります。各リリースにおいて最終リリースを適用いただく事でのExtended Supportの適用が可能となります。11.2.0.4 EXTENDED12.1.0.2Paid Extended SupportPremier Waived Extended Support fee12.2.0.1Oracle 19OrOracle 1912.2ファミリー最終リリース各サポートレベルでの提供内容*Premier Support :24x365日の技術問い合わせ、不具合修正とパッチ提供、セキュリティ・アラートおよび修正、OS等の新規認証Extended Support:24x365日の技術問い合わせ、不具合修正とパッチ提供、セキュリティ・アラートおよび修正Sustaining Support:24x365日の技術問い合わせ、作成済のパッチ提供*詳細は Oracle Software テクニカル・サポート・ポリシー参照12.2 ファミリーMOS Note#742060.1 参照Market Driven SupportLIMITEDERRORCORRECTIONLimited Error CorrectionEXTENDED19c (12.2.0.3相当) 2024/4までMARKETDRIVENSUPPORT
41Upgradeのテストに大きな工数をかけるのは難しいDBアップグレード時のテスト範囲Upgrade時のテストパターン(事例)1. ほとんどやらない➢ 本番稼働後に、性能トラブル多発し、「そんな影響あるとは知らなかった」というケースもありCopyright © 2022, Oracle and/or its affiliates. All rights reserved.2. バッチ処理のみテスト(バッチウィンドウに収まること)➢ 性能劣化しそう/したときに影響が大きい処理=負荷の高い処理(SQL) =バッチ➢ それ以外で性能トラブルが発生した場合は、そのとき対処3. バッチ処理+オンライン処理抜粋(※)してテスト(※)主要/重要な処理 、性能懸念の処理などから選定➢ オンライン処理の中でも「検索/レポート出力処理」など、重そうな処理を見繕ってテスト➢ 検索条件など、動的にSQL生成されるものはパターン網羅性に課題あり
42Real Application Testing(RAT)とは?Copyright © 2022, Oracle and/or its affiliates. All rights reserved.Oracle Real Application Testing(以下RAT) は、主にUpgradeなどのシステム変更時に使用できる、高品質かつ低作業コストでテストするためのEEオプションです。Real Application TestingSQL Performance Analyzer (SPA)⚫ SQL単体テスト(性能/非互換検出)⚫ システム変更前後でのSQLの実行計画やパフォーマンスの比較レポートを生成Database Replay⚫ システムテスト⚫ 本番環境のトランザクションを記録(キャプチャ)し、テスト環境で再現(リプレイ)、比較レポートを生成?【RATメリット】:テスト大幅効率化(テスト工数削減)、テスト期間短縮実行計画や単体性能、SQL互換性(エラー有無)のチェックにスループットのチェック、リソース使用量のチェックに
43RATのユースケースCopyright © 2022, Oracle and/or its affiliates. All rights reserved.• アップグレード時のSQL互換性やSQL性能影響をチェック– SPAを使用し、数万本のSQLからエラーの発生するSQLを発見– SPAを使用し、数万本のSQLから性能劣化するSQLを発見• 定期パッチ適用/メンテナンスによる安定運用– SPA/DB Replayにより、定期パッチの適用や環境設定変更に必要なテストをルーティン化• H/W移行にともなう性能影響の調査– DB Replayにより、新しいH/Wでのリソース使用量の調査や新たなボトルネックの調査
44SPA選定理由Copyright © 2022, Oracle and/or its affiliates. All rights reserved.• SQLの網羅的なテストができる(オンラインの動的SQL等)• SQL非互換の観点での評価が容易にできる• OCI DBSystemではRATオプションライセンスも不要(EEのみで使用可、 Diagnostics/Tuning Packも同様)
45SPA実施/評価の流れCopyright © 2022, Oracle and/or its affiliates. All rights reserved.実行計画が変化したSQL数 実行計画が変化しないSQL数性能が劣化したSQL数性能が変わらないSQL数性能が向上するSQL数テスト対象のSQL数実行計画の比較(EXPLAIN PLAN)性能比較(EXECUTE)チューニング対象• 問題となるSQLの絞り込み– テスト対象のSQLの実行計画の比較⇒実行計画が変化したSQLの性能比較⇒性能が低下するSQLのチューニングを実行– 取得したSTSをフィルタし、再利用してテストすることで、テスト準備にかかる時間、コストを抑え効率的にテストを実施評価/対応フロー
46SPA技術詳細についてCopyright © 2022, Oracle and/or its affiliates. All rights reserved.• SPAの技術詳細や、実施手順の詳細説明、および比較レポートイメージ/見方などは、今回は内容として割愛します。下記の過去Technology Nightの資料をご参照ください。[2020/4/9(木)開催]Oracle Database Technology Night #35「データベース・アップグレード成功のために知っておきたいこと」– データベースアップグレードに有効 Real Application Testing再入門(PDF)
47 Copyright © 2022, Oracle and/or its affiliates. All rights reserved.RAT(SPA)活用パターン事例1. Exadataリプレイス(SQL非互換テスト)2. DBCS 移行3. ExaCS 移行 using DataGuard
481. Exadataリプレイス(SQL非互換テスト)Copyright © 2022, Oracle and/or its affiliates. All rights reserved.Exadata X8MExadata X5現行基盤 新基盤STSDBCSORACLE CLOUD INFRASTRUCTURE (TOKYO REGION)実行計画比較 ①SQL非互換評価を目的としてOracle Cloud(DBCS)を利用してテスト+ 12c/19c環境を迅速に作成できる+ OnPの構築スケジュールと独立した評価が可能②実行計画変動のあるSQLに対して、OnP Exadata(新基盤)を利用してテスト+ 実データを利用して性能評価を実施可能②➢ ExadataのOnP移行(X5->X8Mリプレイス)➢ OCI環境を使ってSQLバージョン非互換/実行計画変動の評価を実施①メリット:新Exadata機器導入までの期間を有効に使ってスピーディに環境構築し、テストが可能。データを持って行かずに実施するため、よりライトに実施可能。短期間の使用のため、Cloud費用はかなり低価格に収められる。(本案件はDBCSではあるが)ExaCSを使ったテストもコストを抑えて実施可能。STS
492. DBCS 移行Copyright © 2022, Oracle and/or its affiliates. All rights reserved.➢ 本番環境が11gR2 OCI DBCSで運用していたものを19c DBCSに移行➢ Cloud UI機能を利用してテスト環境を作成しSQL単体性能テストをRAT(SPA)で実施ObjectStorageスタンドアロンバックアップRATテスト用Database(11.2)DB本番Database(11.2)DB RATテスト用Database(19c)DB Upgradeメリット:本番データを使って、SQL性能テスト(SPA)を実施。SQL性能テスト時も、SPAでは本番相当のCPUを用意する必要もないため、コストは抑えられる。DBCS環境ではバックアップからのDB複製がGUI操作で容易にできるため、DBCS環境で本番稼働している場合はRATテスト環境の構築も、より簡単に実施可能
503. ExaCS 移行 using DataGuardCopyright © 2022, Oracle and/or its affiliates. All rights reserved.➢ 本番環境をOnP Exadataで運用していたものをOCI ExaCS(19c)に移行➢ DataGuard機能/Cloud UI機能を使って、OnP->OCIにデータ移行/アップグレードを実施12.2.0.1OnPデータセンター19cTokyoリージョン12.2.0.1ActiveDataGuardUpgrade(Cloud UI)12.2.0.1ActiveDataGuard12.2.0.112.2.0.1 ActiveDataGuardActiveDataGuard DG切離し現行Verテスト環境を作成DG切離し現行Ver/新VerのテストDB環境をそれぞれ作成メリット:DataGuardの複製から19c環境を作っているため、オブジェクト/データの移行が不要なだけでなく、STSの移行も不要。ExaCS環境で、DBを複数複製することで、複数環境で同時に別々のテストが可能。※固定OCPU/Memoryの範囲であれば、同一筐体内のDB/DBhomeの数は、OCIコスト上の影響はなし。STS取得Primary Standby
51 Copyright © 2022, Oracle and/or its affiliates. All rights reserved.SPA実行効果の実例
STS(SQLキャプチャ)の例52 Copyright © 2022, Oracle and/or its affiliates. All rights reserved.本番環境で取得したSTSのSQL_IDの件数とPlan Hash Value(PHV)の件数(種類)の遷移グラフ(一例)です。• RAC(2ノード)の環境のため、それぞれのノードでSTSを取得しています。• キャプチャの後半になるにつれてSQL_ID/PHVともにグラフの傾斜が緩やかになり、収束傾向にあることがわかります。⇒SQLの種類の網羅性は高い状況にあるといえます。※SQL_ID Count は、DBA_SQLSETのSTATEMENT_COUNT から取得PHV Count は、DBA_SQLSET_STATEMENTS の COUNT(DISTINCT PLAN_HASH_VALUE) から取得
SQL非互換の例53 Copyright © 2022, Oracle and/or its affiliates. All rights reserved.「副問い合わせ内で GROUP BY 句使用時のSELECT リストの制限事項の変更について(KROWN:141697) (Doc ID 1749380.1)」に該当した例• 11gR2からの変更(仕様の厳格化)によりエラーが発生する事例(以前のバージョンでは)EXISTS 句内の副問い合わせで GROUP BY 句に含まれない列が SELECT 句に指定された場合、それを無視する動作となります。Oracle Database 11g Relase 2(11.2.0) にて動作が変更され、EXISTS 句内の副問い合わせでも、GROUP BY 句で指定した以外の列が SELECT句に指定されていれば、ORA-979 が発生するようになっています。
SQL非互換の例54 Copyright © 2022, Oracle and/or its affiliates. All rights reserved.エラーコード/メッセージSQLサンプル 説明ORA-00937: 単一グループのグループ関数ではありません。select nvl(min(a.col1),(selectmax(b.col1) from table2 b)) fromtable1 a;11gR1->11gR2(11.2.0.4)での非互換です。グループ関数と NVL 関数を含むクエリに副問い合わせが含まれていると ORA-937が発生します (Doc ID 2539061.1)ORA-00918: 列の定義が未確定です。SELECT FROM a JOIN b on a. =b.JOIN c ona. = c.;10gR2->11gR1での非互換です。同名の列を持つ表を ANSI JOIN で結合した際、ORA-918 が発生する(KROWN:128950) (Doc ID 1743172.1)ORA-00913: 値の個数が多すぎます。insert into hist_dba_profiles selectsysdate,a.* from dba_profiles aDBAディクショナリのカラムがバージョンアップによって増えたことによるエラー(select * 使用が原因)【バージョン非互換】です。
SQL実行計画比較の例55 Copyright © 2022, Oracle and/or its affiliates. All rights reserved.以下、SPA実行計画比較の実行結果サマリの一例です。分類 SQL本数 割合 コメント対象SQL 約64,000本 -実行計画変動なし 約47,600本 74.4% 比較元と比較先のDBでオプティマイザが作成した実行計画が一致していたSQLです。実行計画変動あり 約10,000本 15.6% 比較元と比較先のDBでオプティマイザが作成した実行計画が変動したSQLです。エラー発生 約6,400本 10.0% SPAによる検証時に、エラーが発生したSQLです。サポート対象外 0本 0%SPAが仕様上評価できないSQLです。今回、対象となるSQLはありませんでした。• 「エラー発生」の対象SQLの大半は「ORA-00907: 右カッコがありません。」であり、これはダイナミック・サンプリング機能により発行された内部SQLで発生することが確認されており無視可能です。• その他のエラーに関してもすべて、旧・新のバージョンでのSPA実行でどちらでも発生しており、SQLバージョン非互換のエラーはありませんでした。• SQL実行計画の変動があったSQLに対して、SQL性能比較を実施します。
SPAにおける制限事項56 Copyright © 2022, Oracle and/or its affiliates. All rights reserved.SPAではサポートされるSQLとサポートされない(SPAでは評価できない)SQLが存在するため、SPAでのテスト対象SQLを明確化することが重要です。SQL 評価可否• SQL実行計画が作成される問い合わせSQL• INSERT文(SELECT文を含むものは実行計画が作成される為、評価可能)• DDL文(TABLE/INDEX作成、TABLE LOCK等)• Private DB Link経由のSQL• Export/Import処理• パラレルDML• Mview Refresh• オプティマイザ統計情報収集• Dynamic SamplingのSQL調査/評価の要否を検討。必要な場合は、別途単体テストを検討する。SPA単体性能テスト実施
SQL性能比較の例57 Copyright © 2022, Oracle and/or its affiliates. All rights reserved.以下、SPA性能比較の実行結果サマリの一例です。分類 SQL本数 割合 コメント対象SQL 約10,000本 - 比較元と比較先のDBでオプティマイザが作成した実行計画が変動したSQLです。性能変動なし 約9,770本 97.7% SPAによる検証時に、比較元と比較先で性能変動がなかったSQLです。SQL性能改善 6件 SPAによる検証時に、比較元より比較先で性能が改善したSQLです。SQL性能劣化発生 4本 SPAによる検証時に、比較元より比較先で性能劣化が発生したSQLです。タイムアウト発生 1本 SPAによる検証時に、タイムアウト(600秒超過) が発生したSQLです。エラー発生 約180本 1.8% SPAによる検証時に、エラーが発生したSQLです。サポート対象外 約40本 0.4% SPAが仕様上評価できないSQLです。• SQL性能劣化発生のSQLについては、対象SQLの個別分析を実施の上、SQLチューニングを検討/実施• タイムアウト発生のSQLについては、タイムアウト値を引き上げて再実行して検証。• エラー発生のSQLについては、全て12c/19c共通のエラーで、SQL非互換のエラーは見受けられませんでした。• サポート対象外のSQLについては、すべて「パラレルDML」でした。
58 Copyright © 2022, Oracle and/or its affiliates. All rights reserved.SQL性能比較の例SPA性能比較の実行結果は以下パラメータ値に基づき分類分けされます(参考)WORKLOAD_IMPACT_THRESHOLD: ワークロードに対するSQL文の影響のしきい値。(※SQLの「Execution Frequency」(=STS内のExecutions情報)に基づいて、そのSQLのSTSワークロード全体に対する影響が計算される)SQL_IMPACT_THRESHOLD: SQLに対する変更の影響のしきい値。
59 Copyright © 2022, Oracle and/or its affiliates. All rights reserved.案件事例Tips
60SPA実行TipsCopyright © 2022, Oracle and/or its affiliates. All rights reserved.【事象】メタデータのみ(データ無し)のインポートにもかかわらず、表領域が大量に使用され領域枯渇が発生【原因】STORAGE句のMINEXTENTSが大きな値となっていたため(本番環境などでは予めデータサイズを見込んでMINEXENTSを大きくしていることがあるため注意)【対処】impdpオプションとしてTRANSFORM=STORAGE:n(TRANSFORM=SEGMENT_ATTRIBUTES:n)を設定準備: メタデータ(DBオブジェクト)のインポートOracle Database Release 19 ユーティリティ3 Oracleデータ・ポンプ・インポート3.4.51 TRANSFORMSEGMENT_ATTRIBUTES:[Y | N]この変換は、CLUSTER、CONSTRAINT、INDEX、ROLLBACK_SEGMENT、TABLEおよびTABLESPACEの各オブジェクト型に対して有効です。値をYに指定すると、適切なDDLにセグメント属性(物理属性、記憶域属性、表領域およびロギング)が指定されます。デフォルトはYです。STORAGE:[Y | N]この変換は、CLUSTER、CONSTRAINT、INDEX、ROLLBACK_SEGMENTおよびTABLEの各オブジェクト型に対して有効です。値をYに指定すると、適切なDDLにSTORAGE句が指定されます。デフォルトはYです。SEGMENT_ATTRIBUTES=Nの場合、このパラメータは無視されます。
61SPA実行TipsCopyright © 2022, Oracle and/or its affiliates. All rights reserved.【事象】STSキャプチャに長時間かかる【原因】 カーソルキャッシュからの一括取得にてSTS取得する場合にキャッシュサイズが大きくSQL本数が膨大なため【対処】定期的な取得(DBMS_SQLTUNE.CAPTURE_CURSOR_CACHE_SQLSET)を使い、取得インターバル内に実行されたSQLの増分取得を行うことで1回あたりのSTSキャプチャ本数を減らし、かつ、SQLの網羅性を高めることが可能STS取得:比較項目 定期的に複数回取得 コマンド実行時に1回だけ取得本番負荷影響あり・CPU使用率への影響【低】あり・CPU使用率への影響【一定時間1コア占有】(コア占有時間は共有プールのサイズ/対象SQL本数/抽出フィルタ条件に依存)収集期間長い (方針次第)月次バッチや年次バッチなど、特定日に実行される処理も収集する場合は長い期間が必要となる。短い即時収集が可能。SQL収集網羅性高い (方針次第)定期的に取得件数をモニタリングすることでSQL本数の収束傾向が確認可能低い (方針次第)実行時点でカーソル・キャッシュに存在するSQLのみが取得対象となる。
62SPA実行TipsCopyright © 2022, Oracle and/or its affiliates. All rights reserved.【事象】リテラルSQLが多い環境でのSTSキャプチャはSYSAUX表領域の使用サイズが膨れ上がるケースがある【原因】 バインド変数化されていないリテラルSQLは個々のSQLが別SQL_IDとなりキャプチャされるSQL本数が収束せず膨大となるため【対処】STSキャプチャのSQL本数とPHVの種類を定期的にロギングして観察することで収束ポイントを判断する(リテラルSQLのSQL_ID(本数)は収束しないがPHVは収束するため)その他、CURSOR_SHARING=FORCE 設定の対処が可能かも検討する取得したSQL_IDの数時間0バインド変数が多い環境リテラルSQLが多い環境バインド変数化しているかどうかでSQL_IDの増え方が異なる本数時間0SQL_ID数(リテラル)PHVの累積数PHVは増加しなくなるSQL_ID数(バインド)STS取得:
63SPA実行TipsCopyright © 2022, Oracle and/or its affiliates. All rights reserved.SPA試行:PL/SQLパッケージおよびタイプ・リファレンス165 DBMS_SQLPA165.3.9 SET_ANALYSIS_TASK_PARAMETERプロシージャLOCAL_TIME_LIMIT: 文単位のタイムアウト(秒)。TEST_EXECUTE_DOP: SPAタスクを実行する際に必要な同時実行性のレベルを指定します。【事象】 SPAタスクの実行に長時間かかる【原因】 TEST EXECUTEでは、実際にSQLをシリアルに実行するためSQL本数に応じて時間がかかる【対処1】LOCAL_TIME_LIMITパラメータを活用することで長時間SQLはタイムアウトさせ個別実行する【対処2】TEST_EXECUTE_DOPパラメータを活用することでSQLを並列に同時実行する(★18c以降)
64SPA実行TipsCopyright © 2022, Oracle and/or its affiliates. All rights reserved.SPA比較実行:PL/SQLパッケージおよびタイプ・リファレンス165 DBMS_SQLPA165.3.9 SET_ANALYSIS_TASK_PARAMETERプロシージャPLAN_LINES_COMPARISON:- ALWAYS --すべてのシナリオの計画を行ごとに比較します。【事象】実行計画が同じにもかかわらず、plan_change=y と判定される【原因】Endianの変更(例Solaris<->Linux) を伴うOS移行をした場合にはplan hash value(PHV)が異なるため、同じ実行計画でもplan_change=Yと判断される【対処】 PLAN_LINES_COMPARISONパラメータをALWAYSに設定することで、PHVの比較ではなく実行計画の行レベルの比較を行う➢ Different Plan Hash Value due to Migration from Solaris to Linux Causing SQL Performance Analyzer to ReportIncorrect Plan Changes (Doc ID 2065831.1)
65SPA実行TipsCopyright © 2022, Oracle and/or its affiliates. All rights reserved.SELECTP1.SQL_ID AS SQLID,P1.PLAN_HASH_VALUE AS PHV_12C,P2.PLAN_HASH_VALUE AS PHV_19CFROMDBA_ADVISOR_SQLSTATS P1,DBA_ADVISOR_SQLSTATS P2WHERE P1.TASK_NAME = AND P1.EXECUTION_NAME = ANDP2.TASK_NAME = AND P2.EXECUTION_NAME = ANDP1.SQL_ID = P2.SQL_ID ANDP1.PLAN_HASH_VALUE <> P2.PLAN_HASH_VALUE/SPAレポート作成:【事象】 SPAレポート(HTML)のサイズが膨大になり出力に時間がかかる【原因】 レポートに出力させるSQL詳細の本数を指定する top_sql の値(デフォルト100本)を大きくしすぎると出力情報が多すぎHTMLファイルが膨大になる※TYPE => HTML / TOP_SQL => 1000 / SECTION => ALLでの実サイズ例:約640MB【対処】 SECTION => SUMMARYでサマリ情報のみを取得する(全SQLの詳細情報を出力させることはナンセンス)実行計画が変動したSQL(PHV)一覧を取得したければ、以下例のようなSQLで抽出可能
66SPA実行TipsCopyright © 2022, Oracle and/or its affiliates. All rights reserved.【課題】 SPA実行結果でエラーが発生した場合に、それがSQL非互換なのか、SPA実行上の問題(SPA制約/環境問題)なのか、の区別が難しい【対処】ERRORSのレポートを、(COMPAREに対して出力するのではなく) 各SPA実行(旧Ver/新Ver)に対して出力するSPA評価(SQL非互換):新旧バージョンともにエラーの内容/件数が一致している⇒エラーはバージョン非互換によるものではない、と判定できる新旧バージョンともにエラーの内容/件数が一致している⇒エラーはバージョン非互換によるものではない、と判定できる
Thank you67 Copyright © 2022, Oracle and/or its affiliates [Date]
Our mission is to help people seedata in new ways, discover insights,unlock endless possibilities.