Utilizza l'instradamento delle istruzioni efficiente abilitando ProxySQL su Autonomous Database

ProxySQL consente l'accesso unificato a più database autonomi instradando le istruzioni per DML e query ed elimina la necessità di consolidare fisicamente tutti i dati in un unico database.

Argomenti

Informazioni sull'instradamento efficiente delle istruzioni con ProxySQL su Autonomous Database

ProxySQL su Autonomous Database ti consente di utilizzare più istanze di Autonomous Database e semplifica l'accesso e l'analisi dei dati come se fossero memorizzati in un'unica posizione.

È possibile utilizzare ProxySQL quando è necessario utilizzare un'impostazione di grandi dimensioni che coinvolge più database autonomi. ProxySQL ti offre l'accesso unificato a database diversi e rimuove la necessità di spostare fisicamente i dati in un'unica posizione.

Quando si abilita ProxySQL, si designa un'istanza di Autonomous Database come istanza router e una o più istanze di Autonomous Database sono istanze di destinazione. L'istanza del router include una tabella di instradamento che determina il modo in cui un'istruzione viene distribuita (mappata) a una o più istanze di destinazione. Un'istanza di destinazione include una tabella di accettazione. La tabella di accettazione è simile alla tabella di instradamento e contiene voci che specificano che l'istanza accetta i reindirizzamenti delle istruzioni dal router.

A seconda del metodo di instradamento selezionato, le istruzioni vengono mappate automaticamente dall'istanza router a una o più istanze di destinazione. Un'applicazione si connette all'istanza del router ed viene eseguita sull'istanza del router e Autonomous Database reindirizza le istruzioni a una o più istanze di destinazione.

Di seguito sono riportati alcuni dei vantaggi derivanti dall'abilitazione di ProxySQL rispetto all'utilizzo di un singolo Autonomous Database di grandi dimensioni.

  • ProxySQL offre autonomia e indipendenza del database per operazioni come la gestione del ciclo di vita e le attività di amministrazione. Ad esempio, utilizzando ProxySQL, le operazioni del database, inclusi backup e ripristino, e funzioni come Autonomous Data Guard vengono gestite in modo indipendente in ogni istanza di Autonomous Database.

  • ProxySQL ti consente di gestire in modo efficiente database molto grandi dividendo i dati su più istanze di Autonomous Database.

Ci sono diversi termini da sapere quando si lavora con ProxySQL:

Istanza router: un'istanza del router viene designata quando si abilita ProxySQL. Una tabella di instradamento determina la modalità di distribuzione (mappata) di un'istruzione a una o più istanze di destinazione. A seconda del metodo di instradamento specificato, le istruzioni dell'istanza router vengono mappate automaticamente a una o più istanze di destinazione.

Istanza di destinazione: l'istanza di destinazione viene designata quando si crea un mapping sull'istanza del router. Viene aggiunta una tabella di accettazione in ogni istanza di destinazione.

Tabella di instradamento: una tabella di instradamento contiene voci di mapping di destinazione che specificano l'istanza a cui vengono instradati automaticamente i rendiconti.

Tabella di accettazione: una tabella di accettazione contiene voci che specificano che l'istanza accetta i reindirizzamenti dell'istruzione dal router.

Requisiti per utilizzare ProxySQL

Di seguito sono elencati i requisiti ProxySQL.

  • L'abilitazione di ProxySQL è supportata solo per le istanze di Autonomous Database che si trovano in un pool elastico. L'istanza router e tutte le istanze di destinazione devono essere membri dello stesso pool elastico.

  • L'istanza del router e tutte le istanze di destinazione devono trovarsi nella stessa area.

  • I metadati per gli oggetti instradati devono corrispondere sulle istanze router e di destinazione. È responsabilità del designer dell'applicazione che i metadati per gli oggetti presenti in un'istanza di destinazione siano presenti anche nell'istanza del router. Ad esempio, se nell'istanza di destinazione è presente una tabella denominata EMPLOYEES, nell'istanza del router deve essere presente anche una tabella con metadati corrispondenti denominati EMPLOYEES. La tabella nell'istanza del router non deve essere vuota (solo metadati).

