Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【DB19c Upgrade!】エピソード09 クラウドでのパフォーマンス・テスト

【DB19c Upgrade!】エピソード09 クラウドでのパフォーマンス・テスト

データベースをアップグレードしよう! バーチャル・クラスルーム
~ Oracle Databaseの運用をされている方が必ず知っておきたいアップグレードのベスト・プラクティス

エピソード09 クラウドでのパフォーマンス・テスト
- なぜクラウドを使用するのか/ユースケース、アップグレード・移行のパフォーマンス安定性処方箋、クラウド上での統計生成と比較/最適化
https://www.youtube.com/watch?v=nbF27r5y1Tk

既に、アップグレードプロジェクトにおけるパフォーマンスの安定性についてお伝えしましたが、さらに一歩踏み込んでお伝えします。パフォーマンスの安定性の大きな部分を占めていることは間違いないからです。
今回は、クラウドを利用してパフォーマンス・テストを行う方法をご紹介します。テスト用に適切なハードウェアを探すのに苦労することがあるのはよくわかります。追加のライセンスが必要だったり、予備のハードウェアが足りなかったり。データベースをどのようにクラウド上に持っていき、どのようなパフォーマンス・テストを行うかを紹介します。そして、その結果を持ち帰り活用します。そこが重要なところです。
まず、パフォーマンス・テスト・プロジェクトで見られる一般的な課題についてお話しします。

oracle4engineer

