Note :

Implémenter le service Oracle True Cache avec Oracle Database 23ai

Présentation

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 et en lecture seule devant Oracle Database. À l'instar d'Oracle Active Data Guard, Oracle True Cache est une réplique entièrement fonctionnelle en lecture seule de la base principale, à ceci près qu'elle est principalement sans disque.

Les applications modernes requièrent souvent un nombre élevé de connexions et un accès rapide et à faible latence aux données. Une approche populaire consiste à placer des caches devant la base de données, car les applications effectuent généralement beaucoup plus de lectures que les mises à jour et peuvent lire à partir du cache sans affecter les performances de la base de données. Par exemple, un système de réservation d'une compagnie aérienne lit fréquemment les données lorsque les gens achètent des vols, et il est normal que les données ne soient pas les plus récentes par rapport à ce qui se trouve 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 conventionnels, Oracle True Cache conserve automatiquement les données les plus fréquemment consultées dans le cache et assure la cohérence du cache 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 des stratégies de sécurité 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 mettez généralement pas en cache.

Détails de l'environnement :

Objectifs

Préalables

Tâche 1 : Copier le fichier de mots de passe et le portefeuille TDE

Copiez le fichier de mots de passe et, facultativement, le portefeuille TDE de la base de données principale vers le noeud Oracle True Cache. Vous pouvez utiliser l'une des méthodes suivantes :

Tâche 2 : Déposer une base de données inutile sur un 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 celle-ci 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 d'application au niveau de la base de données enfichable pour Oracle True Cache

Créez et démarrez un service d'application de base de données principale (au niveau de la base de données enfichable) à utiliser avec le service Oracle True Cache, et vérifiez que le service est en cours d'exécution.

Pour les bases de données principales à instance unique, utilisez l'ensemble PL/SQL DBMS_SERVICE. Pour les services qui sont propres à une base de données enfichable, connectez-vous à celle-ci ou définissez le conteneur 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 d'application de base de données Oracle True Cache sur la base principale, puis démarre le service Oracle True Cache sur Oracle True Cache.

Exécutez la commande suivante pour chaque service d'application 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 dans 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) s'exécutent sous le module d'écoute de la base 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) s'exécutent 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

Confirmation

Autres ressources d'apprentissage

Explorez d'autres laboratoires sur la page docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal YouTube d'Oracle Learning. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.