Note :
- Ce tutoriel nécessite l'accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, voir Introduction à l' niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les données d'identification, la location et les compartiments Oracle Cloud Infrastructure. À la fin de votre laboratoire, remplacez ces valeurs par celles propres à votre environnement en nuage.
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 :
-
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 sur machine virtuelle.
-
Instance Oracle True Cache : Noeud Oracle Database Configuration Assistant (DBCA) à 1 noeud avec version du logiciel 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électionner) vers l'instance Oracle True Cache.
Préalables
-
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 s'exécute sur le noeud principal en mode de journalisation d'archivage (ARCHIVELOG).
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 :
-
Copiez manuellement le fichier de mots de passe de la base de données principale (et le portefeuille TDE facultatif) dans n'importe quel emplacement du noeud Oracle True Cache.
Ou
-
Exécutez la commande DBCA sur la base principale pour inclure le fichier de mots de passe (et le portefeuille TDE facultatif) dans un fichier BLOB de configuration. Copiez ensuite le fichier dans le noeud Oracle True Cache et assurez-vous que le fichier 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 : 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
-
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
) 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
Liens connexes
Confirmation
- Auteurs - Pavan Yennampelli (ingénieur en nuage principal, services en nuage d'Oracle North America - NACIE), Sravan Kumar K B (ingénieur en nuage principal, services en nuage d'Oracle North America - NACIE), Bandari Chandu (ingénieur en nuage principal, services en nuage d'Oracle North America - NACIE), Anupam Abhishek (ingénieur en nuage principal, services en nuage d'Oracle North America - NACIE)
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.
Implement Oracle True Cache Service with Oracle Database 23ai
G24561-01
January 2025