附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱 Oracle Cloud Infrastructure Free Tier 入門。
- 它使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特定的值。
運用 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 安全原則,所以您可以控制對快取的存取。這可讓您快取您通常不會快取的機密資料,例如私人個人資訊。
環境詳細資訊:
-
主要資料庫:
-
資料庫版本:
23.5.0.24
-
作業系統:虛擬機器 (VM) 資料庫系統。
-
Oracle True Cache 執行處理:1 個節點 Oracle Database Configuration Assistant (DBCA) 節點與 Oracle Database 23ai 資料庫軟體版本 (NON-ASM)。
-
目標
- 實行 Oracle True Cache 服務,並將唯讀 (選取) 應用程式要求重新導向至 Oracle True Cache 執行處理。
必要條件
-
設定網路路徑,以從 Oracle True Cache 節點使用「簡易連線 (EZConnect)」字串存取主要 (來源) 資料庫。
-
確定主要資料庫在存檔記錄日誌 (ARCHIVELOG) 模式的主要節點上執行。
作業 1:複製密碼檔與通透資料加密 (TDE) 公事包
將密碼檔和 TDE 公事包 (選擇性) 從主要資料庫複製到 Oracle True Cache 節點。您可以使用下列其中一種方法:
-
手動將主要資料庫密碼檔 (以及選擇性的 TDE 公事包) 複製到 Oracle True Cache 節點上的任何位置。
或
-
在主要資料庫上執行 DBCA 命令,將密碼檔 (和選擇性的 TDE 公事包) 封裝到組態 BLOB 檔案中。然後將檔案複製到 Oracle True Cache 節點,並確定該檔案是由「Oracle 本位目錄使用者」擁有。
使用下列命令準備主要資料庫上的組態 BLOB 檔案。
mkdir -p /tmp/passconfig $ORACLE_HOME/bin/dbca -configureDatabase -prepareTrueCacheConfigFile -sourceDB cdb1db1 -trueCacheBlobLocation /tmp/passconfig -silent
範例輸出:
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 ~]$
將 BLOB 檔案複製到 Oracle True Cache 執行處理節點。
scp -i <private_key> <blob_file_name> opc@<true cache instance ip>:/tmp
作業 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:更新主要資料庫中的參數
-
更新主要資料庫
listener.ora
檔案中的下列參數。VALID_NODE_CHECKING_REGISTRATION_LISTENER = OFF REGISTRATION_INVITED_NODES_LISTENER=(<true_cache_instance_ip>)
-
重新啟動或重新載入主要資料庫伺服器上的監聽器。
作業 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
相關連結
認可
- 作者 - Pavan Yennampelli (Oracle 北美雲端服務資深雲端工程師 - NACIE)、Sravan Kumar K B (Oracle 北美雲端服務資深雲端工程師 - NACIE)、Bandari Chandu (Oracle 北美雲端服務資深雲端工程師 - NACIE)、Anupam Abhishek (Oracle 北美雲端服務 - NACIE 的資深雲端工程師)
其他學習資源
探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Implement Oracle True Cache Service with Oracle Database 23ai
G24568-01
January 2025