Descarregar Consultas para Clones Atualizáveis do Membro
Quando você tem cargas de trabalho de leitura intensas, em que uma quantidade relativamente pequena de dados é verificada por várias consultas, pode fazer offload de consultas (leituras) de um líder de pool elástico ou de um membro de pool elástico para Clones Atualizáveis.
- Sobre Offload de Consulta
Fornece informações sobre o uso de offload de consulta com um pool elástico e descreve os recursos de offload de consulta. - Ativar Offload de Consulta
Descreve como ativar o offload de consulta para um líder de pool elástico ou para um membro de pool elástico. - Desativar Offload de Consulta
Descreve como desativar o offload de consulta para um líder de pool elástico ou para um membro de pool elástico. - Descarregamento de Consulta do PL/SQL
Quando o descarregamento de consulta está ativado, as consultas são descarregadas para Clones Atualizáveis, mesmo que estejam incorporadas ao PL/SQL. O código PL/SQL pode ser armazenado em procedures, funções, pacotes ou blocos anônimos. - Descarregamento de Consulta de um Job do Scheduler
Quando o descarregamento de consulta está ativado, as consultas de dentro de uma ação de job do Oracle Scheduler são descarregadas para Clones Atualizáveis. As consultas são descarregadas se o job for executado em primeiro plano ou em segundo plano. - Observações para Descarregar Consultas
Fornece observações adicionais para o recurso de descarregamento de consultas.
Tópico principal: Usar e Gerenciar Pools Elásticos no Autonomous Database
Sobre Descarregamento de Consulta
Fornece informações sobre o uso de offload de consulta com um pool elástico e descreve os recursos de offload de consulta.
O offload de consulta do pool elástico oferece benefícios de desempenho ao permitir que um ou mais Clones Atualizáveis tratem consultas para um líder de pool elástico ou para um membro de pool elástico. Esse recurso também permite adicionar Clones Atualizáveis para acomodar a crescente demanda de consulta (leitura). O descarregamento de consultas permite que seu aplicativo seja dimensionado horizontalmente, onde você pode adicionar Clones Atualizáveis para manter o desempenho geral do sistema conforme necessário para atender ao volume de solicitações de consulta.
Quando o descarregamento de consulta é ativado, as consultas são enviadas ao líder do pool elástico ou a um membro do pool elástico e um ou mais Clones Atualizáveis disponíveis se tornam candidatos ao descarregamento de consulta. Além disso, quando mais Clones Atualizáveis são adicionados, o descarregamento de consultas é ajustado dinamicamente para fazer uso dos novos recursos.
Um caso de uso para descarregamento de consulta é ativar o recurso durante o horário de pico para tirar a carga do líder do pool elástico ou de um membro do pool elástico. Durante o horário de silêncio, você pode desativar o descarregamento de consultas para executar operações de manutenção, como atualizar os Clones Atualizáveis.
Por padrão, o offload de consulta considera consultas de qualquer sessão. Como alternativa, você pode descarregar consultas de uma lista de sessões que você especifica por módulo ou nome da ação.
A figura a seguir mostra as consultas de descarregamento do líder do pool elástico.
A figura a seguir mostra as consultas de descarregamento de um membro do pool elástico.
Os dados dos Clones Atualizáveis estão atualizados com base no último horário de atualização de cada clone atualizável. Isso significa que quando o offload de consulta é ativado, você executa todas as operações DDL, DML e PL/SQL no líder do pool elástico ou no membro do pool elástico que está descarregando consultas. Em seguida, após a atualização de um Clone Atualizável, as alterações serão refletidas no Clone Atualizável.
Consulte Usar Clones Atualizáveis com o Autonomous Database para obter mais informações.
Recursos de Offload de Consulta
-
Adição Dinâmica: Os Clones Atualizáveis podem ser adicionados como membros do pool elástico a qualquer momento. O descarregamento da consulta se ajusta dinamicamente para usar novos membros.
-
Remoção Dinâmica: Os Clones Atualizáveis podem ser removidos como membros do pool elástico a qualquer momento. O descarregamento de consulta se ajusta dinamicamente para interromper o descarregamento de consultas para um Clone Atualizável que foi removido do pool elástico.
-
Offload de Adesivo Baseado em Sessão: O offload de consulta é sticky dentro de uma sessão, ou seja, se uma consulta em uma sessão tiver sido descarregada para um Clone Atualizável específico, o offload de consulta usará o mesmo Clone Atualizável para descarregar consultas subsequentes na mesma sessão.
-
Mapeamento de Serviço Um para Um: Há um mapeamento um para um entre o serviço usado no líder do pool elástico ou no membro do pool elástico pela consulta original e o serviço usado em um Clone Atualizável para qualquer consulta descarregada. Por exemplo, se uma sessão estiver conectada ao serviço MEDIUM, o offload de consulta dessa sessão também usará o serviço MEDIUM no Clone Atualizável.
-
Determinar se a Sessão está Offloadada: Usando uma consulta
SYS_CONTEXT
, você pode determinar se uma sessão é executada no líder ou membro do pool elástico ou se está offload em um Clone Atualizável. -
Descarregamento de Consulta do PL/SQL: As consultas são descarregadas para um Clone Atualizável mesmo que estejam incorporadas ao PL/SQL. O código PL/SQL pode ser armazenado em procedures, funções, pacotes ou blocos anônimos.
-
Descarga de Consulta do Job do Scheduler: Consultas de dentro de ações de job do Oracle Scheduler são descarregadas. As consultas de job do Oracle Scheduler são descarregadas se o job for executado em primeiro plano ou em segundo plano.
DBA_PROXY_SQL Views
Use as views DBA_PROXY_SQL
DBA_PROXY_SQL_ACTIONS
e DBA_PROXY_SQL_MODULES
para exibir a lista de módulos ou ações que estão configurados para offload de consulta. Você deve consultar essas views de uma sessão que não está ativada para descarregamento de consulta.
Tópico principal: Descarregar Consultas para Clones Atualizáveis do Membro
Ativar Descarregamento de Consulta
Descreve como ativar o offload de consulta para um líder de pool elástico ou para um membro de pool elástico.
Veja a seguir os requisitos para ativar o offload de consulta:
-
Você pode ativar o offload de consulta para um líder de pool elástico ou para um membro de pool elástico sem Clones Atualizáveis. Depois de ativar o descarregamento de consultas, você pode adicionar Clones Atualizáveis e o recurso de descarregamento de consultas se ajusta dinamicamente para fazer uso dos clones atualizáveis.
-
Um Clone Atualizável que seja um candidato para descarregamento de consulta deve:
-
Tenha o líder do pool elástico como seu banco de dados de origem e esteja na mesma região que o líder do pool elástico.
ou
Ter um membro do pool elástico como seu banco de dados de origem e estar na mesma região que o membro do pool elástico.
-
Seja um membro do Elastic Pool.
-
Para ativar o offload de consulta:
Quando o descarregamento de consulta está ativado para uma sessão, você pode encontrar o nome do Clone Atualizável para o qual as consultas são descarregadas. Por exemplo, na sessão, execute esta consulta:
SELECT sys_context('userenv', 'con_name') FROM DUAL;
Se as consultas não estiverem sendo descarregadas para um Clone Atualizável, esta consulta mostrará o nome do líder do pool elástico (ou do membro do pool elástico que não é um clone atualizável).
Consulte SYS_CONTEXT para obter mais informações.
Consulte ENABLE_READ_ONLY_OFFLOAD Procedures para obter mais informações.
- Ativar Offload de Consulta para Módulos ou Ações Nomeados
Descreve como ativar o offload de consulta para sessões com módulos ou ações nomeados.
Tópico principal: Descarregar Consultas para Clones Atualizáveis do Membro
Ativar Offload de Consulta para Módulos ou Ações Nomeados
Descreve como ativar o offload de consulta para sessões com módulos ou ações nomeados.
Para ativar o offload de consulta para sessões específicas por nome de módulo ou nome de ação:
Quando o descarregamento de consulta está ativado para uma sessão, na sessão você pode encontrar o nome do Clone Atualizável para o qual as consultas são descarregadas. Por exemplo:
SELECT sys_context('userenv', 'con_name') FROM DUAL;
Se as consultas não estiverem sendo descarregadas para um Clone Atualizável, esta consulta mostrará o nome do líder do pool elástico (ou do membro do pool elástico que não é um clone atualizável).
Consulte SYS_CONTEXT para obter mais informações.
As views DBA_PROXY_SQL_ACTIONS
e DBA_PROXY_SQL_MODULES
exibem a lista de módulos ou ações configurados para offload de consulta. Você deve consultar essas views de uma sessão que não está ativada para descarregamento de consulta. Consulte DBA_PROXY_SQL Views para obter mais informações.
Consulte ENABLE_READ_ONLY_OFFLOAD Procedures para obter mais informações.
Tópico pai: Ativar Offload de Consulta
Desativar Descarregamento de Consulta
Descreve como desativar o offload de consulta para um líder de pool elástico ou para um membro de pool elástico.
Na instância que está descarregando consultas, desative o descarregamento de consultas.
Por exemplo:
EXEC DBMS_PROXY_SQL.DISABLE_READ_ONLY_OFFLOAD
;
Consulte DISABLE_READ_ONLY_OFFLOAD Procedures para obter mais informações.
Tópico principal: Descarregar Consultas para Clones Atualizáveis do Membro
Descarregamento de Consulta de PL/SQL
Quando o descarregamento de consultas está ativado, as consultas são descarregadas para Clones Atualizáveis, mesmo que estejam incorporadas ao PL/SQL. O código PL/SQL pode ser armazenado em procedures, funções, pacotes ou blocos anônimos.
Por exemplo, você pode demonstrar que uma consulta está sendo descarregada para um Clone Atualizável ao ativar o descarregamento de consulta para um módulo e uma ação específicos. Neste exemplo, suponha que os dados do líder tenham sido atualizados e o Clone Atualizável ainda não tenha sido atualizado (portanto, os dados do Clone Atualizável estão desatualizados e diferentes). Neste exemplo, com valores diferentes no líder do pool elástico e no Clone Atualizável, você pode ver quando os dados estão vindo do líder ou do Clone Atualizável.
-
Ative o descarregamento de consulta e especifique as sessões elegíveis por nome do módulo e nome da ação. Por exemplo, '
mod1
', 'act1
'.DECLARE mod_values clob := to_clob('["mod1"]'); act_values clob := to_clob('["act1"]'); BEGIN
DBMS_PROXY_SQL.ENABLE_READ_ONLY_OFFLOAD
( module_name => mod_values, action_name => act_values); END; / -
Defina a função
f1
para testar o descarregamento da consulta.SQL> create or replace function f1 (n number) 2 return number 3 as 4 l_cnt number; 5 begin 6 select sum(c1) into l_cnt from u2.tab1; 7 return l_cnt; 8 end; 9 / Function created.
-
Execute a função
f1
. A consulta com a funçãof1
é executada no líder do pool elástico (ou em um membro do pool elástico que tenha a consulta de descarregamento ativada). Esta sessão é executada com nomes de módulo e ação não especificados que não correspondem aos especificados para descarregamento de consulta na Etapa 1.SQL> -- expected to fetch from Elastic Pool Leader and returns value 40 SQL> select f1(3) from dual; F1(3) ---------- 40 1 row selected.
-
Especifique o nome do módulo e o nome da ação da sessão para corresponder aos nomes especificados na Etapa 1. As consultas desta sessão agora estão qualificadas para serem descarregadas em um Clone Atualizável.
SQL> exec dbms_application_info.set_module('mod1', 'act1'); PL/SQL procedure successfully completed.
-
Execute a função
f1
novamente. Nesse caso, o nome do módulo e o nome da ação correspondem aos nomes especificados na Etapa 1. A consulta na funçãof1
é descarregada para um Clone Atualizável.SQL> -- Expected to fetch from Refreshable Clone and returns value 10 SQL> select f1(3) from dual; F1(3) ---------- 10 1 row selected.
-
Especifique os nomes de módulo e ação como algo diferente de
mod1
eact1
. As consultas desta sessão não são mais elegíveis para serem transferidas para um Clone Atualizável, pois os nomes do módulo e da ação não correspondem aos especificados na Etapa 1.SQL> exec dbms_application_info.set_module('random', 'random'); PL/SQL procedure successfully completed.
-
Execute a consulta com a função
f1
. Como o módulo e o nome da ação desta sessão não correspondem aos definidos na Etapa 1, esta consulta não é descarregada e é executada no líder do pool elástico.SQL> -- expected to fetch from Elastic Pool Leader and returns value 40 SQL> select f1(3) from dual; F1(3) ---------- 40 1 row selected.
Tópico principal: Descarregar Consultas para Clones Atualizáveis do Membro
Descarga de Consulta de um Job do Scheduler
Quando o descarregamento de consulta está ativado, as consultas de dentro de uma ação de job do Oracle Scheduler são descarregadas para Clones Atualizáveis. As consultas são descarregadas se o job for executado em primeiro plano ou em segundo plano.
Por exemplo, semelhante ao exemplo anterior para PL/SQL, você pode demonstrar que uma consulta está sendo descarregada para um Clone Atualizável ao ativar o descarregamento de consulta para um job do Oracle Scheduler. Neste exemplo, suponha que os dados do líder tenham sido atualizados e o Clone Atualizável ainda não tenha sido atualizado (portanto, os dados do Clone Atualizável estão desatualizados e diferentes). Neste exemplo, com valores diferentes no líder do pool elástico e no Clone Atualizável, você pode ver quando os dados estão vindo do líder ou do Clone Atualizável.
SQL> create or replace procedure sproc1 (n number)
2 as
3 l_cnt number;
4 begin
5 select sum(c1) into l_cnt from u2.tab1;
6 dbms_output.put_line('l_cnt is ' || l_cnt);
7 end;
8 /
Procedure created.
Offload Queries from Elastic Pool Leader to Member Refreshable Clones
SQL> create or replace procedure sproc1 (n number)
2 as
3 l_cnt number;
4 begin
5 select sum(c1) into l_cnt from u2.tab1;
6 dbms_output.put_line('l_cnt is ' || l_cnt);
7 end;
8 /
Procedure created.
SQL>
SQL> BEGIN
2 dbms_scheduler.create_job(job_name => 'PROXYTEST1',
3 job_type => 'PLSQL_BLOCK',
4 job_action => 'BEGIN sproc1(3); END;',
5 enabled => FALSE);
6 END;
7 /
PL/SQL procedure successfully completed.
SQL>
SQL> -- Job runs in the foreground in the current session
SQL> -- expected to fetch from Leader: 40
SQL> exec dbms_scheduler.RUN_JOB(job_name => 'PROXYTEST1', use_current_session => true);
l_cnt is 40
PL/SQL procedure successfully completed.
SQL>
SQL> exec dbms_proxy_sql.enable_read_only_offload;
PL/SQL procedure successfully completed.
SQL> show con_name
CON_NAME
------------------------------
CDB1_PDB1
SQL>
SQL> set serveroutput on
SQL> -- Job runs in the foreground in the current session
SQL> -- expected to fetch from Refreshable Clone: 10
SQL> exec dbms_scheduler.RUN_JOB(job_name => 'PROXYTEST1', use_current_session => true);
l_cnt is 10
PL/SQL procedure successfully completed.
SQL>
SQL> -- Job runs in the background and is expected to fetch from Refreshable Clone: 10
SQL> exec dbms_scheduler.RUN_JOB(job_name => 'PROXYTEST1', use_current_session => false);
PL/SQL procedure successfully completed.
Tópico principal: Descarregar Consultas para Clones Atualizáveis do Membro
Observações para Descarregar Consultas
Fornece observações adicionais para o recurso de descarregamento de consulta.
Observações para offload de consulta:
-
Adição ou Remoção de um Clone Atualizável: Quando um Clone Atualizável é adicionado como membro do pool elástico, pode haver um atraso de até quinze minutos para que a adição seja refletida no líder do pool elástico. Um Clone Atualizável recém-adicionado não é considerado como um destino para descargas de consulta até que o líder esteja ciente do membro do pool elástico recém-adicionado.
Da mesma forma, quando um Clone Atualizável é removido do pool elástico, pode haver um atraso de até quinze minutos para que a remoção seja refletida no líder do pool elástico. O Clone Atualizável removido é considerado como um destino para descargas de consulta até que o líder saiba que o membro foi removido do pool elástico.
-
Atualização de Clone Atualizável: Quando um Clone Atualizável está sendo atualizado, as consultas transferidas para o Clone Atualizável podem ser atrasadas.
-
Suporte a Pontos Finais Públicos e Privados: O offload de consulta é suportado para instâncias em um ponto final público e para instâncias em um ponto final privado.
-
Clone Atualizável Desconectado: Se um Clone Atualizável for desconectado, ele não será mais elegível como destino para descarregamento de consulta. Pode haver um atraso de até quinze minutos para que o líder do pool elástico detecte que um Clone Atualizável foi desconectado e pare de descarregar consultas para ele.
Para garantir que um Clone Atualizável permaneça disponível para descarregamento de consulta, ative as atualizações automáticas ou atualize periodicamente manualmente o Clone Atualizável.
Consulte Atualizar um Clone Atualizável no Autonomous Database para obter mais informações.
-
Nome do Módulo com Distinção entre Maiúsculas e Minúsculas e Nome da Ação: Quando você descarrega consultas de uma lista de sessões que você especifica por módulo ou nome da ação, o nome do módulo e o nome da ação definidos com
DBMS_APPLICATION_INFO
fazem distinção entre maiúsculas e minúsculas.DBMS_PROXY_SQL.ENABLE_READ_ONLY_OFFLOAD
adere a esse comportamento que faz distinção entre maiúsculas e minúsculas. Por exemplo, quando uma sessão tem um nome de módulo em letras minúsculas ou um nome de módulo com letras maiúsculas e minúsculas, o uso de maiúsculas e minúsculas deve corresponder aos valores de parâmetro quando você ativa o offload de consulta comDBMS_PROXY_SQL.ENABLE_READ_ONLY_OFFLOAD
e inclui os parâmetrosmodule_name
ouaction_name
.Você pode verificar o nome do módulo e o nome da ação da sessão atual usando
DBMS_APPLICATION_INFO.READ_MODULE
:set serveroutput on; declare l_mod varchar2(50); l_act varchar2(50); BEGIN DBMS_APPLICATION_INFO.READ_MODULE(l_mod, l_act); DBMS_OUTPUT.PUT_LINE('l_mod: ' || l_mod); DBMS_OUTPUT.PUT_LINE('l_act: ' || l_act); END; /
-
Caso de Uso Típico: Um caso de uso para descarregamento de consulta é permitir que o recurso durante o horário de pico tire a carga do Líder do Pool Elástico (ou do Membro do Pool Elástico em que o descarregamento de consulta está ativado). Durante o horário de silêncio, você pode desativar o descarregamento de consultas para executar operações de manutenção, como atualizar os Clones Atualizáveis.
Tópico principal: Descarregar Consultas para Clones Atualizáveis do Membro