Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. Lorsque vous terminez votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
Implémenter Oracle True Cache Service avec Oracle Database 23ai
Introduction
Oracle True Cache est un cache SQL et clé-valeur (objet ou JSON) en mémoire, cohérent et géré automatiquement pour Oracle Database.
Oracle True Cache est un cache en mémoire en lecture seule devant une instance Oracle Database. A l'instar d'Oracle Active Data Guard, Oracle True Cache est une réplique entièrement fonctionnelle en lecture seule de la base de données principale, sauf qu'elle est pour la plupart sans disque.
Les applications modernes nécessitent souvent un grand nombre de connexions et un accès rapide et à faible latence aux données. Une approche courante consiste à placer les caches devant la base de données, car les applications effectuent généralement beaucoup plus de lectures que de mises à jour, et elles peuvent lire à partir du cache sans affecter les performances de la base de données. Par exemple, un système de réservation de compagnie aérienne lit les données fréquemment lorsque les gens achètent des vols, et il est acceptable si les données ne sont pas les plus récentes par rapport à ce qui est dans la base de données. L'application n'a besoin d'accéder aux données les plus récentes que lorsque quelqu'un réserve un vol.
Contrairement aux caches classiques, Oracle True Cache conserve automatiquement les données les plus fréquemment consultées dans le cache, et le cache est cohérent avec la base principale, les autres objets du même cache et les autres caches. Il met en mémoire cache tous les objets et types de données Oracle Database, y compris JSON.
Etant donné qu'Oracle True Cache implémente les stratégies de sécurité d'Oracle Database, vous pouvez contrôler l'accès au cache. Cela vous permet de mettre en cache des données sensibles, telles que des informations personnelles privées, que vous ne pouvez généralement pas mettre en cache.
Détails d'environnement:
-
Base de données principale:
-
Version de base de données :
23.5.0.24
-
Système d'exploitation : système de base de données de machine virtuelle.
-
Instance Oracle True Cache : noeud Oracle Database Configuration Assistant (DBCA) à 1 noeud avec la version logicielle de base de données Oracle Database 23ai (NON-ASM).
-
Objectifs
- Implémentez le service Oracle True Cache et redirigez les demandes d'application en lecture seule (sélection) vers l'instance Oracle True Cache.
Prérequis
-
Configurez un chemin réseau pour accéder à la base de données principale (source) avec une chaîne Easy Connect (EZConnect) à partir du noeud Oracle True Cache.
-
Assurez-vous qu'une base de données principale est en cours d'exécution sur le noeud principal en mode ARCHIVELOG.
Tâche 1 : copier le fichier de mots de passe et le portefeuille de cryptage transparent des données (TDE)
Copiez le fichier de mots de passe et, éventuellement, le portefeuille TDE de la base de données principale vers le noeud Oracle True Cache. Utilisez l'une des méthodes suivantes :
-
Copiez manuellement le fichier de mots de passe de la base de données principale (et le portefeuille TDE facultatif) vers n'importe quel emplacement sur le noeud Oracle True Cache.
Ou
-
Exécutez la commande DBCA sur la base de données principale pour packager le fichier de mots de passe (et le portefeuille TDE facultatif) dans un fichier BLOB de configuration. Copiez ensuite le fichier vers le noeud Oracle True Cache et assurez-vous qu'il appartient à l'utilisateur du répertoire de base Oracle.
Utilisez la commande suivante pour préparer le fichier BLOB de configuration sur la base de données principale.
mkdir -p /tmp/passconfig $ORACLE_HOME/bin/dbca -configureDatabase -prepareTrueCacheConfigFile -sourceDB cdb1db1 -trueCacheBlobLocation /tmp/passconfig -silent
Exemple de sortie :
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 ~]$
Copiez le fichier BLOB vers le noeud d'instance Oracle True Cache.
scp -i <private_key> <blob_file_name> opc@<true cache instance ip>:/tmp
Tâche 2 : supprimer la base de données inutile sur le noeud Oracle True Cache
Sur le noeud Oracle True Cache, supprimez la base de données existante sur les hôtes Oracle True Cache si la base de données existe déjà et n'est pas requise.
sqlplus / as sysdba
SQL> shut immediate
SQL> startup mount restrict
SQL> drop database;
Tâche 3 : tester la chaîne de connexion à la base de données principale à partir de l'hôte True Cache
Exécutez la commande suivante pour tester la chaîne de connexion à la base de données principale à partir de l'hôte Oracle True Cache.
sqlplus sys/<sys_password>@<primary_database_hostname>:1521/<primary_database_service> as sysdba
Tâche 4 : configurer et démarrer Oracle True Cache
Sur le noeud Oracle True Cache, exécutez la commande -createTrueCache
pour terminer la configuration d'Oracle True Cache et démarrer 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
Exemple de sortie :
[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 ~]$
Tâche 5 : créer et vérifier le service applicatif de niveau base de données pluggable pour Oracle True Cache
Créez et démarrez un service applicatif de base de données principale (au niveau de la base de données pluggable) à utiliser avec le service Oracle True Cache, puis vérifiez que le service est en cours d'exécution.
Pour les bases de données principales à instance unique, utilisez le package PL/SQL DBMS_SERVICE
. Pour les services propres à une base de données pluggable, connectez-vous à celle-ci ou définissez le conteneur de base de données pluggable approprié dans votre session avant de démarrer le service à l'aide de DBMS_SERVICE
.
Exemple de sortie :
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.
Tâche 6 : configurer Oracle True Cache sur la base principale
Exécutez la commande dbca -configureDatabase
avec le paramètre -configureTrueCacheInstanceService
pour configurer Oracle True Cache sur la base de données principale. Cela configure le service applicatif de base de données Oracle True Cache sur la base de données principale, puis démarre le service Oracle True Cache sur Oracle True Cache.
Exécutez la commande suivante pour chaque service applicatif de base de données 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
Exemple de sortie :
[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 ~]$
Tâche 7 : démarrer le service sur le noeud Oracle True Cache
Exécutez la commande suivante pour démarrer le service sur le noeud d'instance Oracle True Cache.
alter session set container=<PDB_NAME>;
show pdbs
BEGIN
DBMS_SERVICE.START_SERVICE('sales_tc1');
END;
/
Tâche 8 : mettre à jour les paramètres de la base principale
-
Mettez à jour les paramètres suivants dans le fichier
listener.ora
de la base de données principale.VALID_NODE_CHECKING_REGISTRATION_LISTENER = OFF REGISTRATION_INVITED_NODES_LISTENER=(<true_cache_instance_ip>)
-
Redémarrez ou rechargez le processus d'écoute sur le serveur de base de données principal.
Tâche 9 : vérifier les services Oracle True Cache dans le processus d'écoute de la base principale
Exécutez la commande suivante pour vérifier que les services Oracle True Cache (sales_tc
) sont exécutés sous le processus d'écoute de la base de données principale.
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 ~]$
Tâche 10 : vérifier les services True Cache sur le noeud d'instance Oracle True Cache
Exécutez la commande suivante pour vérifier que les services Oracle True Cache (sales_tc
) sont en cours d'exécution sur le noeud d'instance Oracle True Cache.
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 ~]$
Tâche 11 : tester le service Oracle True Cache
Ajoutez l'entrée TNS (Transparent Network Substrate) suivante à l'application.
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
Liens connexes
Remerciements
- Auteurs - Pavan Yennampelli (Ingénieur Cloud senior, Oracle North America Cloud Services - NACIE), Sravan Kumar K B (Ingénieur Cloud senior, Oracle North America Cloud Services - NACIE), Bandari Chandu (Ingénieur Cloud senior, Oracle North America Cloud Services - NACIE), Anupam Abhishek (Ingénieur Cloud senior, Oracle North America Cloud Services - NACIE)
Ressources de formation supplémentaires
Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à d'autres contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir la documentation produit, consultez le site Oracle Help Center.
Implement Oracle True Cache Service with Oracle Database 23ai
G24562-01
January 2025