Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever em uma conta gratuita, consulte Conceitos Básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Implementar o Oracle True Cache Service com o Oracle Database 23ai
Introdução
O Oracle True Cache é um SQL na memória, consistente e gerenciado automaticamente e um cache de valor-chave (objeto ou JSON) para o Oracle Database.
O Oracle True Cache é um cache na memória somente para leitura na frente de um Oracle Database. Assim como o Oracle Active Data Guard, o Oracle True Cache é uma réplica totalmente funcional e somente para leitura do banco de dados principal, exceto pelo fato de ser na maioria das vezes sem disco.
Os aplicativos modernos geralmente exigem um alto número de conexões e acesso rápido e de baixa latência aos dados. Uma abordagem popular é colocar caches na frente do banco de dados porque os aplicativos geralmente executam muito mais leituras do que atualizações, e eles podem ler no cache sem afetar o desempenho do banco de dados. Por exemplo, um sistema de reserva de companhia aérea lê os dados com frequência à medida que as pessoas compram voos, e não há problema se os dados não forem os mais atuais em comparação com o que está no banco de dados. O aplicativo só precisa acessar os dados mais atuais quando alguém reserva um voo.
Ao contrário dos caches convencionais, o Oracle True Cache mantém automaticamente os dados acessados com mais frequência no cache, e mantém o cache consistente com o banco de dados principal, outros objetos no mesmo cache e outros caches. Ele armazena em cache todos os objetos e tipos de dados do Oracle Database, incluindo JSON.
Como o Oracle True Cache implementa políticas de segurança do Oracle Database, você pode controlar o acesso ao cache. Isso permite que você armazene em cache dados confidenciais, como informações pessoais privadas, que normalmente não são armazenados em cache.
Detalhes de Ambiente:
-
Banco de Dados Principal:
-
Versão do banco de dados:
23.5.0.24
-
Sistema Operacional: Sistema de banco de dados de Máquina Virtual (VM).
-
Instância do Oracle True Cache: nó do Oracle Database Configuration Assistant (DBCA) de 1 nó com a versão do software de banco de dados Oracle Database 23ai (NON-ASM).
-
Objetivos
- Implemente o serviço Oracle True Cache e redirecione as solicitações de aplicativo somente leitura (selecione) para a instância do Oracle True Cache.
Pré-requisitos
-
Configure um caminho de rede para acessar o banco de dados principal (de origem) com uma string Easy Connect (EZConnect) no nó do Oracle True Cache.
-
Certifique-se de que um banco de dados principal esteja em execução no nó principal no modo de log de arquivamento (ARCHIVELOG).
Tarefa 1: Copiar Arquivo de Senha e Wallet de TDE (Transparent Data Encryption)
Copie o arquivo de senha e, opcionalmente, a wallet de TDE do banco de dados principal para o nó do Oracle True Cache. Você pode usar um dos seguintes métodos:
-
Copie manualmente o arquivo de senha do banco de dados principal (e a wallet de TDE opcional) para qualquer local no nó do Oracle True Cache.
Ou
-
Execute o comando DBCA no banco de dados principal para empacotar o arquivo de senha (e a wallet de TDE opcional) em um arquivo BLOB de configuração. Em seguida, copie o arquivo para o nó do Oracle True Cache e certifique-se de que o arquivo pertence ao Usuário do Oracle Home.
Use o comando a seguir para preparar o arquivo BLOB de configuração no banco de dados principal.
mkdir -p /tmp/passconfig $ORACLE_HOME/bin/dbca -configureDatabase -prepareTrueCacheConfigFile -sourceDB cdb1db1 -trueCacheBlobLocation /tmp/passconfig -silent
Exemplo de Saída:
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 ~]$
Copie o arquivo BLOB para o nó da instância do Oracle True Cache.
scp -i <private_key> <blob_file_name> opc@<true cache instance ip>:/tmp
Tarefa 2: Eliminar Banco de Dados Não Necessário no Nó do Oracle True Cache
No nó do Oracle True Cache, elimine o banco de dados existente nos hosts do Oracle True Cache se o banco de dados já existir e não for necessário.
sqlplus / as sysdba
SQL> shut immediate
SQL> startup mount restrict
SQL> drop database;
Tarefa 3: Testar String de Conexão do Banco de Dados Principal do Host de Cache Verdadeiro
Execute o comando a seguir para testar a string de conexão do banco de dados principal do host do Oracle True Cache.
sqlplus sys/<sys_password>@<primary_database_hostname>:1521/<primary_database_service> as sysdba
Tarefa 4: Configurar e Iniciar o Oracle True Cache
No nó do Oracle True Cache, execute o comando -createTrueCache
para concluir a configuração do Oracle True Cache e iniciar o 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
Exemplo de Saída:
[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 ~]$
Tarefa 5: Criar e Verificar Serviço de Aplicativo em Nível de Banco de Dados Plugável (PDB) para o Oracle True Cache
Crie e inicie um serviço de aplicativo de banco de dados principal (no nível do PDB) para usar com o serviço Oracle True Cache e verifique se o serviço está em execução.
Para bancos de dados principais de instância única, use o pacote PL/SQL DBMS_SERVICE
. Para serviços específicos de um PDB, conecte-se ao PDB específico ou defina o contêiner de PDB correto em sua sessão antes de iniciar o serviço usando DBMS_SERVICE
.
Exemplo de Saída:
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.
Tarefa 6: Configurar o Oracle True Cache no Banco de Dados Principal
Execute o comando dbca -configureDatabase
com o parâmetro -configureTrueCacheInstanceService
para configurar o Oracle True Cache no banco de dados principal. Isso configura o serviço de aplicativo do banco de dados Oracle True Cache no banco de dados principal e, em seguida, inicia o serviço Oracle True Cache no Oracle True Cache.
Execute o comando a seguir para cada serviço de aplicativo de banco de dados 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
Exemplo de Saída:
[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 ~]$
Tarefa 7: Iniciar Serviço no Nó do Oracle True Cache
Execute o comando a seguir para iniciar o serviço no nó da instância do Oracle True Cache.
alter session set container=<PDB_NAME>;
show pdbs
BEGIN
DBMS_SERVICE.START_SERVICE('sales_tc1');
END;
/
Tarefa 8: Atualizar Parâmetros no Banco de Dados Principal
-
Atualize os parâmetros a seguir no arquivo
listener.ora
do banco de dados principal.VALID_NODE_CHECKING_REGISTRATION_LISTENER = OFF REGISTRATION_INVITED_NODES_LISTENER=(<true_cache_instance_ip>)
-
Reinicie ou recarregue o listener no servidor de banco de dados principal.
Tarefa 9: Verificar Serviços do Oracle True Cache no Listener do Banco de Dados Principal
Execute o comando a seguir para verificar se os serviços do Oracle True Cache (sales_tc
) estão em execução no listener do banco de dados principal.
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 ~]$
Tarefa 10: Verificar Serviços de Cache Verdadeiro no Nó da Instância do Oracle True Cache
Execute o comando a seguir para verificar se os serviços do Oracle True Cache (sales_tc
) estão em execução no nó da instância do Oracle True cache.
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 ~]$
Tarefa 11: Testar o Oracle True Cache Service
Adicione a seguinte entrada TNS (Transparent Network Substrate) ao aplicativo.
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
Links Relacionados
Confirmações
- Autors - Pavan Yennampelli (Engenheiro de Nuvem Sênior, Oracle North America Cloud Services - NACIE), Sravan Kumar K B (Engenheiro de Nuvem Sênior, Oracle North America Cloud Services - NACIE), Bandari Chandu (Engenheiro de Nuvem Sênior, Oracle North America Cloud Services - NACIE), Anupam Abhishek (Engenheiro de Nuvem Sênior, Oracle North America Cloud Services - NACIE)
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Implement Oracle True Cache Service with Oracle Database 23ai
G24566-01
January 2025