Suggerimento per l'abilitazione di ProxySQL

Le istanze aggiunte come router e come destinazioni possono essere di qualsiasi tipo di carico di lavoro Autonomous Database. Se nella tabella di instradamento (mapping) sono presenti voci, le istruzioni sugli oggetti specificati in tali voci vengono instradate alle istanze di destinazione corrispondenti indipendentemente dal tipo di carico di lavoro della destinazione. Oracle consiglia a tutte le istanze di database theAutonomous di utilizzare il tipo di carico di lavoro Data Warehouse.

Instradamento automatico rendiconto con ProxySQL abilitato

Utilizzando ProxySQL è possibile distribuire le istruzioni tra le destinazioni utilizzando uno qualsiasi dei metodi di instradamento supportati.

Nota

Qualunque sia il metodo di instradamento (mapping) che si decide di utilizzare, è responsabilità di Application Schema Designer assicurarsi che i metadati per gli oggetti posizionati in un'istanza di destinazione siano disponibili anche nell'istanza del router. Ad esempio, se nell'istanza di destinazione è presente una tabella denominata EMPLOYEES, nell'istanza del router deve essere presente anche una tabella con metadati corrispondenti denominati EMPLOYEES. La tabella nell'istanza del router non deve essere vuota.
  • Instradamento a livello di schema: tutti gli oggetti di uno schema vengono mappati a una singola istanza di destinazione. È possibile eseguire il mapping di più schemi a una singola istanza di destinazione. Tuttavia, le istruzioni per uno schema non possono essere mappate su più istanze di destinazione, il che significa che lo stesso schema non può essere utilizzato sia per lo schema che per l'instradamento degli oggetti.

    Per specificare l'instradamento a livello di schema, chiamare la procedura DBMS_PROXY_SQL.ADD_MAPPING con il parametro object_name impostato sul valore "*".


    Segue la descrizione dell'immagine proxysql-schema.png
    Descrizione dell'illustrazione proxysql-schema.png

    In questo esempio, i metadati per gli oggetti nello schema A sono presenti sia nell'istanza di destinazione Autonomous Database 1 che nell'istanza del router e i metadati per gli oggetti nello schema B sono presenti sia nell'istanza di destinazione Autonomous Database 2 che nell'istanza del router e così via.

  • Instradamento a livello di oggetto: gli oggetti in uno schema vengono mappati su più istanze di destinazione.

    Per specificare l'instradamento a livello di oggetto, chiamare la procedura DBMS_PROXY_SQL.ADD_MAPPING con il parametro object_name impostato su un nome di tabella.


    Segue la descrizione dell'immagine proxysql-object.png
    Descrizione dell'illustrazione proxysql-object.png

    In questo esempio, i metadati per la tabella A sono presenti sia nella destinazione 1 che nell'istanza del router e i metadati per la tabella B sono presenti sia nella destinazione 2 che nell'istanza del router e così via.

  • Instradamento ibrido: gli oggetti di uno schema vengono instradati utilizzando una combinazione di instradamento a livello di schema e instradamento a livello di oggetto.


    Segue la descrizione dell'immagine proxysql-hybrid.png
    Descrizione dell'illustrazione proxysql-hybrid.png

    In questo esempio, i metadati per lo schema A sono presenti sia nell'istanza di destinazione di Autonomous Database 1 che nell'istanza del router e i metadati per la tabella B (nello schema B) sono presenti sia nell'istanza di destinazione di Autonomous Database 2 che nell'istanza del router e così via.

Mapping servizio con instradamento automatico rendiconto quando ProxySQL è abilitato

Quando la tabella di instradamento indica un mapping a un database di destinazione, lo stesso servizio connesso al database router viene utilizzato per l'accesso ai dati nel database di destinazione.

Ad esempio, se una sessione è connessa al servizio HIGH nell'istanza del router, anche un frammento di istruzione o istruzione instradato a un'istanza di destinazione utilizza il servizio HIGH. Analogamente, se una sessione è connessa al servizio MEDIUM nell'istanza del router, un'istruzione instradata a un'istanza di destinazione utilizza il servizio MEDIUM.