May 10, 2022
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. Oracle Database 19c Copyright © 2022, Oracle and/or its affiliates

    1 クラウドでのパフォーマンス・テスト UnsplashのDavid Beckerによるフォト Roy Swonger, Mike Dietrich & Daniel Overby Hansen Oracle Database Upgrade, Utilities, Cloud Migration and Patching
  2. Vice President Database Upgrade, Utilities & Patching Roy F. Swonger

    @RoyFSwonger Copyright © 2022, Oracle and/or its affiliates 2
  3. Distinguished Product Manager Database Upgrade and Migrations Mike Dietrich https://MikeDietrichDE.co

    m @MikeDietrichDE mikedietrich Copyright © 2022, Oracle and/or its affiliates 3
  4. Senior Principal Product Manager Cloud Migration Daniel Overby Hansen https://dohdatabase.com

    @dohdatabase dohdatabase Copyright © 2022, Oracle and/or its affiliates 4
  5. Copyright © 2022, Oracle and/or its affiliates 7 よくある テストの

    課題とは UnsplashのSigmundによるフォト
  6. テスト | パレートの法則 - 80/20のルール コスト 完全性 低い 高い 0%

    100% 80% Copyright © 2022, Oracle and/or its affiliates 10
  7. Copyright © 2022, Oracle and/or its affiliates 11 しかし、もし 古いテスト用ハードウェアしか

    手に入らなかったらどうでしょう? https://unsplash.com/photos/Zd6PL6PSW5E
  8. ステップ2 最新のRUのダウンロー ドとインストール MOSノート: 2118136.2 キーポイント データベースのアップグレードと移行を成功に導く ステップ1 Oracle 19cのダウンロ

    ードとインストール eDelivery.oracle.com ステップ3 ダウンロードと useAutoUpgrade MOSノート: 2485457.1 Copyright © 2022, Oracle and/or its affiliates 13 ステップ4 SPM、STA、RATによる パフォーマンス安定性
  9. OCIでDBCSをプロビジョニングする際、 Options and Management Packの ライセンスが何か含まれますか? 16 Copyright © 2022,

    Oracle and/or its affiliates なぜクラウドを使用するのか | ライセンスを含む ご存知でしたか?
  10. © 2020 Oracle Corporation DBCS EE DBCS EE-HP DBCS EE-EP

    ExaCS Diagnostics Pack x x x x Tuning Pack x x x x Real Application Testing x x x x Advanced Compression x x x Oracle Database の クラウド提供 以下ライセンスが含まれます Copyright © 2022, Oracle and/or its affiliates 17
  11. 18 Copyright © 2022, Oracle and/or its affiliates なぜクラウドを使用するのか |

    ユースケース Diagnostics Pack • データベース・リプレイ期間比較レポート • AWR • ASH • パフォーマンス・ハブ Tuning Pack • SQLアクセス・アドバイザ • SQLチューニング・アドバイザ • SQLプロファイル • リアルタイムSQLおよびPL/SQLモニタリング
  12. 19 Copyright © 2022, Oracle and/or its affiliates なぜクラウドを使用するのか |

    ユースケース Real Application Testing • データベース・リプレイ (オンプレミスでキャプチャする場合、そちらでもライセンスが必要です) • SQLパフォーマンス・アナライザ Advanced Compression • Data Pump・エクスポートの圧縮 (圧縮ダンプ・ファイルのインポートはライセンス対象外です) • RMAN圧縮を使用したOCIデータベースのバックアップの圧縮 さらに多くのオプションとパックが含まれています
  13. 20 Copyright © 2022, Oracle and/or its affiliates データベースの作成 |

    マルチテナント OCIではマルチテナントがデフォルト もし...あなたがまだそこにいないのなら
  14. 21 Copyright © 2022, Oracle and/or its affiliates Database Cloud

    Service | 仮想マシン エントリ・レベル、GIまたはLVMによるプロビジョニング(ファスト・プロビジョニン グ) 制限事項: • 1つのCDBのみ - 事前作成済のもの • 別のOracle Homeをインストールできません • COMPATIBLEは常にデフォルトです - 指定しない • Max.ストレージ 40 TB 非CDBを作成するには • ZDMを使用して非CDBを移行する • 作成済みのCDBの上に非CDBをリストアする • DB_NAME と DB_UNIQUE_NAME は完全に一致する必要があります
  15. 22 Copyright © 2022, Oracle and/or its affiliates Database Cloud

    Service | ベア・メタル ミッド・レベル、GIでプロビジョニング 制限事項: • データベースはいくつでも • データ・ディスク・グループ、最大 16 TB • 1つのデータベース・エディションのみ • Oracle Homeごとに1つのデータベースのみ 非CDBを作成するには • コンソールから非CDBを作成することはできません – dbcliを使用します • dbcliを使用する前に、アップデートしておくと良いでしょう:cliadm update-dbcli
  16. Database Cloud Service | ベア・メタル Copyright © 2022, Oracle and/or

    its affiliates 23 [root]$ dbcli create-database ¥ --dbname DOH19 ¥ --databaseUniqueName DOH191 ¥ --no-cdb ¥ --dbconsole ¥ --adminpassword "<secret-password>" ¥ --dbshape odb4 ¥ --dbtype SI ¥ --version 19.10.0.0 Job details ---------------------------------------------------------------- ID: 6d87fbf0-2b03-417c-aec9-09b69b0d6222 Description: Database service creation with db name: DOH19 Status: Created Created: May 9, 2021 8:33:11 AM UTC Progress: 0% Message:
  17. Database Cloud Service | ベア・メタル Copyright © 2022, Oracle and/or

    its affiliates 24 [root]$ dbcli describe-job -i 6d87fbf0-2b03-417c-aec9-09b69b0d6222 Job details ---------------------------------------------------------------- ID: 6d87fbf0-2b03-417c-aec9-09b69b0d6222 Description: Database service creation with db name: DOH19 Status: Running Created: May 9, 2021 8:33:11 AM UTC Progress: 0% Message: Task Name Start Time End Time Status --------------------------- -------------------------- ---------------------------------- -------- Pre Database Creation Tasks May 9, 2021 8:33:11 AM UTC May 9, 2021 8:33:13 AM UTC Success Database Home Creation May 9, 2021 8:33:13 AM UTC May 9, 2021 8:33:13 AM UTC Running
  18. 25 Copyright © 2022, Oracle and/or its affiliates Database Cloud

    Service | Exadata 世界最高のデータベース・マシン、GIでプロビジョニング 制限事項: • データベースはいくつでも • 非CDBは12.1.0.2および19cでのみサポートされます • Max.最大598 TBのストレージ • Exadataのバージョンと構成に依存します • ストレージサーバーを増設して、ストレージを追加で割り当てることが可能 非CDBを作成するには • コンソールから非CDBを作成することはできません – dbaasapi を使用します • Creating non-CDB databases on the Service in OCI (Doc ID 2528257.1)
  19. Copyright © 2022, Oracle and/or its affiliates 28 1. 収集

    2. 比較 3. 分析 4. チューン 5. 管理 6. テスト パフォーマンス安定性処方箋
  20. パフォーマンス安定性処方箋 | 導入 Copyright © 2022, Oracle and/or its affiliates

    29 テスト データベース オンプレミス データベース 比較 分析 チューニング 管理 トランスポート 収集 トランスポート
  21. 30 Copyright © 2022, Oracle and/or its affiliates パフォーマンス安定性処方箋 |

    ツールボックス AWR カーソル・キャッシュ SQLチューニング・セット ステージング表 SQL計画管理 SQLチューニング・アドバイザ SQLパフォーマンス・アナライザ データベースのキャプチャとリプレイ Unsplashのjesse orricoによるフォト
  22. 32 Copyright © 2022, Oracle and/or its affiliates 移行 |

    Move to the Cloud https://dohdatabase.com/webinars
  23. 33 Copyright © 2022, Oracle and/or its affiliates 移行 |

    概要 テスト用に移行する場合 • ダウンタイムの心配無用 • シンプルに行う • 本番データベースへの影響を回避
  24. 34 Copyright © 2022, Oracle and/or its affiliates 移行 |

    Data Pump • オフ・ピーク時に実行 • オフ・ピーク時間帯に並列(パラレル)を使用 • エクスポート全体の一貫性を保つことを忘れない - flashback_time=systimestamp • Data Pumpによる圧縮の使用 (要ライセンス) - その他の場合は、OSの圧縮ユーティリティを使用 • スナップショット・スタンバイ・データベースからのエクスポート • データベース・リプレイ - スタンバイを目的のSCNまでリカバリし、Data Pump エクスポートを実行
  25. 35 Copyright © 2022, Oracle and/or its affiliates 移行 |

    特定のSCNからのData Pump スタンバイ・データベースからエクスポートします: • 本番データベースのオフロード • ORA-01555: snapshot too old を回避 1. スタンバイ・データベースでのREDO適用の停止 2. プライマリ・データベースのワークロードを終了させデータベースキャプチャの準備をする 3. スタンバイ・データベースを目的のSCNまでリカバリ DGMGRL> edit database 'stdby1' set state='apply-off'; SQL> alter database recover managed standby database until change 16489354;
  26. 36 Copyright © 2022, Oracle and/or its affiliates 移行 |

    特定のSCNからのData Pump 4. スナップショット・スタンバイに変換します。データベースをData Pumpで必要とされる読取り/書込みモー ドでオープン 5. Data Pumpを使用してデータをエクスポートします。システムを使用しているユーザーがいないので、 flashback_scnまたはflashback_timeを使用する必要はありません 6. スタンバイをフィジカル・スタンバイ・データベースに変換し直します $ expdp system schemas=SH parallel=8 directory=mydir dumpfile=sh%U.dmp プロ・チップ: スナップショット・スタンバイはEnterprise Editionの一部です DGMGRL> convert database 'stdby1' to snapshot standby; DGMGRL> convert database 'stdby1' to physical standby;
  27. 37 Copyright © 2022, Oracle and/or its affiliates 移行 |

    既存のバックアップ • 既存のバックアップを使用 • バックアップ・セットが圧縮されていない場合、OSユーティリティの使用を検討する • 本番データベースには影響しません • リカバリ手順のテストが可能 • クラウドは魅力的なディザスタ・リカバリ戦略です – 試してみましょう
  28. 38 Copyright © 2022, Oracle and/or its affiliates 移行 |

    マルチパート・アップロード 100 MBを超えるファイルに対して推奨 OCI CLIの使用 part-size の最大値は50 GBです OCI CLIインストレーション・ガイド oci os object put ¥ --namespace ... -bn ... --file ... --name ... ¥ --part-size 1024 ¥ --parallel-upload-count 4
  29. 39 Copyright © 2022, Oracle and/or its affiliates 移行 |

    一括アップロード 多くのファイルにおすすめ OCI CLIの使用 マルチパートおよびパラレル・アップロードは、自動的に実行されます オプション • --parallel-upload-count と --part-size でアップロードを細かく調整する • すべてのファイル名の先頭に --object-prefix を付ける • ファイルを選択的にインクルードまたはエクスクルードするのに、パターンと --include および --exclude を使う oci os object bulk-upload ¥ -ns ... -bn ... --src-dir ...
  30. アップグレード | 概要 Copyright © 2022, Oracle and/or its affiliates

    41 クラウド・ツール AutoUpgrade Data Pump
  31. アップグレード | 概要 Copyright © 2022, Oracle and/or its affiliates

    42 クラウド・ツール • ワン・ボタンによるアプローチ • 完全にサポートされているシステムが必要 • 他のオプションより遅い • 本番アップグレードに使用できるオプションではない
  32. アップグレード | 概要 Copyright © 2022, Oracle and/or its affiliates

    43 AutoUpgrade • クラウド・ツールは使わない • 身近なオプション • 本番のアップグレードに使用される可能性が高い • カスタマイズ可能 • アップグレード中のデータベースのテスト
  33. アップグレード | 概要 Copyright © 2022, Oracle and/or its affiliates

    44 Data Pump • 新しいリリースに直接移行 • 身近なオプション • おそらく本番のアップグレードに使用するものではありません。 • カスタマイズ可能
  34. 移行 | Your Data Copyright © 2022, Oracle and/or its

    affiliates 45 すべてのデータを持ち込む
  35. 移行 | オプション Copyright © 2022, Oracle and/or its affiliates

    47 すべてのデータ 構造のみ 構造とデータの移行 完全なテストが可能 - アプリケーションを含む より多くのリソースが必要 好ましいメソッド 構造の移行のみ 部分テストのみ許可 最小のシェイプを使用可能 代替メソッド
  36. 48 Copyright © 2022, Oracle and/or its affiliates 移行 |

    構造のみ Data Pump は構造をエクスポートできますが、実際のデータをスキップすることができる インポート時 • 統計情報が維持される。 ソース・テーブルの行数が100行だった場合、統計情報にはそのように反映されます。 • 統計情報はロックされています $ expdp .... schemas=SH content=metadata_only
  37. 49 Copyright © 2022, Oracle and/or its affiliates 移行 |

    構造のみ または、テーブルのを切り捨て、データファイルを縮小する • データファイルのサイズを最小にするため、表領域が完全に空でなければならない • 必要に応じて、cascade キーワードを使用して親表および子表を切り捨てます • 統計はクリアされます - 後で本番から統計情報をインポート • これは本番環境で行わないでください。 SQL> truncate table sh.sales; SQL> truncate table sh.costs cascade; ... SQL> alter database datafile 10 resize 5m; ギガバイト です テラバイト ではありません
  38. 50 Copyright © 2022, Oracle and/or its affiliates 移行 |

    Subsetting なぜデータサブセットではないのか?オプションです - しかし、データサブセットは難しい! • 削除するデータはどれですか。 • 年齢別 • ランダム • 整合性 • 参照整合性 • 論理整合性 プロ・チップ: Data Masking and Subsetting Guideのオプションの確認
  39. 51 Copyright © 2022, Oracle and/or its affiliates 移行 |

    サブ設定 テストに必要ないデータもあるかもしれません • 監査 • 履歴 • ロギング • 一時的なもの Data Pumpでは表を除外できます 表が必要だけど空の表が欲しい場合: $ expdp .... schemas=SH exclude=table:in('COSTS') $ expdp .... schemas=SH exclude=table:in('COSTS') $ expdp .... schemas=SH include=table:in('COSTS') content=metadata_only
  40. 52 Copyright © 2022, Oracle and/or its affiliates 移行 |

    サブ設定 RMANのリストアまたは複製時に、表領域を除外できます リストア/複製後 • 表領域がオフラインになる • 表領域に格納された表は、データ・ディクショナリに定義されたままです • 表領域に格納された表にはアクセスできません • 空の表とはみなされません RMAN> restore database skip tablespace audit, historical, logging ... RMAN> duplicate ... skip tablespace audit, historical, logging ...
  41. 55 Copyright © 2022, Oracle and/or its affiliates 設定 |

    保証付きリストア・ポイント 保証付きリストア・ポイントの設定(GRP) GRPへのフラッシュバック テスト フラッシュバック GRP
  42. 56 Copyright © 2022, Oracle and/or its affiliates 設定 |

    保証付きリストア・ポイント 保証付きリストア・ポイントの設定(GRP) GRPへのフラッシュバック テスト前 テスト後 CREATE RESTORE POINT grpt GUARANTEE FLASHBACK DATABASE; SHUTDOWN IMMEDIATE STARTUP MOUNT; FLASHBACK DATABASE TO RESTORE POINT grpt; SHUTDOWN IMMEDIATE STARTUP MOUNT; ALTER DATABASE OPEN RESETLOGS; TEST
  43. 57 Copyright © 2022, Oracle and/or its affiliates 設定 |

    スナップショット・スタンバイ テストにフィジカル・スタンバイを使用 テスト フィジカル・スタンバイへの変換 GRP Log Shipping PROD PHYS Snapshotスタンバイ への変換
  44. 統計情報 | 概要 Copyright © 2022, Oracle and/or its affiliates

    60 どの統計が我々の目的にとって重要なのか? • システム統計 • システムCPUおよびストレージ・サブシステムのパフォーマンスの測定 • スキーマ統計 • スキーマごとのユーザー・オブジェクト統計 • データベース統計は? • スキーマ統計、ディクショナリ統計、固定オブジェクト統計、システム統計を含む
  45. システム統計 | 概要 Copyright © 2022, Oracle and/or its affiliates

    61 システム統計は、I/OやCPUのパフォーマンスや使用率などのハードウェア特性を記述します。 システム統計は、クエリ・オプティマイザが実行計画を選択する際にI/OコストおよびCPUコストをより 正確に見積もることを可能にします。 " Database 19c SQLチューニング・ガイド、第10章 良い考えのように思える
  46. システム統計 | 推奨 Copyright © 2022, Oracle and/or its affiliates

    62 ...ほとんどの場合、デフォルトを使用し、システム統計を収集しない方がよいでしょう "Oracle Exadata Database Machine で純粋なデータウェアハウスワークロードをサポートするデー タベースは、EXADATA オプションを使用して収集したシステム統計情報を活用できます。 ...ワークロードが混在している場合や、EXADATAシステム統計の効果を検証する立場にない場合 は、このプラットフォームであってもデフォルトのままにしておいてください。 Nigel Bayliss氏、オプティマイザ・ブログ
  47. 65 Copyright © 2022, Oracle and/or its affiliates 統計情報の転送 |

    概要 プロ・チップ: 統計の転送の詳細は、『SQLチューニン グ・ガイド』を参照してください データベース間でオプティマイザの統計情報を転送する場合、DBMS_STATSを使用してステージ ング表との間で統計情報をコピーし、転送先データベースから表の内容にアクセスできるようにする ツールを使用する必要があります。 " Database 19c SQLチューニング・ガイド、第17章 次の統計を転送できます • スキーマ • 表 • データベース(まれ) • ディクショナリおよび固定オブジェクト(まれ)
  48. 完全なデータベースのリストア Data Pump • フル・データベース・エクスポート • サブセットまたはスキーマのみ • METADATA_ONLY •

    ベストケース • COL_USAGE$を含むすべての統計が含まれます • 統計情報を転送する必要があります • 特に、COL_USAGE$が欠落します • METHOD_OPT=SKEWONLYを考慮する 統計情報の転送 | ユースケース Copyright © 2022, Oracle and/or its affiliates 66
  49. 67 Copyright © 2022, Oracle and/or its affiliates 統計情報の転送 |

    ワークフロー ソース・データベース ユーザー・データ(SALESAPP) データ・ディクショナリ(SYS) オプティマイザ統計が配置される場所
  50. 68 Copyright © 2022, Oracle and/or its affiliates システム統計の転送 |

    ワークフロー ステージング表の作成 統計情報をステージング表にエクスポート Data Pumpを使用したステージング表のエクスポート SQL> EXEC DBMS_STATS.CREATE_STAT_TABLE ( ownname => 'SYSTEM', stattab => 'SYS_STATS_STG'); SQL> EXEC DBMS_STATS.EXPORT_SYSTEM_STATS ( stattab => 'SYS_STATS_STG', statown => 'SYSTEM'); $ expdp SYSTEM ¥ DIRECTORY=DATA_PUMP_DIR ¥ DUMPFILE=sys_stats_stg.dmp ¥ TABLES=SYS_STATS_STG
  51. 69 Copyright © 2022, Oracle and/or its affiliates システム統計の転送 |

    ワークフロー ターゲット・データベース ダンプ・ファイルをオブジェクト・ストレージにアップロード Data Pumpを使用したステージング表のインポート 異なるバージョンからの転送時に統計情報を更新 ステージング表から統計情報をインポート スキーマ統計についても同様に繰り返します。 $ impdp SYSTEM ¥ DIRECTORY=mydirectory ¥ DUMPFILE=sys_stats_stg.dmp ¥ TABLES=SYS_STATS_STG SQL> EXEC dbms_stats.upgrade_stat_table ( ownname => 'SYSTEM', stattab => 'SYS_STATS_STG'); SQL> EXEC DBMS_STATS.IMPORT_SYSTEM_STATS ( stattab => 'SYS_STATS_STG', statown => 'SYSTEM');
  52. 71 Copyright © 2022, Oracle and/or its affiliates 統計情報の転送 |

    知っておくと便利 • オプティマイザはステージング表に格納されている統計情報を使用しません – データ辞書からのみ • 統計情報をインポートすることで、「最新」の状態にします(= 「古い」でなく!) • 上位バージョンへの転送は可能 - 統計表のアップグレードが必要な場合があります • インクリメンタル統計: オプションでSYNOPSESもエクスポート可能 SQL> EXEC DBMS_STATS.IMPORT_SCHEMA_STATS ( ... ORA-20002: Version of statistics table "SALESAPP"."OPT_STATS_STG" is too old SQL> EXEC DBMS_STATS.UPGRADE_STAT_TABLE ('SALESAPP', 'OPT_STATS_STG'); SQL> EXEC DBMS_STATS.EXPORT_SCHEMA_STATS ( ... stat_category => 'OBJECT_STATS, REALTIME_STATS, SYNOPSES');
  53. 72 Copyright © 2022, Oracle and/or its affiliates 統計の転送 |

    知っておくと便利 – その2 • Data Pump インポート後にステージング表に統計情報を収集する • また、ステージング表の索引についても収集 • DBMS_STATS.IMPORT_SCHEMA_STATS / IMPORT_TABLE_STATS を実行する前に • 有効にすると、インポートされた統計情報は公開するまで保留の統計情報として追加されます
  54. 73 Copyright © 2022, Oracle and/or its affiliates 統計情報 |

    リフレッシュ? Oracle 19cへのアップグレードまたは移行時にオブジェクト統計を更新する必要がありますか? • 場合によります • テストするデータの正確な量がない場合、実行しないでください • 同じ量のデータがある場合は、実行してください • 注意 • ソースが11.2の場合、ヒストグラムは変更できます • 統計が失効したときにプランを段階的に変更しない • 正しい統計を作成するにはワークロードが必要です
  55. 統計情報 | 自動タスクの無効化 統計情報をインポートする場合は、自動タスクを無効にすることをお勧めします • チェック: SQL> SELECT client_name, status

    FROM dba_autotask_client; CLIENT_NAME STATUS ------------------------------------ -------- sql tuning advisor ENABLED auto optimizer stats collection DISABLED auto space advisor ENABLED SQL> EXEC DBMS_AUTO_TASK_ADMIN.DISABLE( - client_name => 'auto optimizer stats collection', - operation => NULL, - window_name => NULL); Copyright © 2022, Oracle and/or its affiliates 74
  56. 75 Copyright © 2022, Oracle and/or its affiliates 統計情報 |

    ロード時に統計を収集 Oracle 12.1.0.2以降、ロード時に統計が自動的に収集されます • CREATE TABLE AS SELECT (CTAS) • INSERT AS SELECT (IAS) • 機能はオフにできます _optimizer_gather_stats_on_load = FALSE insert /*+append NO_GATHER_OPTIMIZER_STATISTICS*/ into MYTAB select …
  57. 77 Copyright © 2022, Oracle and/or its affiliates ロック統計情報 |

    ユースケース 統計情報を変更できないようロックすることができます。 " Database 19c SQLチューニング・ガイド、第15章 • 特定の静的環境 • 揮発性の高い表 • 動的統計の利用を可能にする • ...およびすべての例外
  58. 78 Copyright © 2022, Oracle and/or its affiliates ロック統計情報 |

    方法 表統計のロック 次の場所にロックすることもできます: • Schema-level • Partition-level 統計情報のロックを解除することもできます SQL> EXEC DBMS_STATS.LOCK_TABLE_STATS(ownname=>'MYAPP', tabname=>'MY_VOLATILE_TAB1'); プロ・チップ: 表統計のロックにより、索引およびパーテ ィション統計もロックされます
  59. 79 Copyright © 2022, Oracle and/or its affiliates ロック統計情報 |

    特筆事項 • 統計情報のロックおよびロック解除を行うと、カーソルが無効化される • 実行計画の安定化を図るために、SQL計画管理を検討する • 統計情報アドバイザがロックされた統計情報について警告を出す • ロック情報はエクスポートされません
  60. ワークロード | ソースに関する情報を収集 Copyright © 2022, Oracle and/or its affiliates

    81 テスト データベース オンプレミス データベース 比較 分析 チューニング 管理 トランスポート 収集 トランスポート
  61. ワークロード | 目標 Copyright © 2022, Oracle and/or its affiliates

    82 ソース・データベースのワークロード情報を収集 1. SQLチューニング・セットの作成(STS) 2. ワークロードの取得元 a) AWR b) カーソル・キャッシュ SQLチューニング・セット
  62. SQLチューニング・セット | 作成 Copyright © 2022, Oracle and/or its affiliates

    85 S T S まず、SQLチューニング・セットを作成 プロ・チップ: DBMS_SQLTUNEを使用してSQL チューニング・セットを作成することもできます SQL> BEGIN DBMS_SQLSET.CREATE_SQLSET ( sqlset_name => 'UPG_STS_1', description => 'For upgrade - from source' ); END; /
  63. SQLチューニング・セット | 取得 Copyright © 2022, Oracle and/or its affiliates

    86 次に、AWRからの文を取得 SQL> DECLARE begin_id number; end_id number; cur sys_refcursor; BEGIN SELECT min(snap_id), max(snap_id) INTO begin_id, end_id FROM dba_hist_snapshot; open cur for select value(p) from table(dbms_sqltune.select_workload_repository( begin_snap => begin_id, end_snap => end_id, basic_filter => 'parsing_schema_name not in (''SYS'')’, ranking_measure1 => 'elapsed_time’, result_limit => 5000, attribute_list => 'ALL')) p; dbms_sqltune.load_sqlset('UPG_STS_1', cur); close cur; END; / プロ・チップ: DBSNMP、ORACLE_OCM、 LBACSYS、WMSYS、XDB、SYSTEMなどの 他の内部スキーマを除外することを検討してくださ い S T S SQL> DECLARE begin_id number; end_id number; cur sys_refcursor; BEGIN SELECT min(snap_id), max(snap_id) INTO begin_id, end_id FROM dba_hist_snapshot; open cur for select value(p) from table(dbms_sqltune.select_workload_repository( begin_snap => begin_id, end_snap => end_id, basic_filter => 'parsing_schema_name not in (''SYS'')’, ranking_measure1 => 'elapsed_time’, result_limit => 5000, attribute_list => 'ALL')) p; dbms_sqltune.load_sqlset('UPG_STS_1', cur); close cur; END; / SQL> DECLARE begin_id number; end_id number; cur sys_refcursor; BEGIN SELECT min(snap_id), max(snap_id) INTO begin_id, end_id FROM dba_hist_snapshot; open cur for select value(p) from table(dbms_sqltune.select_workload_repository( begin_snap => begin_id, end_snap => end_id, basic_filter => 'parsing_schema_name not in (''SYS'')’, ranking_measure1 => 'elapsed_time’, result_limit => 5000, attribute_list => 'ALL')) p; dbms_sqltune.load_sqlset('UPG_STS_1', cur); close cur; END; / SQL> DECLARE begin_id number; end_id number; cur sys_refcursor; BEGIN SELECT min(snap_id), max(snap_id) INTO begin_id, end_id FROM dba_hist_snapshot; open cur for select value(p) from table(dbms_sqltune.select_workload_repository( begin_snap => begin_id, end_snap => end_id, basic_filter => 'parsing_schema_name not in (''SYS'')’, ranking_measure1 => 'elapsed_time’, result_limit => 5000, attribute_list => 'ALL')) p; dbms_sqltune.load_sqlset('UPG_STS_1', cur); close cur; END; /
  64. SQLチューニング・セット | 取得 Copyright © 2022, Oracle and/or its affiliates

    87 カーソル・キャッシュから文を取得(オプション) 慎重に - システムの負荷 プロ・チップ: SQLチューニング・ガイドでは、特定 のスキーマからすべての文をロードする方法を示し ます S T S SQL> BEGIN DBMS_SQLSET.CAPTURE_CURSOR_CACHE_SQLSET( sqlset_name => 'UPG_STS_1', time_limit => 900, repeat_interval => 60, capture_option => 'MERGE', capture_mode => DBMS_SQLTUNE.MODE_ACCUMULATE_STATS, basic_filter => 'parsing_schema_name not in (''SYS'')', sqlset_owner => NULL, recursive_sql => 'HAS_RECURSIVE_SQL'); END; /
  65. ワークロード | 転送SQLチューニング・セット Copyright © 2022, Oracle and/or its affiliates

    88 テスト データベース オンプレミス データベース 比較 分析 チューニング 管理 トランスポート 収集 トランスポート
  66. ワークロード | 目的 Copyright © 2022, Oracle and/or its affiliates

    89 SQLチューニング・セットの転送 1. ステージング表へのSQLチューニング・セットのパッキング 2. ステージング表のエクスポート 3. オブジェクト・ストレージへのアップロード 4. クラウドのテスト・データベースにインポート SQLチューニング・セット+Data Pump
  67. SQLチューニング・セット | 転送 Copyright © 2022, Oracle and/or its affiliates

    90 S T S ソース・データベースのステージング表への梱包 Data Pumpによるエクスポート オプションで、 DBMS_SQLTUNE.REMAP_STGTAB_SQLSETを使用して CON_DBID間の再マップを行います SQL> BEGIN DBMS_SQLTUNE.CREATE_STGTAB_SQLSET ( table_name => 'UPG_STGTAB_1'); DBMS_SQLTUNE.PACK_STGTAB_SQLSET ( sqlset_name => 'UPG_STS_1', staging_table_name => 'UPG_STGTAB_1'); END; $ expdp user ¥ directory=mydirectory dumpfile=upg_stgtab_1.dmp tables=UPG_STGTAB_1
  68. SQLチューニング・セット | 転送 Copyright © 2022, Oracle and/or its affiliates

    91 S T S オプションで、Data Pumpで圧縮(ライセンスが必要) または、OSユーティリティを使用 $ zip upg_stgtab_1.zip upg_stgtab_1.dmp $ expdp ... compression=all compression_algorithm=medium
  69. SQLチューニング・セット | 転送 Copyright © 2022, Oracle and/or its affiliates

    92 S T S 1. scp または rsyncでダンプ・ファイルを直接転送 2.または、OCI CLIを使用 事前認証済リクエスト(PAR)の作成およびダウンロード $ oci os object put --namespace oradbclouducm ¥ -bn zdm-oss ¥ --file upg_stgtab_1.dmp ¥ --part-size 100 ¥ --parallel-upload-count 4 $ wget https://objectstorage... /o/upg_stgtab_1.dmp
  70. SQLチューニング・セット | 転送 Copyright © 2022, Oracle and/or its affiliates

    93 S T S ターゲット・データベースへのData Pumpによるインポート ステージング表の解凍 $ impdp user ¥ directory=mydirectory dumpfile=upg_stgtab_1.dmp tables=UPG_STGTAB_1 SQL> BEGIN DBMS_SQLTUNE.UNPACK_STGTAB_SQLSET ( sqlset_name => '%' replace => true staging_table_name => 'UPG_STGTAB_1' ); END; /
  71. SQLチューニング・セット | ライセンス SQLチューニング・セットには、データベース・サーバーAPIやコマンドライン・インタフェースを使用して アクセスすることもできます。SQLチューニング・セットを管理するためのDBMS_SQLSETパッケージ のすべてのサブプログラムの使用は、EEおよびEE-ESオファリングの一部です。 " Database 19cデータベース・ライセンス情報ユーザー・マニュアル SQLチューニング・セットには、データベース・サーバーAPIやコマンドライン・インタフェースを使用して

    アクセスすることもできます。SQLチューニング・セットを管理するためのDBMS_SQLSETパッケージ のすべてのサブプログラムの使用は、EEおよびEE-ESオファリングの一部です。 また、DBMS_SQLTUNEパッケージの一部である次のサブプログラムは、SQLチューニング・セットを 管理するための古いインタフェースを提供し、EEおよびEE-ESオファリングの一部でもあります: ADD_SQLSET_REFERENCE CAPTURE_CURSOR_CACHE_SQLSET CREATE_SQLSET CREATE_STGTAB_SQLSET DELETE_SQLSET DROP_SQLSET LOAD_SQLSET PACK_STGTAB_SQLSET REMOVE_SQLSET_REFERENCE SELECT_CURSOR_CACHE SELECT_SQLSET SELECT_WORKLOAD_REPOSITORY UNPACK_STGTAB_SQLSET UPDATE_SQLSET Copyright © 2022, Oracle and/or its affiliates 94
  72. 比較| AWRスナップショット Copyright © 2022, Oracle and/or its affiliates 97

    テスト データベース オンプレミス データベース 比較 分析 チューニング 管理 トランスポート 収集 トランスポート
  73. 比較 | 目的 Copyright © 2022, Oracle and/or its affiliates

    98 ワークロード・データの比較 1. 代表的なワークロードのスナップショットはどれですか(2つ選択してください) 2. AWRのエクスポート 3. オブジェクト・ストレージへのアップロード 4. AWRをクラウドのテスト・データベースにインポート 5. 代表的なワークロードをクラウドで実行 6. AWRスナップショットの比較 AWRスナップショットおよび差分レポート まったく異なる仕様およびロード・シナリオのため、結果は誤解を招くか、役に立たない可能性があります
  74. 比較 | AWRスナップショット Copyright © 2022, Oracle and/or its affiliates

    99 テスト・データベース オンプレミス・データベース awrextr.sql awrload.sql エクスポート・ダンプをオブジェクト・ストレージにコピー awrddrpi.sql
  75. 比較 | AWR差分レポート Copyright © 2022, Oracle and/or its affiliates

    100 awrddrpi.sqlを使用 Instances in this Workload Repository schema ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DB Id Inst Num DB Name Instance Host ------------ ---------- --------- ---------- ------ 72245725 1 UPGR UPGR hol.localdom * 753780962 1 CDB2 CDB2 hol.localdom Database Id and Instance Number for the First Pair of Snapshots ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Enter value for dbid:
  76. 比較 | SQLパフォーマンス・アナライザ Copyright © 2022, Oracle and/or its affiliates

    102 テスト データベース オンプレミス データベース 比較 分析 チューニング 管理 トランスポート 収集 トランスポート
  77. 比較 | 目的 Copyright © 2022, Oracle and/or its affiliates

    103 SQL実行をシミュレートし、悪化したSQL実行計画を検出 1. ANALYSISタスクの作成 2. 本番環境で取得されたSQL文のシミュレーション a) AWR b) カーソル・キャッシュ 3. 結果の比較 4. 是正問題 5. 繰返し分析 SQLパフォーマンス・アナライザ
  78. SPA | コンセプト 11.2.0.4 比較 比較 SQLチューニングSet Production ワークロード Upgrade

    / Migrate 19c SQL、 スキーマ、 バインド、 ... SPA テスト実行 アップグレード後 アップグレード前 プラン 経過時間、CPU時間、 バッファ読取り、ディスク読取り... プロ・チップ: 移行の場合は、ターゲット・データ ベースにSTSをインポート Copyright © 2022, Oracle and/or its affiliates 105
  79. SPAでテストするためのいくつかのアイデア • init.oraパラメータ • 新しい統計 • オプティマイザ設定 • DBMS_OPTIM_BUNDLE _fix_control設定

    • ヒストグラム・タイプ • 増分統計の新しい形式 • 特定のパッチ Copyright © 2022, Oracle and/or its affiliates 111 UnsplashのAndrew Georgeによるフォト
  80. SPA | 行および値の検証 Oracle 18cからの新機能 exec DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER( - task_name =>

    'my_spa_task', - parameter => 'COMPARE_RESULTSET', - value => 'TRUE'); Copyright © 2022, Oracle and/or its affiliates 112
  81. 113 Copyright © 2022, Oracle and/or its affiliates SPA |

    スクリプト スクリプトを検索しSPAを試しましょう https://MikeDietrichDE.com/scripts/
  82. 比較 | データベース・キャプチャとリプレイ Copyright © 2022, Oracle and/or its affiliates

    114 テスト データベース オンプレミス データベース 比較 分析 チューニング 管理 トランスポート 収集 トランスポート
  83. データベース・リプレイ | 概要 Copyright © 2022, Oracle and/or its affiliates

    115 " Database 19cテスト・ガイド、第9章 データベース・リプレイを使用すると、本番システムのワークロードを取得し、元のワークロー ドの正確なタイミング、同時実行性およびトランザクション特性でテスト・システムでリプレイ できます。 これにより、本番システムに影響を与えずにシステム変更の影響をテストできます。 ソース側にReal Application Testingが必要
  84. データベース・リプレイ | 概要 Copyright © 2022, Oracle and/or its affiliates

    116 11.2.0.4 19c キャプチャ・ファイル ワークロード 把握 テスト システム 前処理 リプレイ・ファイル リプレイ 分析
  85. 最適化 | SQLチューニング・アドバイザ Copyright © 2022, Oracle and/or its affiliates

    121 テスト データベース オンプレミス データベース 比較 分析 チューニング 管理 トランスポート 収集 トランスポート
  86. SQLチューニング・アドバイザ Copyright © 2022, Oracle and/or its affiliates 122 "

    Database 19c SQLチューニング・ガイド、第24章 SQLチューニング・アドバイザは、Oracle Database Tuning PackのSQL診断ソフトウェアです。 ... SQLチューニング・アドバイザは、パフォーマンスが最適でないSQL文に関連する問題を解決するため のメカニズムです。
  87. 結果のタイプ: 1. オブジェクト統計の収集 2. 索引の作成 3. SQL文のリライト 4. SQLプロファイルの作成 ....など

    SQLチューニング・アドバイザ | 所見 Copyright © 2022, Oracle and/or its affiliates 123 プロ・チップ: SQL Developerには、 SQLチューニング・アドバイザの優れたイン タフェースがあります
  88. SQLプロファイル | テスト Copyright © 2022, Oracle and/or its affiliates

    127 1.選択した環境に対してのみプロファイルを有効にします 2.プロファイルの検証 - ライブ環境ではオプティマイザによって使用されない 3.すべてのセッション('DEFAULT')を受け入れて表示します SQL> exec :p_name := dbms_sqltune.accept_sql_profile( task_name=>'TASK_21944', name=>'XT_PROFILE', category=>'TEST_ENV'); SQL> alter session set sqltune_category='TEST_ENV'; SQL> exec dbms_sqltune.alter_sql_profile( name=>'XT_PROFILE', attribute_name=>'CATEGORY', value=>'DEFAULT');
  89. 最適化 | SQL計画管理 Copyright © 2022, Oracle and/or its affiliates

    128 テスト データベース オンプレミス データベース 比較 分析 チューニング 管理 トランスポート 収集 トランスポート
  90. SQL計画ベースラインの計画は、次のとおりです: • 有効 (Enabled) • 受入済 (Accepted) • 固定化 (Fixed)

    ステータスを変更するには、DBMS_SPM.ALTER_SQL_PLAN_BASELINE を使用 autopurgeプロパティを設定することで、 プランがパージされないようにすることもできます。 SPM | プラン Copyright © 2022, Oracle and/or its affiliates 131 プロ・チップ: Accept属性は、テスト実行 によってのみ設定できます
  91. SPM | STSからロード Copyright © 2022, Oracle and/or its affiliates

    132 Plan A 受入済 プラン履歴 Plan B 未受入 Plan C Plan C 受入済 SQLチューニング・セット 自動受入 SQL> DECLARE cnt number; BEGIN cnt := DBMS_SPM.LOAD_PLANS_FROM_SQLSET('UPG_STS_1'); END; /
  92. リテラルがあるシステムでのSQLプラン管理は不向きです。 • 多くの異なったステートメント • CURSOR_SHARING = FORCE? No! • SQLプロファイルは強制的に照合できます

    最適な解決方法: バインド変数を使用するようにアプリケーションを変更する SPM | 次の場合 ...リテラル Copyright © 2022, Oracle and/or its affiliates 133
  93. 計画ベースライン SPM | ユース・ケース Copyright © 2022, Oracle and/or its

    affiliates 134 11.2.0.4 ワークロードの取得 ワークロードのインポート アップグレード 分析 チューニング プランのエクスポート アップグレード 自動的に 受諾済 プランのインポート
  94. 計画ベースライン SPM | ユース・ケース Copyright © 2022, Oracle and/or its

    affiliates 135 SQL> DECLARE plans_loaded NUMBER; filter VARCHAR2(255); BEGIN filter := 'sql_id=''czzzubf8fjz96'' AND plan_hash_value=''1165613724'''; プロ・チップ: 関数 LOAD_PLANS_FROM_SQLSETは、計画 を修正することもできます SQL> DECLARE plans_loaded NUMBER; filter VARCHAR2(255); BEGIN filter := 'sql_id=''czzzubf8fjz96'' AND plan_hash_value=''1165613724'''; plans_loaded := DBMS_SPM.LOAD_PLANS_FROM_SQLSET ( sqlset_name => 'UPG_STS_1', basic_filter => filter ); END; /
  95. トランスポート | SQL計画ベースライン Copyright © 2022, Oracle and/or its affiliates

    137 テスト データベース オンプレミス データベース 比較 分析 チューニング 管理 トランスポート 収集 トランスポート
  96. 138 Copyright © 2022, Oracle and/or its affiliates トランスポート| SQL計画ベースライン

    準備 抽出 転送 ロード SQL計画ベースラインはデータ・ディクショナリに格納されます 転送先 - 情報はトランスポータブル・フォーマットに変換し、ステージング表に 格納する必要があります SQL> BEGIN DBMS_SPM.CREATE_STGTAB_BASELINE ( table_name => 'SPB_STAGING', table_owner => 'SPM'); END; /
  97. 139 Copyright © 2022, Oracle and/or its affiliates トランスポート| SQL計画ベースライン

    準備 抽出 転送 ロード 転送するベースラインを選択 固定プランおよび受入済プランを抽出するには プロ・チップ: dba_sql_plan_baselinesを使用し てプランを検索することもできます SQL> DECLARE l_count NUMBER; BEGIN l_count := DBMS_SPM.PACK_STGTAB_BASELINE ( table_name => 'SPB_STAGING', table_owner => 'SPM', enabled => 'YES', fixed => 'YES'); END; /
  98. 140 Copyright © 2022, Oracle and/or its affiliates トランスポート| SQL計画ベースライン

    準備 抽出 転送 ロード Data Pumpを使用して、その単一表を転送 (オプション) • ダンプ・ファイルにエクスポート • scpまたはrsyncを使用した転送 • ダンプ・ファイルからインポート SQL> CREATE DATABASE LINK cloud_link ... ; $ impdp system network_link=cloud_link tables=SPM.SPB_STAGING ...
  99. 141 Copyright © 2022, Oracle and/or its affiliates トランスポート |

    SQL計画ベースライン 準備 抽出 転送 ロード 最後に、ステージング表からデータ・ディクショナリにベースラインをロード • これには、Enterprise Editionライセンスのオンプレミスが必要です プロ・チップ: フィルタを適用して、イン ポートするベースラインを制限できま す SQL> DECLARE l_count NUMBER; BEGIN l_count := DBMS_SPM.UNPACK_STGTAB_BASELINE ( table_name => 'SPB_STAGING', table_owner => 'SPM'); END; /
  100. トランスポート | SQLプロファイル Copyright © 2022, Oracle and/or its affiliates

    143 テスト データベース オンプレミス データベース 比較 分析 チューニング 管理 トランスポート 収集 トランスポート
  101. 144 Copyright © 2022, Oracle and/or its affiliates トランスポート |

    SQLプロファイル 準備 抽出 転送 ロード SQLプロファイルはデータ・ディクショナリに格納されます 転送先 - プロファイルはトランスポータブル・フォーマットに変換し、ステージン グ表に格納する必要があります SQL> BEGIN DBMS_SQLTUNE.CREATE_STGTAB_SQLPROF ( table_name => 'STAGING', table_owner => 'SQLPROFILES'); END; /
  102. 145 Copyright © 2022, Oracle and/or its affiliates トランスポート |

    SQLプロファイル 準備 抽出 転送 ロード 転送するプロファイルを選択 DEFAULTカテゴリからすべてのプロファイルを抽出するには プロ・チップ: profile_nameおよび profile_categoryでもフィルタできます SQL> BEGIN DBMS_SQLTUNE.PACK_STGTAB_SQLPROF ( staging_table_name => 'STAGING', staging_schema_owner => 'SQLPROFILES'); END; /
  103. 146 Copyright © 2022, Oracle and/or its affiliates トランスポート |

    SQLプロファイル 準備 抽出 転送 ロード Data Pumpを使用して、その単一表を転送 SQL> CREATE DATABASE LINK cloud_link ... ; $ impdp system network_link=cloud_link ¥ tables=SQLPROFILES.STAGING ...
  104. 147 Copyright © 2022, Oracle and/or its affiliates トランスポート |

    SQLプロファイル 準備 抽出 転送 ロード 最後に、ステージング表からデータ・ディクショナリにプロファイルをロード • これにはTuning Packライセンスのオンプレミスが必要です プロ・チップ: 同じまたはそれ以上のリリー スにSQLプロファイルをロードできます SQL> BEGIN DBMS_SQLTUNE.UNPACK_STGTAB_SQLPROF ( staging_table_name => 'STAGING', staging_schema_owner => 'SQLPROFILES', replace => TRUE); END; /