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

Oracle Database 23ai 新機能 #2 Oracle True Cache

Oracle Database 23ai 新機能 #2 Oracle True Cache

2024年7月25日 Oracle Database Technology Night#80 開催分
後半セッション Oracle True Cacheのスライドです

oracle4engineer

July 25, 2024
Tweet

Video

Transcript

  1. Oracle Database 23ai 新機能 #2 Oracle True Cache Oracle Database

    Technology Night#80 Noriyuki Tajima ⽇本オラクル株式会社 2024年07⽉25⽇
  2. Copyright © 2024, Oracle and/or its affiliates 3 オペレーション 従来型キャッシュ

    キャッシュへのデータロード 開発者責任 データベースとのキャッシュ⼀貫性管理 開発者責任 同⼀キャッシュ内での⼀貫性管理 開発者責任 他のキャッシュとの⼀貫性管理 開発者責任 複雑なデータ型のサポート 開発者責任 JSON型のサポート 開発者責任 包括的なセキュリティ 開発者責任 パラレル処理 開発者責任 ⾼可⽤性 開発者責任 従来型キャッシュの課題 APP Writes Current Reads Reads Object Cache V1 V2 TTL
  3. オペレーション 従来型キャッシュ True Cache キャッシュへのデータロード 開発者責任 ⾃動 データベースとのキャッシュ⼀貫性管理 開発者責任 ⾃動

    同⼀キャッシュ内での⼀貫性管理 開発者責任 ⾃動 他のキャッシュとの⼀貫性管理 開発者責任 ⾃動 複雑なデータ型のサポート 開発者責任 ⾃動 JSON型のサポート 開発者責任 ⾃動 包括的なセキュリティ 開発者責任 実装済 パラレル処理 開発者責任 実装済 ⾼可⽤性 開発者責任 実装済 True Cacheは従来型キャッシュの課題を解決 Copyright © 2024, Oracle and/or its affiliates 6
  4. True CacheインスタンスにてKeep設定が可能 必要なオブジェクトがメモリから削除されないようにDB_KEEP_CACHE_SIZEの使⽤が可能 プライマリでBuffer PoolへのKEEP設定を実施することでプライマリ、True Cacheどちらも対応 DBMS_CACHEUTIL.TRUE_CACHE_KEEPを利⽤することで、True CacheでのみKEEP設定も可能 V$TRUE_CACHE_KEEPより、True CacheでKEEPしたオブジェクトを参照

    Oracle True CacheでのKeep Buffer利⽤ Copyright © 2024, Oracle and/or its affiliates 7 --HRスキーマのPAYAMENTS表を指定 SQL> exec DBMS_CACHEUTIL.TRUE_CACHE_KEEP('HR’, ‘PAYMENTS’); PL/SQL procedure successfully completed. SQL> select * from V$TRUE_CACHE_KEEP; TS_NUMBER DATA_OBJECT_ID CON_ID ---------- ----------------- --------- 6 75160 3 --設定の解除 SQL> exec DBMS_CACHEUTIL.TRUE_CACHE_UNKEEP(‘HR’, ‘PAYMENTS’); PL/SQL procedure successfully completed.
  5. アプリケーションは2つのモードでRead/Writeの処理を分けてアクセス可能 2つの接続を保持: • True Cacheインスタンスへの読み込み専⽤接続とプライマリ・データベースへの読み書き接続 読み込み専⽤接続を⽤いて True Cacheへクエリーを発⾏ • 接続先を切り替える⽅式で多くのドライバ・⾔語で使⽤可能

    1つの論理接続を利⽤ • JDBCドライバが内部的にTrue Cacheおよびプライマリ・データベース、2つの接続を保持、 アプリケーション制御下で読み、書きを分割実⾏ • アプリケーションはsetReadOnly(デフォルト︓False)を使⽤してコードの⼀部を読み込み専⽤とマーク • JDBC 23ai で使⽤可能 ※更新量が少なければ、DMLリダイレクトでの対応も可能(ADG_REDIRECT_DML) True Cacheインスタンスへの接続⽅法 Copyright © 2024, Oracle and/or its affiliates 8
  6. JDBC 23aiによる接続の切替 ... OracleDataSource ods = new oracle.jdbc.pool.OracleDataSource(); ods.setURL(DB_URL); ods.setUser(DB_USER);

    ods.setPassword(DB_PASSWORD); Properties props = new Properties(); props.setProperty("oracle.jdbc.useTrueCacheDriverConnection", "true"); ods.setConnectionProperties(props); Connection conn = ods.getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(SQL_QUERY1); conn.setReadOnly(true); ResultSet rs1 = stmt.executeQuery(SQL_QUERY2); ... サンプルコード Copyright © 2024, Oracle and/or its affiliates 9 True Cache 機能を有効化 ここまではプライマリで実⾏ setReadOnly(true)で後続の処理は True Cacheインスタンスにて実⾏
  7. Copyright © 2024, Oracle and/or its affiliates 10 導⼊⽅法は2パターン ・DBCAの利⽤(最も簡単な⽅法)

    ・CREATE TRUE CACHEコマンドを実⾏など⼿動での設定 ⼿動作成の⼤まかな流れ 0.ARCHIVELOGモードなど前提条件の確認 1.プライマリデータベースからパスワードファイル、Walletファイルを取得* 2.tnsnames.ora/listener.oraの設定、リスナーの起動 3.初期パラメータ(TRUE_CACHEパラメータ含)の準備* 4.True Cacheインスタンスの作成・起動* 5.データベース・アプリケーション・サービスの構成* *DBCAの利⽤が可能 True Cache作成⽅法 Oracle True Cache User’s Guide 2 Configuring True Cache 2.2 Configuring True Cache with Oracle DBCA 2.3 Configuring True Cache Manually
  8. Copyright © 2024, Oracle and/or its affiliates 11 True Cacheインスタンスにてデータベース・ロールとオープン・モードの確認

    プライマリインスタンスのリスナーにTrue Cacheインスタンスのサービスが登録されていることを確認 True Cacheインスタンス作成後の環境を確認 SQL> SELECT database_role, open_mode FROM v$database; DATABASE_ROLE OPEN_MODE ---------------- ----------------------- TRUE CACHE READ ONLY WITH APPLY $ lsnrctl services … Service "SALES1_TC" has 1 instance(s). Instance "TRUEDB", status READY, has 1 handler(s) for this service... Handler(s): "DEDICATED" established:7 refused:0 state:ready REMOTE SERVER (ADDRESS=(PROTOCOL=TCP)(HOST=truedb)(PORT=1521))
  9. データベース・アプリケーション・サービスの確認 True Cacheインスタンス プライマリ・インスタンス True Cacheおよびプライマリでアクティブ True Cacheインスタンス作成後の環境を確認 Copyright ©

    2024, Oracle and/or its affiliates 12 SQL> SELECT service_id, name, true_cache_service FROM v$active_services where name like 'SALES%'; SERVICE_ID NAME TRUE_CACHE_SERV ---------- --------- --------------- 6 SALES3_TC 2 SALES1_TC 9 SALES4_TC 4 SALES2_TC SQL> SELECT service_id, name, true_cache_service FROM v$active_services where true_cache_service like 'SALES%'; SERVICE_ID NAME TRUE_CACHE_SERVICE ---------- ------ ------------------ 3 SALES2 SALES2_TC 5 SALES3 SALES3_TC 1 SALES1 SALES1_TC 7 SALES4 SALES4_TC
  10. V$TRUE_CACHEビューとAWRレポート True Cacheの構成情報を出⼒ AWRレポートも取得可能 True Cacheの監視 Copyright © 2024, Oracle

    and/or its affiliates 13 @プライマリ SQL> MY_DG_ID REMOTE_DG_ID DEST_ID TRUE_CACHE_NAME PRIMARY_NAME STATUS REMOTE_VERSION CON_ID ----------- --------------- ---------- ------------------ --------------- ---------- ----------------- --------- 25550393 2976625076 2 TRUEDB ORCLCDB HEALTHY 23.0.0.0.0 0 @True Cache MY_DG_ID REMOTE_DG_ID DEST_ID TRUE_CACHE_NAME PRIMARY_NAME STATUS REMOTE_VERSION CON_ID ----------- --------------- ---------- ------------------ --------------- ---------- ----------------- --------- 2976625076 25550393 0 TRUEDB ORCLCDB HEALTHY 23.0.0.0.0 0 プライマリはTrue Cacheインスタンス1つにつき1エントリー表⽰
  11. 統計値 TrueCache: block requests to preferred primary TrueCache: block requests

    to primary True Cache: message roundtrip time data send True Cache: message roundtrip time request send True Cache: message count data send True Cache: message count request send True Cache potentially current buffer made current True Cache potentially current buffer made CR True Cache関連の統計値および待機イベント Copyright © 2024, Oracle and/or its affiliates 14 待機イベント True Cache: single block fetch True Cache: multiblock fetch True Cache: list of blocks fetch Oracle True Cache User's Guide B : True Cache Database Statistics Descriptions C : True Cache Wait Events
  12. Database Licensing Information User Manualより Feature Free SE2 ODA EE-ES

    BaseDB SE BaseDB EE BaseDB EE-HP BaseDB EE-EP ExaDB True Cache Y N Y N Y Y Y Y True Cacheのライセンスについて Copyright © 2024, Oracle and/or its affiliates 17 Free: Use is limited to one Oracle Database Free True Cache for an Oracle Database Free primary database BaseDB: If the primary database is BaseDB EE, then True Cache must be configured based on BaseDB EE or higher If the primary database is BaseDB EE-HP, then True Cache must be configured based on BaseDB EE-HP or higher If the primary database is BaseDB EE-EP, then True Cache must be configured based on BaseDB EE-EP or BaseDB EE-HP ※ 2024年07⽉25⽇現在 Engineered Systems(Exadata/ODA)以外のオンプレミス版は現状23aiがリリースされていないため未定
  13. Oracle True Cache 概要 • プライマリ・データベースとは別の読取専⽤キャッシュ・インスタンス (True Cacheインスタンス) • データをTrue

    Cacheインスタンスのバッファ・キャッシュに配置し、 クエリーに対応 • プライマリ・データベースからのREDOログを適⽤することでニアリア ルタイム(通常1秒未満)にキャッシュ・データを更新 • キャッシュ・ミスが発⽣した場合、True Cacheインスタンスがプラ イマリデータベースから対象ブロックをフェッチ メリット • クエリー・オフロードによるプライマリ・インスタンスの負荷軽減およ びスケーラビリティの向上 • キャッシュのロードや無効化など複雑な管理性を排除し、運⽤の 効率化 • True Cacheインスタンスをアプリケーションの近くに配置すること により応答時間の改善 • アプリケーション・サービスとしては、明⽰的に接続先を指定も、 透過的な設定(JDBC Thin driver 23ai)も可能 まとめ Copyright © 2023, Oracle and/or its affiliates | Confidential: Internal/Restricted/Highly Restricted 18
  14. Oracle True Cache 関連リンク集 True Cache https://www.oracle.com/jp/database/truecache/ Oracle True Cacheの紹介

    https://blogs.oracle.com/oracle4engineer/post/jp-introducing-oracle-true-cache Oracle True Cache User's Guide https://docs.oracle.com/en/database/oracle/oracle-database/23/odbtc/index.html Oracle True Cache Technical Architecture https://docs.oracle.com/en/database/oracle/oracle-database/23/tciad/tc_genarch.html LiveLabs : Improve application performance with True Cache https://apexapps.oracle.com/pls/apex/r/dbpm/livelabs/view-workshop?wid=3933 Appendix) Copyright © 2024, Oracle and/or its affiliates 20
  15. True Cache作成に関する資料 + マニュアル Oracle True Cache User‘s Guide 2.Configuring

    True Cache https://docs.oracle.com/en/database/oracle/oracle-database/23/odbtc/configuring-true-cache.html + Oracle Base Database Service向け True Cache Installation & Configuration On Database Base System (Doc ID 3031433.1) + Oracle Database Free向け Getting started with True Cache in Oracle Database 23ai FREE https://blogs.oracle.com/coretec/post/true-cache-in-23ai-free Appendix) Copyright © 2024, Oracle and/or its affiliates 21