Se il servizio utilizzato per la connessione all'istanza router non è disponibile in un'istanza di destinazione, il frammento di istruzione o istruzione instradato all'istanza di destinazione utilizza il servizio MEDIUM (i servizi disponibili dipendono dal tipo di carico di lavoro di Autonomous Database).

Abilita instradamento rendiconto e Definisci mapping schema

In questa sezione viene descritto come impostare ProxySQL per l'instradamento automatico delle istruzioni da un router principale a una o più istanze di database di destinazione.

Abilita instradamento rendiconto e Definisci mapping oggetti da router a istanze di destinazione

Per impostare l'instradamento delle istruzioni, abilitare ProxySQL nell'istanza del router e definire lo schema o gli oggetti le cui istruzioni sono mappate (inviate) ai database di destinazione.

Di seguito sono riportati i prerequisiti per abilitare l'instradamento automatico delle istruzioni.

  • Creare l'istanza di Autonomous Database che si prevede di utilizzare per l'istanza del router o identificare un'istanza di Autonomous Database esistente come istanza del router.

  • Creare le istanze di destinazione o identificare le istanze di destinazione dalle istanze di Autonomous Database esistenti.

  • Assicurarsi che l'istanza del router e qualsiasi istanza di destinazione in cui si stanno reindirizzando le query dispongano di metadati corrispondenti per qualsiasi oggetto che si sta mappando dal router a una destinazione.

    Qualunque sia il metodo di instradamento (mapping) che si decide di utilizzare, è responsabilità di Application Schema Designer assicurarsi che i metadati per gli oggetti posizionati in un'istanza di destinazione siano disponibili anche nell'istanza del router. Ad esempio, se nell'istanza di destinazione è presente una tabella denominata EMPLOYEES, nell'istanza del router deve essere presente anche una tabella con metadati corrispondenti denominati EMPLOYEES. La tabella nell'istanza del router non deve essere vuota.

  • Dalle opzioni disponibili, determinare il tipo di instradamento dell'istruzione che si desidera utilizzare: Instradamento a livello di schema, Instradamento a livello di oggetto o Instradamento ibrido.

Per abilitare l'instradamento automatico delle istruzioni e aggiungere voci di mapping di destinazione alla tabella di instradamento, procedere come segue.

  1. In un'istanza di Autonomous Database eseguire DBMS_PROXY_SQL.ENABLE_ROUTING per abilitare l'instradamento automatico delle istruzioni.

    Ad esempio:

    BEGIN
       DBMS_PROXY_SQL.ENABLE_ROUTING;
    END;
    /

    L'istanza in cui si esegue DBMS_PROXY_SQL.ENABLE_ROUTING diventa l'istanza del router. Ciò consente l'instradamento automatico del rendiconto e crea la tabella di instradamento.

    Per ulteriori informazioni, vedere ENABLE_ROUTING Procedure.

  2. Eseguire DBMS_PROXY_SQL.ADD_MAPPING per definire il mapping dal router a una destinazione. In questo modo viene creata una voce nella tabella di instradamento che specifica l'istanza di destinazione a cui vengono instradate automaticamente le query.

    Esempio per abilitare l'instradamento a livello di oggetto:

    BEGIN
     DBMS_PROXY_SQL.ADD_MAPPING ( 
        object_owner   => 'DW_USER',
        object_name    => 'INVENTORY',
        database_ocid  => 'TARGET1_DATABASE_OCID');
    END;
    /

    Esempio per abilitare l'instradamento a livello di schema:

    BEGIN
     DBMS_PROXY_SQL.ADD_MAPPING ( 
        object_owner   => 'DW_USER',
        object_name    => '*',
        database_ocid  => 'TARGET2_DATABASE_OCID');
    END;
    /

    Utilizzare la query seguente per recuperare l'OCID del database:

    SELECT json_value(cloud_identity,'$.DATABASE_OCID') 
       FROM v$pdbs;
    

    Il parametro object_owner specifica il proprietario dell'oggetto.

    Il parametro object_name specifica l'oggetto.

    Il parametro database_ocid specifica l'OCID istanza di destinazione. Il valore del parametro database_ocid deve essere in maiuscolo. È possibile determinare l'OCID dell'istanza di destinazione connettendosi all'istanza di destinazione come ADMIN ed eseguendo la query seguente:

    SELECT json_value(cloud_identity, '$.DATABASE_OCID') FROM v$pdbs;

    Per ulteriori informazioni, vedere Ottieni dettagli tenancy.

    In questo modo viene creata una voce di instradamento nella tabella di instradamento e viene definito un mapping di oggetti a un'istanza di destinazione.

    Per ulteriori informazioni, vedere ADD_MAPPING Procedure.

  3. Eseguire DBMS_PROXY_SQL.ADD_MAPPING per aggiungere ulteriori mapping di destinazione, se necessario.

    Ad esempio:

    BEGIN
     DBMS_PROXY_SQL.ADD_MAPPING ( 
        object_owner   => 'DW_USER_1',
        object_name    => 'CUSTOMERS',
        database_ocid  => 'TARGET3_DATABASE_OCID');
    END;
    /

