Note:

Implantación del Servicio Oracle True Cache con Oracle Database 23ai

Introducción

Oracle True Cache es una caché SQL y clave-valor (objeto o JSON) en memoria, consistente y gestionada automáticamente para Oracle Database.

Oracle True Cache es una caché en memoria de solo lectura delante de una instancia de Oracle Database. Al igual que Oracle Active Data Guard, Oracle True Cache es una réplica de solo lectura totalmente funcional de la base de datos primaria, excepto que en su mayoría no tiene disco.

Las aplicaciones modernas a menudo requieren un gran número de conexiones y un acceso rápido y de baja latencia a los datos. Un enfoque popular es colocar las cachés delante de la base de datos porque las aplicaciones suelen realizar muchas más lecturas que actualizaciones y pueden leer desde la caché sin afectar al rendimiento de la base de datos. Por ejemplo, un sistema de reservas de aerolíneas lee datos con frecuencia mientras las personas compran vuelos, y está bien si los datos no son los más actuales en comparación con lo que hay en la base de datos. La aplicación solo necesita acceder a los datos más actuales cuando alguien reserva un vuelo.

A diferencia de las cachés convencionales, Oracle True Cache mantiene automáticamente los datos a los que se accede con más frecuencia en la caché y mantiene la caché consistente con la base de datos primaria, otros objetos de la misma caché y otras cachés. Almacena en caché todos los objetos y tipos de dato de Oracle Database, incluido JSON.

Puesto que Oracle True Cache implementa políticas de seguridad de Oracle Database, puede controlar el acceso a la caché. Esto le permite almacenar en caché datos confidenciales, como información personal privada, que normalmente no puede almacenar en caché.

Detalles de Entorno:

Objetivos

Requisitos

Tarea 1: Copiar archivo de contraseña y cartera de cifrado de datos transparente (TDE)

Copie el archivo de contraseñas y, opcionalmente, la cartera de TDE de la base de datos primaria en el nodo de Oracle True Cache. Puede utilizar alguno de los siguientes métodos:

Tarea 2: Borrado de Base de Datos No Necesaria en el Nodo de Oracle True Cache

En el nodo Oracle True Cache, borre la base de datos existente en los hosts de Oracle True Cache si la base de datos ya existe y no es necesaria.

sqlplus / as sysdba
SQL> shut immediate
SQL> startup mount restrict
SQL> drop database;

Tarea 3: Probar la cadena de conexión de la base de datos primaria desde el host de True Cache

Ejecute el siguiente comando para probar la cadena de conexión de la base de datos primaria desde el host de Oracle True Cache.

sqlplus sys/<sys_password>@<primary_database_hostname>:1521/<primary_database_service>  as sysdba

Tarea 4: Configuración e Inicio de Oracle True Cache

En el nodo de Oracle True Cache, ejecute el comando -createTrueCache para completar la configuración de Oracle True Cache e iniciar 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

Salida de ejemplo:

[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 ~]$

Tarea 5: Creación y Verificación del Servicio de Aplicación de Nivel de Base de Datos de Conexión (PDB) para Oracle True Cache

Cree e inicie un servicio de aplicación de base de datos primaria (a nivel de PDB) para utilizarlo con el servicio Oracle True Cache y verifique que el servicio se está ejecutando.

Para bases de datos primarias de instancia única, utilice el paquete PL/SQL DBMS_SERVICE. Para los servicios específicos de una PDB, conéctese a la PDB específica o defina el contenedor de PDB correcto en la sesión antes de iniciar el servicio mediante DBMS_SERVICE.

Salida de ejemplo:

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.

Tarea 6: Configuración de Oracle True Cache en la Base de Datos Primaria

Ejecute el comando dbca -configureDatabase con el parámetro -configureTrueCacheInstanceService para configurar Oracle True Cache en la base de datos primaria. De esta forma se configura el servicio de aplicación de base de datos Oracle True Cache en la base de datos primaria y, a continuación, se inicia el servicio Oracle True Cache en Oracle True Cache.

Ejecute el siguiente comando para cada servicio de aplicación de base de datos 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

Salida de ejemplo:

[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 ~]$

Tarea 7: Iniciar el servicio en el nodo de Oracle True Cache

Ejecute el siguiente comando para iniciar el servicio en el nodo de instancia de Oracle True Cache.

alter session set container=<PDB_NAME>;
show pdbs
BEGIN
DBMS_SERVICE.START_SERVICE('sales_tc1');
END;
/

Tarea 8: Actualización de Parámetros en la Base de Datos Primaria

  1. Actualice los siguientes parámetros en el archivo listener.ora de la base de datos primaria.

    VALID_NODE_CHECKING_REGISTRATION_LISTENER = OFF
    REGISTRATION_INVITED_NODES_LISTENER=(<true_cache_instance_ip>)
    
  2. Reinicie o vuelva a cargar el listener en el servidor de la base de datos primaria.

Tarea 9: Verificación de los Servicios de Oracle True Cache en el Listener de Base de Datos Primaria

Ejecute el siguiente comando para verificar que los servicios de Oracle True Cache (sales_tc) se están ejecutando en el listener de la base de datos primaria.

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 ~]$

Tarea 10: Verificación de los Servicios de True Cache en el Nodo de Instancia de Oracle True Cache

Ejecute el siguiente comando para verificar que los servicios de Oracle True Cache (sales_tc) se están ejecutando en el nodo de instancia de caché de 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 ~]$

Tarea 11: Prueba del Servicio Oracle True Cache

Agregue la siguiente entrada de sustrato de red transparente (TNS) a la aplicación.

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

Agradecimientos

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de formación gratuita en el canal YouTube de Oracle Learning. Además, visita education.oracle.com/learning-explorer para convertirte en un Oracle Learning Explorer.

Para obtener documentación sobre el producto, visite Oracle Help Center.