ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときに、これらの値をクラウド環境に固有の値に置き換えます。
Oracle Database 23aiを使用したOracle True Cacheサービスの実装
イントロダクション
Oracle True Cacheは、Oracle Database用の、一貫性が確保され自動管理される、メモリー内のSQLおよびキー値(オブジェクトまたはJSON)キャッシュです。
Oracle True Cacheは、Oracle Databaseの前にある、メモリー内の読取り専用キャッシュです。Oracle Active Data Guardと同様に、Oracle True Cacheはプライマリ・データベースの完全に機能する読取り専用レプリカです。ただし、ほとんどがディスクレスです。
最新のアプリケーションには、多くの場合、多数の接続と、データへの高速で低レイテンシなアクセスが必要です。通常、アプリケーションは更新よりも多くの読取りを実行し、データベースのパフォーマンスに影響を与えずにキャッシュから読み取ることができるため、一般的な方法は、データベースの前にキャッシュを配置することです。たとえば、航空会社の予約システムは、ユーザーがフライトを購入するときにデータを頻繁に読み取り、データがデータベース内のものと比較して最新ではない場合は問題ありません。アプリケーションが最新のデータにアクセスする必要があるのは、ユーザーがフライトを予約した場合のみです。
従来のキャッシュとは異なり、Oracle True Cacheは、最も頻繁にアクセスされるデータをキャッシュ内に自動的に保持し、キャッシュとプライマリ・データベース、同じキャッシュ内の他のオブジェクト、およびその他のキャッシュの一貫性を保ちます。JSONを含むすべてのOracle Databaseオブジェクトおよびデータ型をキャッシュします。
Oracle True CacheにはOracle Databaseセキュリティ・ポリシーが実装されているため、キャッシュへのアクセスを制御できます。これにより、個人情報などの機密データをキャッシュでき、通常はキャッシュされない可能性があります。
環境詳細:
-
プライマリ・データベース:
-
データベースのバージョン:
23.5.0.24
-
オペレーティング・システム: 仮想マシン(VM)データベース・システム。
-
Oracle True Cacheインスタンス: Oracle Database 23aiデータベース・ソフトウェア・バージョン(NON-ASM)を使用する1ノードのOracle Database Configuration Assistant (DBCA)ノード。
-
目的
- Oracle True Cacheサービスを実装し、読取り専用(選択)アプリケーション・リクエストをOracle True Cacheインスタンスにリダイレクトします。
前提条件
-
Oracle True Cacheノードから簡易接続(EZConnect)文字列を使用してプライマリ(ソース)データベースにアクセスするためのネットワーク・パスを設定します。
-
プライマリ・データベースがプライマリ・ノードでアーカイブ・ロギング(ARCHIVELOG)モードで実行されていることを確認します。
タスク1: パスワード・ファイルおよびTransparent Data Encryption (TDE) Walletのコピー
パスワード・ファイル、およびオプションでTDEウォレットをプライマリ・データベースからOracle True Cacheノードにコピーします。次の方法のいずれかを使用できます。
-
プライマリ・データベース・パスワード・ファイル(およびオプションのTDEウォレット)をOracle True Cacheノード上の任意の場所に手動でコピーします。
または
-
プライマリ・データベースでDBCAコマンドを実行して、パスワード・ファイル(およびオプションのTDEウォレット)を構成BLOBファイルにパッケージ化します。次に、ファイルをOracle True Cacheノードにコピーし、ファイルがOracle Homeユーザーが所有していることを確認します。
プライマリ・データベースで構成BLOBファイルを準備するには、次のコマンドを使用します。
mkdir -p /tmp/passconfig $ORACLE_HOME/bin/dbca -configureDatabase -prepareTrueCacheConfigFile -sourceDB cdb1db1 -trueCacheBlobLocation /tmp/passconfig -silent
出力例:
mkdir -p /tmp/passconfig [oracle@proddb ~]$ $ORACLE_HOME/bin/dbca -configureDatabase -prepareTrueCacheConfigFile -sourceDB DB1218 -trueCacheBlobLocation /tmp/passconfig -silent Enter password for the TDE wallet: Session ID of the current execution is: 1 Log file location: /u01/app/oracle/cfgtoollogs/dbca/DB1218_xts_iad/trace.log_2024-12-18_12-47-36PM_42681 ----------------- Running Initialization job Completed Initialization job 33% complete ----------------- Running Validate_dataguard job Skipping. Job is detected as not applicable. 40% complete ----------------- Running Validate_db_version job Completed Validate_db_version job 47% complete ----------------- Running Validate_tde_credentials job Completed Validate_tde_credentials job 53% complete ----------------- Running Validate_true_cache_instance job Completed Validate_true_cache_instance job 60% complete ----------------- Running Validate_archive_log_mode job Completed Validate_archive_log_mode job 67% complete ----------------- Running Prepare_blob job Completed Prepare_blob job 100% complete ---------- PLUGIN NOTES ---------- Successfully created blob file: /tmp/passconfig/blob_2024-12-18_12-47-36PM.tar.gz ---------- END OF PLUGIN NOTES ---------- Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/DB1218_xts_iad/DB1218_xts_iad0.log" for further details. [oracle@proddb ~]$
BLOBファイルをOracle True Cacheインスタンス・ノードにコピーします。
scp -i <private_key> <blob_file_name> opc@<true cache instance ip>:/tmp
タスク2: Oracle True Cacheノードでの不要なデータベースの削除
Oracle True Cacheノードで、既存のデータベースをOracle True Cacheホストから削除します(データベースがすでに存在し、不要の場合)。
sqlplus / as sysdba
SQL> shut immediate
SQL> startup mount restrict
SQL> drop database;
タスク3: True Cacheホストからのプライマリ・データベース接続文字列のテスト
次のコマンドを実行して、Oracle True Cacheホストからプライマリ・データベース接続文字列をテストします。
sqlplus sys/<sys_password>@<primary_database_hostname>:1521/<primary_database_service> as sysdba
タスク4: Oracle True Cacheの構成および起動
Oracle True Cacheノードで、-createTrueCache
コマンドを実行してOracle True Cache構成を完了し、Oracle True Cacheを起動します。
$ORACLE_HOME/bin/dbca -createTrueCache -gdbName true_cache_global_name -sid true_cache_sid -sourceDBConnectionString primary_db_easy_connect_string -trueCacheBlobFromSourceDB true_cache_config_blob_path -sgaTargetInMB sga_memory_size -pgaAggregateTargetInMB pga_memory_size -tdeWalletLoginType AUTO_LOGIN -listeners listener_name -silent
出力例:
[oracle@test1 ~]$ $ORACLE_HOME/bin/dbca -createTrueCache -gdbName test1 -sid test1 -sourceDBConnectionString proddb.sub12101216100.dbnet.oraclevcn.com.:1521/DB1218_xts_iad.sub12101216100.dbnet.oraclevcn.com -trueCacheBlobFromSourceDB /home/oracle/blob_2024-12-18_12-47-36PM.tar.gz -sgaTargetInMB 25000 -pgaAggregateTargetInMB 12000 -initParams db_create_file_dest=/u02/app/oracle/oradata -listeners LISTENER -silent
Enter Remote DB SYS user password:
Enter password for the source database TDE wallet:
Session ID of the current execution is: 1
Log file location: /u01/app/oracle/cfgtoollogs/dbca/test1/trace.log_2024-12-18_01-01-33PM_61716
-----------------
Running Extract_password_file_from_blob_file job
Completed Extract_password_file_from_blob_file job
25% complete
-----------------
Running Create_static_listener job
Skipping. Job is detected as not applicable.
38% complete
-----------------
Running Register_listener job
Completed Register_listener job
50% complete
-----------------
Running Extract_tde_wallet_from_blob_file job
Completed Extract_tde_wallet_from_blob_file job
54% complete
-----------------
Running Setup_required_directories job
Skipping. Job is detected as not applicable.
57% complete
-----------------
Running Create_pfile job
Completed Create_pfile job
61% complete
-----------------
Running Start_nomount_instance job
Completed Start_nomount_instance job
64% complete
-----------------
Running Create_TDE_wallet job
Completed Create_TDE_wallet job
68% complete
-----------------
Running Create_truecache_instance job
Completed Create_truecache_instance job
71% complete
-----------------
Running Add_oratab_entry job
Completed Add_oratab_entry job
75% complete
-----------------
Running Reopen_wallet job
Completed Reopen_wallet job
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 "/u01/app/oracle/cfgtoollogs/dbca/test1/test1.log" for further details.
[oracle@test1 ~]$
タスク5: Oracle True Cacheのプラガブル・データベース(PDB)レベルのアプリケーション・サービスの作成および検証
Oracle True Cacheサービスで使用するプライマリ・データベース(PDBレベル)アプリケーション・サービスを作成し開始し、そのサービスが実行されていることを確認します。
単一インスタンス・プライマリ・データベースの場合は、DBMS_SERVICE
PL/SQLパッケージを使用します。PDBに固有のサービスの場合、DBMS_SERVICE
を使用してサービスを開始する前に、特定のPDBに接続するか、セッションで正しいPDBコンテナを設定します。
出力例:
alter session set container=<PDB_NAME>;
show pdbs
BEGIN
DBMS_SERVICE.CREATE_SERVICE('SALES', 'SALES');
DBMS_SERVICE.START_SERVICE('SALES');
END;
/
PL/SQL procedure successfully completed.
タスク6: プライマリ・データベースでのOracle True Cacheの構成
-configureTrueCacheInstanceService
パラメータを指定したdbca -configureDatabase
コマンドを実行して、プライマリ・データベースでOracle True Cacheを構成します。これにより、プライマリ・データベースでOracle True Cacheデータベース・アプリケーション・サービスが構成され、Oracle True Cache上のOracle True Cacheサービスが起動されます。
Oracle True Cacheデータベース・アプリケーション・サービスごとに次のコマンドを実行します。
$ORACLE_HOME/bin/dbca -configureDatabase -configureTrueCacheInstanceService -sourceDB primary_db_sid_or_db_unique_name -trueCacheConnectString true_cache_easy_connect_string -trueCacheServiceName true_cache_service_name -serviceName primary_db_service_name -pdbName primary_pdb_name -silent
出力例:
[oracle@proddb ~]$ $ORACLE_HOME/bin/dbca -configureDatabase -configureTrueCacheInstanceService -sourceDB DB1218 -trueCacheConnectString test1.sub12101216100.dbnet.oraclevcn.com:1521/test1.sub12101216100.dbnet.oraclevcn.com -trueCacheServiceName sales_tc1 -serviceName sales -pdbName DB1218_PDB1 -silent
Session ID of the current execution is: 7
Log file location: /u01/app/oracle/cfgtoollogs/dbca/DB1218/trace.log_2024-12-18_02-39-50PM_60536
-----------------
Running Initialization job
Enter SYS user password:
Completed Initialization job
33% complete
-----------------
Running Validate_true_cache_instance_connection job
Completed Validate_true_cache_instance_connection job
37% complete
-----------------
Running Validate_dataguard job
Skipping. Job is detected as not applicable.
41% complete
-----------------
Running Validate_db_version job
Completed Validate_db_version job
44% complete
-----------------
Running Validate_true_cache_instance job
Completed Validate_true_cache_instance job
48% complete
-----------------
Running Validate_archive_log_mode job
Completed Validate_archive_log_mode job
52% complete
-----------------
Running Validate_pdb job
Completed Validate_pdb job
56% complete
-----------------
Running Validate_primary_db_service job
Completed Validate_primary_db_service job
59% complete
-----------------
Running Validate_true_cache_db_service job
Completed Validate_true_cache_db_service job
63% complete
-----------------
Running Validate_true_cache_instance_open_mode job
Completed Validate_true_cache_instance_open_mode job
67% complete
-----------------
Running Create_truecache_service job
Completed Create_truecache_service job
73% complete
-----------------
Running Add_network_entry job
Completed Add_network_entry job
80% complete
-----------------
Running Modify_primary_service job
Completed Modify_primary_service job
87% complete
-----------------
Running Start_truecache_service job
Completed Start_truecache_service job
93% complete
-----------------
Running Enable_service_registration job
Completed Enable_service_registration job
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/DB1218/DB12183.log" for further details.
[oracle@proddb ~]$
タスク7: Oracle True Cacheノードでのサービスの起動
次のコマンドを実行して、Oracle True Cacheインスタンス・ノードでサービスを起動します。
alter session set container=<PDB_NAME>;
show pdbs
BEGIN
DBMS_SERVICE.START_SERVICE('sales_tc1');
END;
/
タスク8: プライマリ・データベースのパラメータの更新
-
プライマリ・データベースの
listener.ora
ファイルで次のパラメータを更新します。VALID_NODE_CHECKING_REGISTRATION_LISTENER = OFF REGISTRATION_INVITED_NODES_LISTENER=(<true_cache_instance_ip>)
-
プライマリ・データベース・サーバーでリスナーを再起動またはリロードします。
タスク9: プライマリ・データベース・リスナーでのOracle True Cacheサービスの検証
次のコマンドを実行して、Oracle True Cache (sales_tc
)サービスがプライマリ・データベース・リスナーで実行されていることを確認します。
SQL> select name,open_mode,database_role from gv$database;
NAME OPEN_MODE DATABASE_ROLE
------------------------------ -------------------- ----------------
DB1218 READ WRITE PRIMARY
SQL> select * from v$true_cache;
MY_DG_ID REMOTE_DG_ID DEST_ID TRUE_CACHE PRIMARY_NAME STATUS REMOTE_VERSION CON_ID
---------- ------------ ---------- ---------- -------------------- ---------- ------------------ ----------
4079357444 576841986 2 test1 DB1218_xts_iad HEALTHY 0.0.0.0.0 0
4079357444 2149296628 3 test2 DB1218_xts_iad HEALTHY 0.0.0.0.0 0
SQL> SELECT name, true_cache_service FROM DBA_SERVICES WHERE name='sales';
NAME TRUE_CACHE_SERVICE
------------------------------ ------------------------------
sales sales_tc2
[oracle@proddb ~]$ lsnrctl status LISTENER|grep -i sales_tc1
Service "sales_tc1.sub12101216100.dbnet.oraclevcn.com" has 1 instance(s).
[oracle@proddb ~]$
タスク10: Oracle True Cacheインスタンス・ノードでのTrue Cacheサービスの検証
次のコマンドを実行して、Oracle True Cache (sales_tc
)サービスがOracle Trueキャッシュ・インスタンス・ノードで実行されていることを確認します。
SQL> select name,open_mode,database_role from gv$database;
NAME OPEN_MODE DATABASE_ROLE
--------- -------------------- ----------------
DB1218 READ ONLY WITH APPLY TRUE CACHE
SQL> select * from v$true_cache;
MY_DG_ID REMOTE_DG_ID DEST_ID TRUE_CACHE PRIMARY_NAME STATUS REMOTE_VERSION CON_ID
---------- ------------ ---------- ---------- -------------------- ---------- ------------------ ----------
576841986 4079357444 0 test1 DB1218_xts_iad HEALTHY 23.0.0.0.0 0
[oracle@test1 ~]$ lsnrctl status LISTENER|grep sales_tc
Service "sales_tc1.sub12101216100.dbnet.oraclevcn.com" has 1 instance(s).
[oracle@test1 ~]$
タスク11: Oracle True Cacheサービスのテスト
次のTransparent Network Substrate (TNS)エントリをアプリケーションに追加します。
TEST_TC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = test1.sub12101216100.dbnet.oraclevcn.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = sales_tc1.sub12101216100.dbnet.oraclevcn.com)
)
)
sqlplus sys/<sys_password>@TEST_TC as sysdba
select name,open_mode,database_role from v$database;
show pdbs
関連リンク
承認
- 著者 - Pavan Yennampelli (Oracle North America Cloud Services - NACIE、シニア・クラウド・エンジニア、Oracle North America Cloud Services - NACIE)、Bandari Chandu (Oracle North America Cloud Services - NACIE、シニア・クラウド・エンジニア、Oracle North America Cloud Services - NACIE)、Anupam Abhishek (Oracle North America Cloud Services - NACIE、シニア・クラウド・エンジニア)
その他の学習リソース
docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントは、Oracle Help Centerを参照してください。
Implement Oracle True Cache Service with Oracle Database 23ai
G24564-01
January 2025