È possibile eseguire una query sulla vista DBA_PROXY_SQL_MAPPINGS per elencare i record nella tabella di instradamento. Per ulteriori informazioni, vedere DBA_PROXY_SQL_MAPPINGS View.

Accetta instradamento rendiconto su istanze di destinazione

È necessario accettare l'instradamento delle istruzioni in un'istanza di destinazione per consentire il mapping dall'istanza router.

Per consentire (accettare) i reindirizzamenti dell'istruzione dall'istanza router a un'istanza di destinazione, effettuare le operazioni riportate di seguito.

  1. Nell'istanza di destinazione eseguire DBMS_PROXY_SQL.ACCEPT_MAPPING.

    Ad esempio:

    BEGIN
     DBMS_PROXY_SQL.ACCEPT_MAPPING ( 
        object_owner          => 'DW_USER',
        router_database_ocid  => 'ROUTER_DATABASE_OCID'); 
     END;
    /

    object_owner è il proprietario per il quale la destinazione accetta l'instradamento delle istruzioni.

    router_database_ocid specifica l'OCID dell'istanza di Autonomous Database del router. Specifica l'istanza da cui la destinazione accetta le richieste di istruzioni reindirizzate in entrata.

    Il mapping di accettazione è uno per proprietario dell'oggetto, pertanto può essere richiesta una sola accettazione corrispondente a più mapping di oggetti nell'istanza del router.

    È possibile visualizzare l'istruzione DBMS_PROXY_SQL_ACCEPTED_MAPPINGS per elencare i record nella tabella di accettazione. Per ulteriori informazioni, vedere DBA_PROXY_SQL_ACCEPTED_MAPPINGS View.

    Per ulteriori informazioni, vedere ACCEPT_MAPPING Procedure.

  2. Se nel mapping del router sono specificate più destinazioni, eseguire DBMS_PROXY_SQL.ACCEPT_MAPPING su ogni destinazione.

    Per ulteriori informazioni, vedere ACCEPT_MAPPING Procedure.

Invia dichiarazioni tramite ProxySQL

Per sfruttare l'instradamento automatico delle istruzioni, è necessario connettersi e sottomettere le istruzioni all'istanza del router gestita da ProxySQL.

Quando si inviano query, incluse istruzioni DML, con ProxySQL abilitato, è necessario connettersi all'istanza del router per sfruttare l'instradamento automatico delle istruzioni.

Interrompi istruzioni instradamento a un'istanza di destinazione

Eseguire questi passi su un Autonomous Database di destinazione per impedire che accetti le istruzioni instradate dal router ProxySQL.

  1. Eseguire DBMS_PROXY_SQL.REJECT_MAPPING su un'istanza di destinazione per rifiutare l'instradamento dell'istruzione per il proprietario specificato.

    Ad esempio:

    BEGIN
     DBMS_PROXY_SQL.REJECT_MAPPING ( 
        object_owner          => 'DW_USER',
        router_database_ocid  => 'ROUTER_DATABASE_OCID');
     END;
    /

    Il parametro object_owner specifica il nome del proprietario.

    Il parametro router_database_ocid specifica l'OCID dell'istanza del router.

    L'istanza di Autonomous Database di destinazione in cui si esegue questa procedura non richiede più le richieste di instradamento dall'istanza router specificata per il proprietario dell'oggetto specificato.

  2. Eseguire DBMS_PROXY_SQL.REJECT_MAPPING sulle destinazioni aggiuntive in base alle esigenze.

