Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zur Registrierung für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Ersetzen Sie diese Werte nach Abschluss der Übung durch Werte, die für Ihre Cloud-Umgebung spezifisch sind.
Oracle True Cache Service mit Oracle Database 23ai implementieren
Einführung
Oracle True Cache ist ein speicherresidenter, konsistenter und automatisch verwalteter SQL- und Schlüsselwert-Cache (Objekt oder JSON) für Oracle Database.
Oracle True Cache ist ein speicherresidenter, schreibgeschützter Cache vor einer Oracle Database. Wie Oracle Active Data Guard ist Oracle True Cache ein voll funktionsfähiges, schreibgeschütztes Replikat der Primärdatenbank, mit der Ausnahme, dass es größtenteils plattenlos ist.
Moderne Anwendungen erfordern oft eine hohe Anzahl von Verbindungen und einen schnellen Zugriff mit geringer Latenz auf die Daten. Ein gängiger Ansatz besteht darin, Caches vor der Datenbank zu platzieren, da Anwendungen in der Regel viel mehr Lesevorgänge ausführen als Updates, und sie aus dem Cache lesen können, ohne die Datenbankperformance zu beeinträchtigen. Zum Beispiel liest ein Airline-Reservierungssystem Daten häufig, wenn Personen für Flüge einkaufen, und es ist in Ordnung, wenn die Daten im Vergleich zu den Daten in der Datenbank nicht die aktuellsten sind. Die Anwendung muss nur dann auf die aktuellsten Daten zugreifen, wenn jemand einen Flug reserviert.
Im Gegensatz zu herkömmlichen Caches behält Oracle True Cache automatisch die am häufigsten aufgerufenen Daten im Cache bei und hält den Cache mit der Primärdatenbank, anderen Objekten im selben Cache und anderen Caches konsistent. Er speichert alle Oracle Database-Objekte und -Datentypen, einschließlich JSON.
Da Oracle True Cache Oracle Database-Sicherheits-Policys implementiert, können Sie den Zugriff auf den Cache kontrollieren. Auf diese Weise können Sie sensible Daten wie private persönliche Informationen cachen, die Sie normalerweise nicht cachen.
Umgebungsdetails:
-
Primärdatenbank:
-
Datenbankversion:
23.5.0.24
-
Betriebssystem: Virtual Machine-(VM-)Datenbanksystem.
-
Oracle True Cache-Instanz: 1 Knoten Oracle Database Configuration Assistant (DBCA)-Knoten mit Oracle Database 23ai-Datenbanksoftwareversion (NON-ASM).
-
Ziele
- Implementieren Sie den Oracle True Cache-Service, und leiten Sie die schreibgeschützten (ausgewählten) Anwendungsanforderungen an die Oracle True Cache-Instanz um.
Voraussetzungen
-
Richten Sie einen Netzwerkpfad für den Zugriff auf die primäre (Quell-)Datenbank mit einer Easy Connect-(EZConnect-)Zeichenfolge vom Oracle True Cache-Knoten aus ein.
-
Stellen Sie sicher, dass eine Primärdatenbank auf dem primären Knoten im Archive Logging-(ARCHIVELOG-)Modus ausgeführt wird.
Aufgabe 1: Kennwortdatei und Transparent Data Encryption-(TDE-)Wallet kopieren
Kopieren Sie die Kennwortdatei und optional das TDE-Wallet aus der Primärdatenbank in den Oracle True Cache-Knoten. Sie können eine der folgenden Methoden verwenden:
-
Kopieren Sie die Kennwortdatei der Primärdatenbank (und das optionale TDE-Wallet) manuell in einen beliebigen Speicherort auf dem Oracle True Cache-Knoten.
Oder
-
Führen Sie den DBCA-Befehl in der Primärdatenbank aus, um die Kennwortdatei (und das optionale TDE-Wallet) in einer Konfigurations-BLOB-Datei zu verpacken. Kopieren Sie dann die Datei in den Oracle True Cache-Knoten, und stellen Sie sicher, dass die Datei dem Oracle Home-Benutzer gehört.
Verwenden Sie den folgenden Befehl, um die Konfigurations-BLOB-Datei in der Primärdatenbank vorzubereiten.
mkdir -p /tmp/passconfig $ORACLE_HOME/bin/dbca -configureDatabase -prepareTrueCacheConfigFile -sourceDB cdb1db1 -trueCacheBlobLocation /tmp/passconfig -silent
Beispielausgabe:
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 ~]$
Kopieren Sie die BLOB-Datei in den Oracle True Cache-Instanzknoten.
scp -i <private_key> <blob_file_name> opc@<true cache instance ip>:/tmp
Aufgabe 2: Nicht erforderliche Datenbank auf Oracle True Cache-Knoten löschen
Löschen Sie auf dem Oracle True Cache-Knoten die vorhandene Datenbank auf den Oracle True Cache-Hosts, wenn die Datenbank bereits vorhanden ist und nicht erforderlich ist.
sqlplus / as sysdba
SQL> shut immediate
SQL> startup mount restrict
SQL> drop database;
Aufgabe 3: Verbindungszeichenfolge der primären Datenbank vom True Cache-Host testen
Führen Sie den folgenden Befehl aus, um die Verbindungszeichenfolge der Primärdatenbank vom Oracle True Cache-Host zu testen.
sqlplus sys/<sys_password>@<primary_database_hostname>:1521/<primary_database_service> as sysdba
Aufgabe 4: Oracle True Cache konfigurieren und starten
Führen Sie auf dem Oracle True Cache-Knoten den Befehl -createTrueCache
aus, um die Oracle True Cache-Konfiguration abzuschließen und Oracle True Cache zu starten.
$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
Beispielausgabe:
[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 ~]$
Aufgabe 5: Anwendungsservice auf PDB-Ebene für Oracle True Cache erstellen und prüfen
Erstellen und starten Sie einen Anwendungsservice der Primärdatenbank (auf PDB-Ebene), der mit dem Oracle True Cache-Service verwendet werden soll, und prüfen Sie, ob der Service ausgeführt wird.
Verwenden Sie für Primärdatenbanken mit einer Instanz das PL/SQL-Package DBMS_SERVICE
. Stellen Sie für PDB-spezifische Services eine Verbindung zur spezifischen PDB her, oder legen Sie den korrekten PDB-Container in der Session fest, bevor Sie den Service mit DBMS_SERVICE
starten.
Beispielausgabe:
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.
Aufgabe 6: Oracle True Cache auf der Primärdatenbank konfigurieren
Führen Sie den Befehl dbca -configureDatabase
mit dem Parameter -configureTrueCacheInstanceService
aus, um Oracle True Cache für die Primärdatenbank zu konfigurieren. Dadurch wird der Oracle True Cache-Datenbankanwendungsservice in der Primärdatenbank konfiguriert und der Oracle True Cache-Service in Oracle True Cache gestartet.
Führen Sie den folgenden Befehl für jeden Oracle True Cache-Datenbankanwendungsservice aus.
$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
Beispielausgabe:
[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 ~]$
Aufgabe 7: Service auf Oracle True Cache-Knoten starten
Führen Sie den folgenden Befehl aus, um den Service auf dem Oracle True Cache-Instanzknoten zu starten.
alter session set container=<PDB_NAME>;
show pdbs
BEGIN
DBMS_SERVICE.START_SERVICE('sales_tc1');
END;
/
Aufgabe 8: Parameter in der Primärdatenbank aktualisieren
-
Aktualisieren Sie die folgenden Parameter in der Datei
listener.ora
der Primärdatenbank.VALID_NODE_CHECKING_REGISTRATION_LISTENER = OFF REGISTRATION_INVITED_NODES_LISTENER=(<true_cache_instance_ip>)
-
Starten Sie den Listener auf dem primären Datenbankserver neu, oder laden Sie ihn neu.
Aufgabe 9: Oracle True Cache-Services im Listener der primären Datenbank prüfen
Führen Sie den folgenden Befehl aus, um zu prüfen, ob die Oracle True Cache-(sales_tc
-)Services unter dem primären Datenbank-Listener ausgeführt werden.
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 ~]$
Aufgabe 10: True Cache Services auf Oracle True Cache-Instanzknoten prüfen
Führen Sie den folgenden Befehl aus, um zu prüfen, ob die Oracle True Cache-(sales_tc
-)Services auf dem Oracle True Cache-Instanzknoten ausgeführt werden.
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 ~]$
Aufgabe 11: Oracle True Cache Service testen
Fügen Sie der Anwendung den folgenden Transparent Network Substrate-(TNS-)Eintrag hinzu.
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
Verwandte Links
Danksagungen
- Autoren - Pavan Yennampelli (Senior Cloud Engineer, Oracle North America Cloud Services - NACIE), Sravan Kumar K B (Senior Cloud Engineer, Oracle North America Cloud Services - NACIE), Bandari Chandu (Senior Cloud Engineer, Oracle North America Cloud Services - NACIE), Anupam Abhishek (Senior Cloud Engineer, Oracle North America Cloud Services - NACIE)
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie im Oracle Learning YouTube-Channel auf weitere kostenlose Lerninhalte zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Implement Oracle True Cache Service with Oracle Database 23ai
G24559-01
January 2025