附註:

運用 Oracle Database 23ai 導入 Oracle True Cache Service

簡介

Oracle True Cache 是 Oracle Database 的記憶體內、一致且自動管理的 SQL 和索引鍵值 (物件或 JSON) 快取。

Oracle True Cache 是 Oracle Database 前面的記憶體內唯讀快取。與 Oracle Active Data Guard 一樣,Oracle True Cache 是主要資料庫的完整功能唯讀複本,但主要資料庫大部分為無本地磁碟。

現代應用程式通常需要大量連線,且能快速、低延遲地存取資料。最受歡迎的方法是將快取放置在資料庫前面,因為應用程式執行的讀取次數通常比更新多,而且它們可以從快取中讀取,而不會影響資料庫效能。例如,航空公司保留系統會在人們購買航班時經常讀取資料,如果資料與資料庫中的資料相比,則可以正常讀取。只有當有人保留班機時,應用程式才需要存取最新資料。

與傳統快取不同,Oracle True Cache 會自動將最常存取的資料保留在快取中,並讓快取與主要資料庫、相同快取中的其他物件以及其他快取保持一致。它會快取所有 Oracle Database 物件和資料類型,包括 JSON。

因為 Oracle True Cache 實行 Oracle Database 安全原則,所以您可以控制對快取的存取。這可讓您快取您通常不會快取的機密資料,例如私人個人資訊。

環境詳細資訊:

目標

必要條件

作業 1:複製密碼檔與通透資料加密 (TDE) 公事包

將密碼檔和 TDE 公事包 (選擇性) 從主要資料庫複製到 Oracle True Cache 節點。您可以使用下列其中一種方法:

作業 2:在 Oracle True Cache 節點上刪除不需要的資料庫

在 Oracle True Cache 節點上,如果資料庫已經存在且不是必要的話,請在 Oracle True Cache 主機上刪除現有的資料庫。

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

作業 3:從 True Cache 主機測試主要資料庫連線字串

執行下列命令以從 Oracle True Cache 主機測試主要資料庫連線字串。

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

工作 4:設定和啟動 Oracle True Cache

在 Oracle True Cache 節點上,執行 -createTrueCache 命令以完成 Oracle True Cache 組態,以及啟動 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

範例輸出:

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

作業 5:建立並驗證 Oracle True Cache 的可插拔資料庫 (PDB) 層次應用程式服務

建立並啟動主要資料庫 (在 PDB 層次) 應用程式服務以搭配 Oracle True Cache 服務使用,並確認服務正在執行中。

若為單一執行處理主要資料庫,請使用 DBMS_SERVICE PL/SQL 套裝程式。對於 PDB 特定的服務、連線至特定的 PDB,或在使用 DBMS_SERVICE 啟動服務之前在您的階段作業中設定正確的 PDB 容器。

範例輸出:

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.

作業 6:在主要資料庫上設定 Oracle True Cache

使用 -configureTrueCacheInstanceService 參數執行 dbca -configureDatabase 命令,在主要資料庫上設定 Oracle True Cache。這會在主要資料庫設定 Oracle True Cache 資料庫應用程式服務,然後在 Oracle True Cache 啟動 Oracle True Cache 服務。

對每個 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

範例輸出:

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

作業 7:在 Oracle True Cache 節點上啟動服務

執行下列命令,在 Oracle True Cache 執行處理節點上啟動服務。

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

作業 8:更新主要資料庫中的參數

  1. 更新主要資料庫 listener.ora 檔案中的下列參數。

    VALID_NODE_CHECKING_REGISTRATION_LISTENER = OFF
    REGISTRATION_INVITED_NODES_LISTENER=(<true_cache_instance_ip>)
    
  2. 重新啟動或重新載入主要資料庫伺服器上的監聽器。

作業 9:驗證主要資料庫監聽器中的 Oracle True Cache 服務

執行下列命令以確認 Oracle True Cache (sales_tc) 服務在主要資料庫監聽器底下執行。

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

作業 10:驗證 Oracle True Cache 執行處理節點上的 True Cache 服務

執行下列命令以確認 Oracle True Cache (sales_tc) 服務在 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 ~]$

作業 11:測試 Oracle True Cache 服務

將下列「通透網路次級 (TNS)」項目新增至應用程式。

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

認可

其他學習資源

探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。

如需產品文件,請造訪 Oracle Help Center