Slide 1

Slide 1 text

Oracle Database 23ai 新機能 #2 Oracle True Cache Oracle Database Technology Night#80 Noriyuki Tajima ⽇本オラクル株式会社 2024年07⽉25⽇

Slide 2

Slide 2 text

アプリケーションはパフォーマンス向上のためにキャッシュを利⽤ 例︓Redis、Memcached 最新のデータを必要としない読み込み処理はキャッシュで処理 キャッシュを利⽤することで⾼速にデータをアプリケーションに返す 同時にデータベースやネットワークの負荷を削減可能 書き込みおよび最新の読み込みについては、信頼できる唯⼀の 情報源であるバックエンドのデータベースで処理 最終的な確定データはデータベースで管理、保存される アプリケーションによるキャッシュ利⽤ APP Writes Current Reads Reads Object Cache Copyright © 2024, Oracle and/or its affiliates 2

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

Copyright © 2024, Oracle and/or its affiliates 4 Oracle True Cache

Slide 5

Slide 5 text

概要 Oracle Database(プライマリ・データベース)とは別に配置された読み取り専⽤キャッシュ・インスタンス データをバッファ・キャッシュにだけ配置し、読み取り処理に対応 キャッシュにないものは⾃動的にプライマリからデータを取得 プライマリ・データベースからのREDOログを受信・適⽤することで、 低遅延でキャッシュ・データを⾃動的にリフレッシュ True Cache内のデータは常にコミット済み最新の状態で、 複数の表やオブジェクト間での⼀貫性あり Oracle Databaseのすべての読み込みSQLを処理 概念的には、 ほぼディスクレスなActive Data Guardスタンバイのようなもの Oracle True Cache Copyright © 2024, Oracle and/or its affiliates 5 APP Writes Current Reads Reads

Slide 6

Slide 6 text

オペレーション 従来型キャッシュ True Cache キャッシュへのデータロード 開発者責任 ⾃動 データベースとのキャッシュ⼀貫性管理 開発者責任 ⾃動 同⼀キャッシュ内での⼀貫性管理 開発者責任 ⾃動 他のキャッシュとの⼀貫性管理 開発者責任 ⾃動 複雑なデータ型のサポート 開発者責任 ⾃動 JSON型のサポート 開発者責任 ⾃動 包括的なセキュリティ 開発者責任 実装済 パラレル処理 開発者責任 実装済 ⾼可⽤性 開発者責任 実装済 True Cacheは従来型キャッシュの課題を解決 Copyright © 2024, Oracle and/or its affiliates 6

Slide 7

Slide 7 text

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.

Slide 8

Slide 8 text

アプリケーションは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

Slide 9

Slide 9 text

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インスタンスにて実⾏

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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))

Slide 12

Slide 12 text

データベース・アプリケーション・サービスの確認 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

Slide 13

Slide 13 text

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エントリー表⽰

Slide 14

Slide 14 text

統計値 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

Slide 15

Slide 15 text

Cross-Cloud Cache Cross-Region Cache True Cacheのユースケース Copyright © 2024, Oracle and/or its affiliates Mid-Tier Cache Edge Cache 15

Slide 16

Slide 16 text

データ・レジデンシー、ユーザー近接、デバイス近接 のようなユースケースでは、アプリケーションはデータ ベースから遠く離れた場所に配置 そのような場合、True Cacheをアプリケーションの 近くに配置することで、読み取り性能を⼤幅に向上 させることが可能 True Cacheは、デフォルトではデータをディスクに保 存しないため、データ・レジデンシーの規制が認めら れるデータ処理 ユースケース例︓アプリケーションの近くに配置 APP True Cache DB Copyright © 2024, Oracle and/or its affiliates 16

Slide 17

Slide 17 text

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がリリースされていないため未定

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

https://apexapps.oracle.com/pls/apex/r/dbpm/livelabs/view-workshop?wid=3933 Appendix) LiveLabs Copyright © 2024, Oracle and/or its affiliates 19

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

ありがとうございました。 Copyright © 2024, Oracle and/or its affiliates 22