はじめに。
こんにちは、Oracle Databaseの検証チームです。
今回は、Oracle database 23aiの新機能であるTrue Cacheをご紹介いたします。
Oracle 23aiの新機能については気になっている方が多いのではないでしょうか。
True Cacheについて
キャッシュとは
アプリケーションのパフォーマンス向上のために利用される機能です。
データベースのデータは一時的にキャッシュ上に保存されます。
アプリケーションはキャッシュからデータを読み込む事で、データベースから直接データを読み込む回数を減らすことが出来ます。
その為、読み取り処理を高速化し、データベースやネットワークの負荷を削減することが可能です。
True Cacheとは
True Cacheは、プライマリ・データベースとは別に配置された読み取り専用のキャッシュ・インスタンスです。
バッファ・キャッシュにデータを配置し、アプリケーションからの読取り処理に対応します。
Oracle Active DataGuard をディスクレスにしたような仕組みを用いています。
従来のキャッシュとの比較
TrueCacheは、従来のキャッシュでは開発者の責任範囲だった以下の動作を、製品機能により自動で行ってくれます。
- キャッシュへのデータロード
- キャッシュ・データの一貫性管理
- キャッシュ・データのリフレッシュ
※JSONを含むすべてのOracle Databaseオブジェクトおよびデータ型がキャッシュの対象です
開発時の設定の手間が減って、より使いやすいキャッシュになったんですね!
接続方式
True Cacheでは、アプリケーションの接続方式が2パターンあります。
- パターン①:2つの接続を維持しておくパターン
True Cache への読み取り専用接続と、データベースへの読み取り/書き込み接続の2つの接続を維持しておく - パターン②:1つの接続で用途を切り替えるパターン
Javaアプリケーションは1つの接続を利用し、読み取り専用属性を設定することで、True Cacheとデータベースを動的に切り替えることができる
※JDBC 23aiで利用できます。
True Cacheの導入
ここからは、実際にTrue Cacheの導入をします。
構築の流れ
今回は以下のような流れで構築していきます。
前提条件
前提条件は以下の通りです。
- OCIのコンピュートインスタンスを利用すること
- 作成済みのVCNおよび以下2つのLinuxインスタンスがあること
- プライマリノード:instance-db23ai
- True Cacheノード:instance-truecache23ai
1.Oracle Database 23ai Freeをインストール(両ノード)
2つのノードにOracle Database 23ai Freeをインストールします。
DBCAを使う事もできますが、今回はRPMパッケージを使用します。
[root@instance-truecache23ai ~]# dnf -y install oracle-database-preinstall-23ai Last metadata expiration check: 1 day, 19:55:16 ago on Tue 12 Nov 2024 06:09:16 AM GMT. Dependencies resolved. (中略) libXxf86vm-1.1.4-9.el8.x86_64 libdmx-1.1.4-3.el8.x86_64 oracle-database-preinstall-23ai-1.0-2.el8.x86_64 xorg-x11-utils-7.5-28.el8.x86_64 xorg-x11-xauth-1:1.0.9-12.el8.x86_64 Complete! [root@instance-truecache23ai ~]# wget https://download.oracle.com/otn-pub/otn_software/db-free/oracle-database-free-23ai-1.0-1..el8.x86_64.rpm --2024-11-14 02:05:51-- https://download.oracle.com/otn-pub/otn_software/db-free/oracle-database-free-23ai-1.0-1.el8.x86_64.rpm (中略) 2024-11-14 02:05:56 (112 MB/s) - ‘oracle-database-free-23ai-1.0-1.el8.x86_64.rpm’ saved [1379391728/1379391728] [root@instance-db23ai ~]# dnf install -y oracle-database-free* Last metadata expiration check: 1 day, 20:30:24 ago on Tue 12 Nov 2024 05:35:44 AM GMT. Dependencies resolved. (中略) [INFO] Oracle home installed successfully and ready to be configured. To configure Oracle Database Free, optionally modify the parameters in '/etc/sysconfig/oracle-free-23ai.conf' and then run '/etc/init.d/oracle-free-23ai configure' as root. Verifying : oracle-database-free-23ai-1.0-1.x86_64 1/1 Installed: oracle-database-free-23ai-1.0-1.x86_64 Complete!
2.データベースの作成(プライマリノード)
次に、プライマリノードにのみデータベースを作成します。
※True Cacheノードには作成しません
[root@instance-db23 ~]# /etc/init.d/oracle-free-23ai configure Specify a password to be used for database accounts. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9]. Note that the same password will be used for SYS, SYSTEM and PDBADMIN accounts: (中略) Connect to Oracle Database using one of the connect strings: Pluggable database: instance-db23ai/FREEPDB1 Multitenant container database: instance-db23ai
3.firewall設定(両ノード)
プライマリノードとTrue CacheノードはOracle Netで通信を行います。
双方のノードでTCP 1521ポートを開けておきましょう。
[root@instance-db23ai ~]# firewall-cmd --add-port=1521/tcp success [root@instance-db23ai ~]# [root@instance-db23ai ~]# firewall-cmd --runtime-to-permanent success [root@instance-db23ai ~]# [root@instance-db23ai ~]# firewall-cmd --reload success [root@instance-db23ai ~]# [root@instance-db23ai ~]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens3 sources: services: dhcpv6-client ssh ports: 1521/tcp protocols: forward: no masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
4.環境変数設定(両ノード)
双方のノードにOracleユーザの環境変数を設定します。
今回はOracle Database 23ai Freeのデフォルト値を設定しました。
export ORACLE_SID=FREE export ORACLE_BASE=/opt/oracle export ORACLE_HOME=/opt/oracle/product/23ai/dbhomeFree export PATH=/home/oracle/.local/bin:/home/oracle/bin:/usr/share/Modules/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/oracle/product/23ai/dbhomeFree/bin
5.アーカイブ・ログモード設定(プライマリノード)
True Cacheはプライマリ・データベースがアーカイブ・ログモードになっている必要があります。
以下手順で設定を行います。
[oracle@instance-db23ai ~]$ sqlplus / as sysdba SQL*Plus: Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems on Thu Nov 14 02:14:38 2024 Version 23.6.0.24.10 Copyright (c) 1982, 2024, Oracle. All rights reserved. Connected to: Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free Version 23.6.0.24.10 SQL> select log_mode from V$DATABASE; LOG_MODE ------------ NOARCHIVELOG SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount ORACLE instance started. Total System Global Area 1603787624 bytes Fixed Size 5421928 bytes Variable Size 402653184 bytes Database Buffers 1191182336 bytes Redo Buffers 4530176 bytes Database mounted. SQL> alter database archivelog; Database altered. SQL> alter database open; Database altered. SQL> select log_mode from V$DATABASE; LOG_MODE ------------ ARCHIVELOG
LOG_MODEがARCHIVELOGになっている事を確認しましょう。
6.パスワードファイルをコピー(両ノード)
プライマリノードにあるパスワードファイルを、True Cacheノードへコピーします。
パスワードファイルはプライマリノードの以下に配置されています(デフォルト)
/opt/oracle/product/23ai/dbhomeFree/dbs/orapwFREE
このファイルをTrue Cacheノードの任意の場所に配置しましょう。
7.True Cacheの構築(True Cacheノード)
DBCAコマンドを使用してTrue Cacheを作成します
[oracle@instance-truecache23ai-suda .ssh]$ dbca -createTrueCache -gdbName FREE -sourceDBConnectionString instance-db23ai:1521/FREE -passwordFileFromSourceDB <パスワードファイルのパス> -silent Enter Remote DB SYS user password:<プライマリデータベース作成時のパスワード> (中略) ----------------- Running Reopen_wallet job Skipping. Job is detected as not applicable. 100% complete ---------- PLUGIN NOTES ---------- Successfully created True Cache. In order to complete the operation,configure the True Cache database application services from the primary database. ---------- END OF PLUGIN NOTES ---------- Look at the log file "/opt/oracle/cfgtoollogs/dbca/FREE/FREE16.log" for further details.
8.事後確認(True Cacheノード)
True Cacheが正常に構築出来ている事を確認します
[oracle@instance-truecache23ai ]$ sqlplus / as sysdba
SQL*Plus: Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems on Thu Nov 14 02:21:28 2024
Version 23.6.0.24.10
Copyright (c) 1982, 2024, Oracle. All rights reserved.
Connected to:
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.6.0.24.10
SQL>
SQL> select name, open_mode, database_role from v$database;
NAME OPEN_MODE DATABASE_ROLE
--------- -------------------- ----------------
FREE READ ONLY WITH APPLY TRUE CACHE
SQL>
SQL> select controlfile_type from v$database;
CONTROLFIL
----------
TRUE CACHE
SQL>
SQL> col TRUE_CACHE_NAME format a15
SQL> col status format a10
SQL> col primary_name format a15
SQL> select TRUE_CACHE_NAME, PRIMARY_NAME, STATUS, REMOTE_VERSION, CON_ID from v$true_cache;
TRUE_CACHE_NAME PRIMARY_NAME STATUS REMOTE_VERSION CON_ID
--------------- --------------- ---------- ------------------ ----------
FREE FREE HEALTHY 23.0.0.0.0 0
STATUSがHEALTHYになっている事を確認しましょう。
簡単に導入できるところもTrue Cacheの魅力です。皆さんもぜひ導入してみてください!
最後に
以上で、True Cacheの導入は完了です。
実際にTrue Cacheを使用する記事も投稿予定です。そちらも併せてよろしくお願いします。
最後まで読んで頂きありがとうございました!
またどこかでお会いしましょう。
OracleDBについてお困りのことがあれば是非当社へお問い合わせください!
投稿者プロフィール
- Oracle Cloud2024年12月5日OCI ブロック・ボリュームのパフォーマンスについて検証してみた!
- 23ai2024年12月4日【Oracle 23ai 新機能】True Cacheを紹介・導入してみました
- Oracle Cloud2024年12月3日プライベートDNSで名前解決してみた!
- Oracle Cloud2024年11月28日OCIのMySQLでレプリケーションを使用してみました!