Per ulteriori informazioni, vedere REJECT_MAPPING Procedure.

Rimuovi schema o mapping oggetto da istanza router

Fornisce i passi per rimuovere un mapping specifico dal database del router gestito da ProxySQL.

  1. È possibile utilizzare la procedura DBMS_PROXY_SQL.REMOVE_MAPPING per rimuovere una voce di mapping aggiunta in precedenza per l'oggetto specificato. Ad esempio:

    Esempio di tabella:

    BEGIN
     DBMS_PROXY_SQL.REMOVE_MAPPING ( 
        object_owner   => 'DW_USER',
        object_name    => 'INVENTORY');
     END;
    /
    In questo esempio la voce di mapping per la tabella INVENTORY viene rimossa dalla tabella di instradamento. Dopo aver eseguito questa procedura, le query sulla tabella INVENTORY non vengono instradate ad alcun Autonomous Database di destinazione.

    Esempio: con uno schema:

    BEGIN
     DBMS_PROXY_SQL.REMOVE_MAPPING ( 
        object_owner   => 'DW_USER',
        object_name    => '*');
     END;
    /
    In questo esempio la voce di mapping per lo schema DW_USER viene rimossa dalla tabella di instradamento. Dopo aver eseguito questa procedura, le query sullo schema DW_USER non vengono instradate ad alcun Autonomous Database di destinazione.

    Il parametro object_owner specifica il proprietario.

    Il parametro object_name specifica il nome della tabella.

    Per ulteriori informazioni, vedere REMOVE_MAPPING Procedure.

Disabilita instradamento rendiconto

Mostra i passi per l'instradamento automatico delle istruzioni disabilitando ProxySQL.

Eseguire DBMS_PROXY_SQL.DISABLE_ROUTING sull'istanza del router per disabilitare ProxySQL e per disabilitare l'instradamento automatico delle istruzioni alle istanze di destinazione.

Ad esempio:

BEGIN
 DBMS_PROXY_SQL.DISABLE_ROUTING;
END;
/

In questo modo, ProxySQL viene disabilitato e il routing automatico delle istruzioni sul router.

Quando si disabilita ProxySQL, le voci di mapping delle istruzioni nella tabella di instradamento nell'istanza del router non vengono eliminate. Ciò significa che se si riabilita ProxySQL e la tabella di instradamento contiene voci esistenti, l'instradamento automatico delle istruzioni instrada le istruzioni alle istanze di destinazione, come specificato nella tabella di instradamento. Utilizzare la procedura DBMS_PROXY_SQL.REMOVE_MAPPING se si desidera rimuovere le voci della tabella di routing esistenti prima di riabilitare ProxySQL.

Per ulteriori informazioni, vedere DISABLE_ROUTING Procedure.

Instradamento automatico rendiconto con note ProxySQL

Elenca le limitazioni e le note importanti sull'instradamento automatico delle istruzioni quando ProxySQL è abilitato.

  • L'utente ADMIN dispone dei privilegi per gestire ProxySQL. Se si desidera abilitare un altro utente, è necessario concedere i seguenti privilegi

    • privilegio EXECUTE sul pacchetto DBMS_PROXY_SQL.

    • privilegio READ sulla vista DBA_PROXY_SQL_MAPPINGS.

    • privilegio READ sulla vista DBA_PROXY_SQL_ACCEPTED_MAPPINGS.

  • L'instradamento automatico delle istruzioni riprende senza problemi quando:
    • L'istanza di destinazione di Autonomous Database non riesce in uno standby Autonomous Data Guard locale.

    • Esegui uno switchover per un'istanza di Autonomous Database di destinazione in uno standby Autonomous Data Guard locale.

    Tuttavia, l'instradamento automatico delle istruzioni si arresta dopo un failover o lo switchover in un database di standby Autonomous Data Guard tra più aree.