Remarques :

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:

Objectifs

Prérequis

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 :

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

  1. 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>)
    
  2. 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

Remerciements

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.