Scarica query nelle copie aggiornabili dei membri
Quando si dispone di carichi di lavoro di lettura pesanti, in cui una quantità relativamente piccola di dati viene scansionata da più query, è possibile scaricare query (letture) da un leader del pool elastico o da un membro del pool elastico a copie aggiornabili.
- Informazioni sull'offload delle query
Fornisce informazioni sull'utilizzo dell'offload delle query con un pool elastico e descrive le funzioni di offload delle query. - Abilita riduzione carico query
Descrive come abilitare l'offload delle query per un leader del pool elastico o per un membro del pool elastico. - Disabilita scaricamento query
Descrive come disabilitare l'offload query per un leader del pool elastico o per un membro del pool elastico. - Offload delle query da PL/SQL
Quando l'offload delle query è abilitato, le query vengono scaricate nelle copie aggiornabili anche se sono incorporate in PL/SQL. PL/SQL può essere costituito da stored procedure, funzioni, package o blocchi anonimi. - Offload query da un job scheduler
Quando l'offload query è abilitato, le query da un'azione job di Oracle Scheduler vengono scaricate in copie aggiornabili. Le query vengono scaricate se il job viene eseguito in primo piano o in background. - Note per l'offload delle query
Fornisce note aggiuntive per la funzione di offload delle query.
Argomento padre: Usa e gestisci pool elastici su Autonomous Database
Informazioni sull'offload delle query
Fornisce informazioni sull'uso dell'offload delle query con un pool elastico e descrive le funzioni di offload delle query.
L'offload delle query del pool elastico offre vantaggi in termini di prestazioni consentendo a una o più copie aggiornabili di gestire le query per un leader del pool elastico o per un membro del pool elastico. Questa funzione consente inoltre di aggiungere copie aggiornabili per soddisfare l'aumento della domanda di query (lettura). Le query di riduzione del carico consentono all'applicazione di ridimensionarsi orizzontalmente, dove è possibile aggiungere copie aggiornabili per mantenere le prestazioni complessive del sistema in base alle esigenze per soddisfare il volume delle richieste di query.
Quando l'offload delle query è abilitato, le query vengono sottomesse al leader del pool elastico o a un membro del pool elastico e una o più copie aggiornabili disponibili diventano candidati per l'offload delle query. Inoltre, quando vengono aggiunte altre copie aggiornabili, l'offload delle query viene regolato in modo dinamico per utilizzare le nuove risorse.
Un caso d'uso per l'offload delle query è quello di abilitare la funzione durante le ore di punta per rimuovere il carico dal leader del pool elastico o da un membro del pool elastico. Durante le ore di inattività, è possibile disabilitare l'offload delle query per eseguire operazioni di manutenzione, ad esempio l'aggiornamento delle copie aggiornabili.
Per impostazione predefinita, l'offload delle query considera le query di qualsiasi sessione. In alternativa, è possibile scaricare le query da una lista di sessioni specificate in base al nome del modulo o dell'azione.
La figura seguente mostra l'offload delle query dal leader del pool elastico.
La figura seguente mostra l'offload delle query da un membro del pool elastico.
I dati delle copie aggiornabili sono aggiornati in base all'ora dell'ultimo aggiornamento per ogni copia aggiornabile. Ciò significa che quando l'offload delle query è abilitato, è possibile eseguire tutte le operazioni DDL, DML e PL/SQL sul leader del pool elastico o sul membro del pool elastico che sta scaricando le query. Quindi, dopo l'aggiornamento di una copia aggiornabile, le modifiche vengono applicate alla copia aggiornabile.
Per ulteriori informazioni, vedere Usa copie aggiornabili con Autonomous Database.
Funzioni di riduzione del carico delle query
-
Aggiunta dinamica: le copie aggiornabili possono essere aggiunte come membri del pool elastico in qualsiasi momento. L'offload delle query viene regolato in modo dinamico per utilizzare nuovi membri.
-
Rimozione dinamica: le copie aggiornabili possono essere rimosse come membri del pool elastico in qualsiasi momento. L'offload delle query viene regolato in modo dinamico per interrompere l'offload delle query in una copia aggiornabile rimossa dal pool elastico.
-
Offload persistente basato su sessione: l'offload delle query è persistente all'interno di una sessione. Ciò significa che se una query in una sessione è stata scaricata in una particolare copia aggiornabile, l'offload delle query utilizza la stessa copia aggiornabile per scaricare le query successive nella stessa sessione.
-
Mapping servizio uno-a-uno: esiste un mapping uno-a-uno tra il servizio utilizzato nel leader del pool elastico o il membro del pool elastico dalla query originale e il servizio utilizzato in una copia aggiornabile per qualsiasi query scaricata. Ad esempio, se una sessione è connessa al servizio MEDIUM, l'offload delle query per tale sessione utilizza anche il servizio MEDIUM sulla copia aggiornabile.
-
Determinare se la sessione è stata scaricata: utilizzando una query
SYS_CONTEXT
è possibile determinare se una sessione viene eseguita sul leader o sul membro del pool elastico oppure viene scaricata in una copia aggiornabile. -
Offload query da PL/SQL: le query vengono scaricate in una copia aggiornabile anche se sono incorporate in PL/SQL. PL/SQL può essere costituito da stored procedure, funzioni, package o blocchi anonimi.
-
Job Offload query da scheduler: le query all'interno di un job di Oracle Scheduler vengono scaricate. Le query dei job di Oracle Scheduler vengono scaricate se il job viene eseguito in primo piano o in background.
DBA_PROXY_SQL Viste
Utilizzare le viste DBA_PROXY_SQL
DBA_PROXY_SQL_ACTIONS
e DBA_PROXY_SQL_MODULES
per visualizzare la lista dei moduli o delle azioni configurati per l'offload delle query. È necessario eseguire una query su queste viste da una sessione non abilitata per l'offload delle query.
Argomento padre: Offload delle query sulle copie aggiornabili dei membri
Abilita scarico query
Descrive come abilitare l'offload delle query per un leader del pool elastico o per un membro del pool elastico.
Di seguito sono riportati i requisiti per abilitare l'offload delle query.
-
È possibile abilitare l'offload delle query per un leader del pool elastico o per un membro del pool elastico senza copie aggiornabili. Dopo aver abilitato l'offload delle query, è possibile aggiungere copie aggiornabili e la funzione di offload delle query si adatta in modo dinamico per utilizzare le copie aggiornabili.
-
Una copia aggiornabile candidata per l'offload della query deve:
-
Avere il leader del pool elastico come database di origine e trovarsi nella stessa area del leader del pool elastico.
o
Avere un membro del pool elastico come database di origine e trovarsi nella stessa area del membro del pool elastico.
-
Essere un membro del pool elastico.
-
Per abilitare l'offload delle query:
Quando l'offload delle query è abilitato per una sessione, è possibile trovare il nome della copia aggiornabile in cui vengono scaricate le query. Ad esempio, dalla sessione eseguire questa query:
SELECT sys_context('userenv', 'con_name') FROM DUAL;
Se le query non vengono scaricate in una copia aggiornabile, questa query mostra il nome del leader del pool elastico (o del membro del pool elastico che non è una copia aggiornabile).
Per ulteriori informazioni, vedere SYS_CONTEXT.
Per ulteriori informazioni, vedere ENABLE_READ_ONLY_OFFLOAD Procedure.
- Abilita riduzione carico query per moduli o azioni denominati
Descrive come abilitare l'offload delle query per le sessioni con moduli o azioni denominati.
Argomento padre: Offload delle query sulle copie aggiornabili dei membri
Abilita riduzione carico query per moduli o azioni denominati
Descrive come abilitare l'offload delle query per le sessioni con moduli o azioni denominati.
Per abilitare l'offload delle query per sessioni specifiche in base al nome del modulo o al nome dell'azione:
Quando l'offload delle query è abilitato per una sessione, dalla sessione è possibile trovare il nome della copia aggiornabile in cui vengono scaricate le query. Ad esempio:
SELECT sys_context('userenv', 'con_name') FROM DUAL;
Se le query non vengono scaricate in una copia aggiornabile, questa query mostra il nome del leader del pool elastico (o del membro del pool elastico che non è una copia aggiornabile).
Per ulteriori informazioni, vedere SYS_CONTEXT.
Nelle viste DBA_PROXY_SQL_ACTIONS
e DBA_PROXY_SQL_MODULES
viene visualizzata la lista dei moduli o delle azioni configurati per l'offload delle query. È necessario eseguire una query su queste viste da una sessione non abilitata per l'offload delle query. Per ulteriori informazioni, vedere Viste DBA_PROXY_SQL.
Per ulteriori informazioni, vedere ENABLE_READ_ONLY_OFFLOAD Procedure.
Argomento padre: Abilita riduzione carico query
Disabilita scarico query
Descrive come disabilitare l'offload delle query per un leader del pool elastico o per un membro del pool elastico.
Nell'istanza che sta scaricando le query, disabilitare l'offload delle query.
Ad esempio:
EXEC DBMS_PROXY_SQL.DISABLE_READ_ONLY_OFFLOAD
;
Per ulteriori informazioni, vedere DISABLE_READ_ONLY_OFFLOAD Procedure.
Argomento padre: Offload delle query sulle copie aggiornabili dei membri
Offload query da PL/SQL
Quando l'offload delle query è abilitato, le query vengono scaricate nelle copie aggiornabili anche se sono incorporate in PL/SQL. PL/SQL può essere costituito da stored procedure, funzioni, package o blocchi anonimi.
Ad esempio, è possibile dimostrare l'offload di una query in una copia aggiornabile quando si abilita l'offload delle query per un modulo e un'azione specifici. In questo esempio, si supponga che i dati del leader siano stati aggiornati e che la copia aggiornabile non sia stata ancora aggiornata (in modo che i dati della copia aggiornabile siano obsoleti e diversi). In questo esempio, con valori diversi sul leader del pool elastico e sulla copia aggiornabile, è possibile vedere quando i dati provengono dal leader o dalla copia aggiornabile.
-
Abilita l'offload della query e specifica le sessioni idonee in base al nome del modulo e al nome dell'azione. Ad esempio, '
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; / -
Definire la funzione
f1
per eseguire il test dell'offload della query.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.
-
Eseguire la funzione
f1
. La query con la funzionef1
viene eseguita sul leader del pool elastico (o su un membro del pool elastico per cui è abilitata la query di scarico). Questa sessione viene eseguita con i nomi di modulo e azione non specificati che non corrispondono a quelli specificati per l'offload della query nel passo 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.
-
Specificare il nome del modulo e il nome dell'azione affinché la sessione corrisponda ai nomi specificati nel passo 1. Le query di questa sessione sono ora idonee per essere scaricate in una copia aggiornabile.
SQL> exec dbms_application_info.set_module('mod1', 'act1'); PL/SQL procedure successfully completed.
-
Eseguire nuovamente la funzione
f1
. In questo caso, il nome del modulo e il nome dell'azione corrispondono ai nomi specificati nel Passo 1. La query nella funzionef1
viene scaricata in una copia aggiornabile.SQL> -- Expected to fetch from Refreshable Clone and returns value 10 SQL> select f1(3) from dual; F1(3) ---------- 10 1 row selected.
-
Specificare i nomi dei moduli e delle azioni come qualcosa di diverso da
mod1
eact1
. Le query di questa sessione non sono più idonee per essere scaricate in una copia aggiornabile, poiché i nomi dei moduli e delle azioni non corrispondono a quelli specificati nel Passo 1.SQL> exec dbms_application_info.set_module('random', 'random'); PL/SQL procedure successfully completed.
-
Eseguire la query con la funzione
f1
. Poiché il modulo e il nome dell'azione per questa sessione non corrispondono a quelli impostati nel Passo 1, questa query non viene scaricata e viene eseguita sul leader del pool elastico.SQL> -- expected to fetch from Elastic Pool Leader and returns value 40 SQL> select f1(3) from dual; F1(3) ---------- 40 1 row selected.
Argomento padre: Offload delle query sulle copie aggiornabili dei membri
Offload query da un job scheduler
Quando l'offload delle query è abilitato, le query dall'interno di un'azione del job di Oracle Scheduler vengono scaricate in copie aggiornabili. Le query vengono scaricate se il job viene eseguito in primo piano o in background.
Ad esempio, come nell'esempio precedente per PL/SQL, è possibile dimostrare che una query viene scaricata in una copia aggiornabile quando si abilita l'offload delle query per un job Oracle Scheduler. In questo esempio, si supponga che i dati del leader siano stati aggiornati e che la copia aggiornabile non sia stata ancora aggiornata (in modo che i dati della copia aggiornabile siano obsoleti e diversi). In questo esempio, con valori diversi sul leader del pool elastico e sulla copia aggiornabile, è possibile vedere quando i dati provengono dal leader o dalla copia aggiornabile.
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.
Argomento padre: Offload delle query sulle copie aggiornabili dei membri
Note per le query di scarico
Fornisce note aggiuntive per la funzione di riduzione del carico delle query.
Note per l'offload delle query:
-
Aggiunta o rimozione di una copia aggiornabile: quando si aggiunge una copia aggiornabile come membro del pool elastico, può verificarsi un ritardo fino a quindici minuti affinché l'aggiunta si rifletta nel leader del pool elastico. Una copia aggiornabile appena aggiunta non viene considerata come destinazione per gli offload delle query finché il leader non viene a conoscenza del membro del pool elastico appena aggiunto.
Allo stesso modo, quando un clone aggiornabile viene rimosso dal pool elastico, può verificarsi un ritardo di quindici minuti affinché la rimozione si rifletta nel leader del pool elastico. La copia aggiornabile rimossa viene considerata come una destinazione per gli offload delle query finché il leader non sa che il membro è stato rimosso dal pool elastico.
-
Aggiornamento della copia aggiornabile: quando si aggiorna una copia aggiornabile, è possibile che le query scaricate nella copia aggiornabile vengano ritardate.
-
Supporto endpoint pubblico e privato: l'offload delle query è supportato per le istanze in un endpoint pubblico e per le istanze in un endpoint privato.
-
Copia aggiornabile disconnessa: se una copia aggiornabile viene disconnessa, non è più idonea come destinazione per l'offload delle query. Può verificarsi un ritardo fino a quindici minuti affinché il leader del pool elastico rilevi che una copia aggiornabile è disconnessa e interrompa l'offload delle query su di essa.
Per assicurarsi che una copia aggiornabile rimanga disponibile per l'offload delle query, abilitare gli aggiornamenti automatici o aggiornare periodicamente manualmente la copia aggiornabile.
Per ulteriori informazioni, vedere Aggiorna una copia aggiornabile in Autonomous Database.
-
Nome modulo con distinzione tra maiuscole e minuscole e Nome azione: quando si scaricano le query da una lista di sessioni specificate in base al nome del modulo o dell'azione, il nome del modulo e il nome dell'azione impostati con
DBMS_APPLICATION_INFO
fanno distinzione tra maiuscole e minuscole.DBMS_PROXY_SQL.ENABLE_READ_ONLY_OFFLOAD
rispetta questo comportamento case sensitive. Ad esempio, quando una sessione ha un nome di modulo minuscolo o un nome di modulo con maiuscole e minuscole, il caso deve corrispondere nei valori dei parametri quando si abilita l'offload delle query conDBMS_PROXY_SQL.ENABLE_READ_ONLY_OFFLOAD
e si includono i parametrimodule_name
oaction_name
.È possibile controllare il nome del modulo e il nome dell'azione per la sessione corrente utilizzando
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 d'uso tipico: un caso d'uso per l'offload delle query è quello di abilitare la funzione durante le ore di punta per rimuovere il carico da Elastic Pool Leader (o dal membro Elastic Pool in cui è abilitato l'offload delle query). Durante le ore di inattività, è possibile disabilitare l'offload delle query per eseguire operazioni di manutenzione, ad esempio l'aggiornamento delle copie aggiornabili.
Argomento padre: Offload delle query sulle copie aggiornabili dei membri