Nota

Implementa Oracle True Cache Service con Oracle Database 23ai

Introduzione

Oracle True Cache è una cache SQL e key-value (object o JSON) in-memory, coerente e gestita automaticamente per Oracle Database.

Oracle True Cache è una cache in-memory di sola lettura di fronte a un Oracle Database. Come Oracle Active Data Guard, Oracle True Cache è una replica completamente funzionale e di sola lettura del database primario, tranne che per la maggior parte senza disco.

Le applicazioni moderne spesso richiedono un numero elevato di connessioni e un accesso rapido e a bassa latenza ai dati. Un approccio molto diffuso consiste nel posizionare le cache davanti al database perché le applicazioni in genere eseguono molte più letture rispetto agli aggiornamenti e possono leggere dalla cache senza influire sulle prestazioni del database. Ad esempio, un sistema di prenotazione delle compagnie aeree legge frequentemente i dati mentre le persone fanno acquisti per i voli ed è corretto se i dati non sono i più aggiornati rispetto a quelli presenti nel database. L'applicazione deve accedere ai dati più aggiornati solo quando qualcuno prenota un volo.

A differenza delle cache convenzionali, Oracle True Cache mantiene automaticamente nella cache i dati ad accesso più frequente e mantiene la cache coerente con il database primario, altri oggetti nella stessa cache e altre cache. Inserisce nella cache tutti gli oggetti e i tipi di dati di Oracle Database, incluso JSON.

Poiché Oracle True Cache implementa i criteri di sicurezza di Oracle Database, è possibile controllare l'accesso alla cache. Ciò consente di memorizzare nella cache i dati riservati, come le informazioni personali private, che normalmente non vengono memorizzati nella cache.

Dettagli ambiente:

Obiettivi

Prerequisiti

Task 1: Copia file password e wallet TDE (Transparent Data Encryption)

Copiare il password file e, facoltativamente, il wallet TDE dal database primario al nodo Oracle True Cache. È possibile usare uno qualsiasi dei due metodi seguenti:

Task 2: eliminazione del database non necessario sul nodo Oracle True Cache

Nel nodo Oracle True Cache eliminare il database esistente negli host Oracle True Cache se il database esiste già e non è necessario.

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

Task 3: eseguire il test della stringa di connessione al database primario dall'host True Cache

Eseguire il comando seguente per eseguire il test della stringa di connessione al database primario dall'host Oracle True Cache.

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

Task 4: Configurare e avviare Oracle True Cache

Sul nodo Oracle True Cache, eseguire il comando -createTrueCache per completare la configurazione di Oracle True Cache e avviare 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

Output di esempio:

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

Task 5: Crea e verifica servizio applicazione a livello di pluggable database (PDB) per Oracle True Cache

Creare e avviare un servizio applicazione di database primario (a livello di PDB) da utilizzare con il servizio Oracle True Cache e verificare che il servizio sia in esecuzione.

Per i database primari a istanza singola, utilizzare il package PL/SQL DBMS_SERVICE. Per i servizi specifici di un PDB, connettersi al PDB specifico o impostare il contenitore PDB corretto nella sessione prima di avviare il servizio utilizzando DBMS_SERVICE.

Output di esempio:

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.

Task 6: configurare Oracle True Cache nel database primario

Eseguire il comando dbca -configureDatabase con il parametro -configureTrueCacheInstanceService per configurare Oracle True Cache nel database primario. Questa operazione configura il servizio dell'applicazione di database Oracle True Cache nel database primario, quindi avvia il servizio Oracle True Cache in Oracle True Cache.

Eseguire il comando seguente per ogni servizio dell'applicazione di database 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

Output di esempio:

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

Task 7: Avvia servizio su nodo Oracle True Cache

Eseguire il comando seguente per avviare il servizio sul nodo dell'istanza di Oracle True Cache.

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

Task 8: Aggiorna parametri nel database primario

  1. Aggiornare i seguenti parametri nel file listener.ora del database primario.

    VALID_NODE_CHECKING_REGISTRATION_LISTENER = OFF
    REGISTRATION_INVITED_NODES_LISTENER=(<true_cache_instance_ip>)
    
  2. Riavviare o ricaricare il listener sul database server primario.

Task 9: verificare i servizi Oracle True Cache nel listener del database primario

Eseguire il comando seguente per verificare che i servizi Oracle True Cache (sales_tc) siano in esecuzione nel listener del database primario.

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

Task 10: Verifica servizi True Cache sul nodo dell'istanza di Oracle True Cache

Eseguire il comando seguente per verificare che i servizi Oracle True Cache (sales_tc) siano in esecuzione sul nodo dell'istanza della cache 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 ~]$

Task 11: Test del servizio Oracle True Cache

Aggiungere la seguente voce TNS (Transparent Network Substrate) all'applicazione.

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

Conferme

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.

Per la documentazione del prodotto, visita l'Oracle Help Center.