Crea tabelle federate utilizzando collegamenti ipertestuali tabella mediante la definizione dell'ambito
È possibile creare una tabella federata su un collegamento ipertestuale della tabella di Autonomous AI Database. Una tabella federata è una tabella esterna definita nei collegamenti ipertestuali delle tabelle. Consente l'aggregazione dei dati da più istanze di Autonomous AI Database.
Sebbene una tabella federata utilizzi lo stesso meccanismo di collegamento ipertestuale di una tabella esterna, il flusso di lavoro di creazione è diverso. Per le tabelle esterne, il Provider crea e condivide collegamenti ipertestuali tabella e ogni consumatore utilizza tali collegamenti ipertestuali per definire le tabelle esterne. Per le tabelle federate, il consumatore avvia la creazione della tabella e i collegamenti ipertestuali delle tabelle vengono creati automaticamente nel database del provider, a condizione che il consumatore rientri nell'ambito definito dal provider.
In qualità di Provider, è possibile definire gli ambiti nel database per concedere ai consumer il privilegio di creare automaticamente collegamenti ipertestuali tabella. I consumer autorizzati all'interno di questi ambiti possono creare tabelle federate ed eseguire query sui dati da più database di origine senza scambio manuale di collegamenti.
- Condivisione dati semplificata: i consumer ora possono avviare la creazione di una tabella esterna separatamente e creare collegamenti ipertestuali di tabella quando appartengono a un ambito autorizzato.
- Sicurezza avanzata: elimina i metodi di distribuzione dei collegamenti ipertestuali tabella (URL) non sicuri.
- Federazione dati: i consumer possono aggregare i dati di più database provider tramite tabelle federate.
Le sezioni riportate di seguito descrivono il flusso di lavoro dettagliato sul modo in cui i database autonomi del provider e del consumatore creano insieme tabelle federate definendo gli ambiti in un caso d'uso pratico di esempio. Questo flusso di lavoro e gli esempi di codice associati possono essere modificati e implementati in base alle proprie esigenze.
- Flusso di lavoro per creare tabelle federate
Il flusso di lavoro seguente ha responsabilità distinte per l'Autonomous AI Database provider e l'Autonomous AI Database consumer. - Risoluzione dei problemi relativi agli scenari
In questa sezione vengono fornite istruzioni sui tipi di errore che possono verificarsi e su come risolvere i problemi.
Workflow per la creazione di tabelle federate
Il flusso di lavoro seguente ha responsabilità distinte per il provider Autonomous AI Database e il consumer Autonomous AI Database.
Dal lato del provider, il primo passo è definire un ambito di creazione che specifichi quali database AI autonomi consumer sono autorizzati a creare in remoto collegamenti ipertestuali tabella nel provider. L'ambito può essere impostato a livello di schema o di oggetto.
Successivamente, il DBA del provider controlla chi può gestire gli ambiti chiamando DBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER per gli utenti selezionati. Questi utenti con privilegi possono utilizzare DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE, UPDATE_CREATION_SCOPE e UNREGISTER_CREATION_SCOPE per registrare, modificare o rimuovere gli ambiti per tabelle o schemi specifici e LIST_CREATION_SCOPES per rivedere la configurazione corrente. Quando un consumatore in seguito richiede un collegamento ipertestuale, il provider verifica che l'Autonomous AI Database del consumatore richiedente corrisponda all'ambito registrato prima di consentire la generazione degli URL, garantendo che solo i consumatori autorizzati possano creare collegamenti ipertestuali nei dati del provider.
Dal punto di vista del consumatore, il flusso di lavoro inizia una volta che il provider ha definito gli ambiti che includono il database dei consumatori. Il DBA consumer concede a utenti specifici il privilegio di creare tabelle federate sui dati del provider chiamando DBMS_DATA_ACCESS_ADMIN.GRANT_READ.
Un consumer può quindi chiamare DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE per creare collegamenti ipertestuali tabella nel database del provider per conto del consumer e la tabella federata risultante nel consumer può quindi eseguire query sui dati del producer come se si trattasse di una tabella esterna locale.
Quando l'accesso federato non è più necessario, il consumer esegue il cleanup richiamando DBMS_DATA_ACCESS.DROP_FEDERATED_TABLE, che rimuove l'oggetto tabella federata nel consumer lasciando intatti gli ambiti del provider.
ADMIN(Provider) concede il privilegio di registrazione dell'ambito al proprietario dei dati utilizzando la proceduraDBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER.BEGIN DBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER( username => 'DATA_OWNER', scope => 'MY$COMPARTMENT' ); END; /- Come
ADMIN, concedere privilegi di esecuzione all'utente proprietario dei dati (DATA_OWNER).grant execute on DBMS_DATA_ACCESS_SCOPE to DATA_OWNER; - Il proprietario dei dati registra l'ambito di creazione nello schema o nell'oggetto condiviso nell'Autonomous AI Database del provider utilizzando la procedura
DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE. Ciò autorizza i database AI autonomi del consumatore nello stesso compartimento a creare collegamenti ipertestuali di tabella in remoto.BEGIN DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE( schema_name => 'DATA_OWNER', schema_object_name => 'SALES_DATA', scope => 'MY$COMPARTMENT' ); END; / -
Il consumer
ADMINconcede il privilegio di lettura all'analista aziendale mediante la proceduraDBMS_DATA_ACCESS_ADMIN.GRANT_READ.Ciò garantisce che l'analista possa avviare la creazione di tabelle federate.
- Il consumer
ADMINconcede privilegi di esecuzione all'utente bi_analyst.grant execute on DBMS_DATA_ACCESS to bi_analyst; -
L'analista aziendale crea una tabella esterna federata in Autonomous AI Database consumer utilizzando la procedura
DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE. Questo genera automaticamente il collegamento ipertestuale Tabella se l'ambito corrisponde a un ambito in cui non è richiesto alcun intervento del provider.BEGIN DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE( table_name => 'DEPT_SALES_XT', remote_schema_name => 'SHARED_SCHEMA', remote_schema_object_name => 'SALES_DATA', db_ocids => '[{"region": "IAD", "db_ocid": "OCID1.AUTONOMOUSDATABASE.OC1.IAD.EXAMPLE123"}]' ); END; /Nota
L'OCID del database (db_ocid) deve essere in maiuscolo. - L'analista esegue una query sulla tabella esterna per l'analisi dei reparti.
SELECT * FROM DEPT_SALES_XT WHERE region = 'West';
Gli esempi di codice sopra riportati possono essere modificati e implementati in base alle proprie esigenze.
Per ulteriori informazioni sulle funzioni e sui parametri descritti sopra, vedere DBMS_DATA_ACCESS_SCOPE Package, DBMS_DATA_ACCESS_ADMIN Package e DBMS_DATA_ACCESS Package.
| Operation | Descrizione | Utente che esegue questa operazione |
|---|---|---|
| Definisci ambito creazione | Definisce i database a cui è consentito creare in remoto collegamenti ipertestuali tabella in un'istanza di Autonomous AI Database del provider. Per ulteriori informazioni, vedere Ambito creazione. | Provider |
| Concedi Registra |
Consente agli utenti di un'istanza di Autonomous AI Database del provider di registrare o aggiornare l'ambito. Per ulteriori informazioni, vedere Registro sovvenzioni. |
Provider |
| Ambito creazione registro |
Definisce quali oggetti di database possono avere collegamenti ipertestuali tabella creati in un ambito di autorizzazione specificato. Per ulteriori informazioni, vedere Registra ambito creazione. |
Provider |
| Aggiorna ambito creazione | Modifica l'ambito di creazione esistente. Per ulteriori informazioni, vedere Aggiorna ambito creazione. | Provider |
| Annulla registrazione ambito creazione | Rimuove le impostazioni create-scope registrate in precedenza per uno schema, un singolo oggetto o una lista di oggetti. Per ulteriori informazioni, vedere Annulla registrazione ambito creazione. | Provider |
| Recupera ambito creazione | Esegue query e recupera gli ambiti di creazione registrati per gli schemi o gli oggetti specificati. Per ulteriori informazioni, vedere Ambiti di creazione elenco. | Provider |
| Crea tabella federata | Crea una tabella federata. Per ulteriori informazioni, vedere Crea tabella federata. | Consumer |
| Concedi lettura | Concede privilegi di lettura a un utente consumer per schemi o oggetti remoti, abilitando la creazione di tabelle federate. Per ulteriori informazioni, vedere Concedi lettura. | Consumer |
| Revoca lettura | Revoca un privilegio di lettura concesso in precedenza per creare una tabella federata. Per ulteriori informazioni, vedere Revoca lettura. | Consumer |
| Elimina tabella federata | Rimuove le tabelle federate specificate dal database. Per ulteriori informazioni, vedere Elimina tabella federata. | Consumer |
- Ambito di creazione
Un ambito di creazione in un database di provider determina quali istanze di Autonomous AI Database consumer sono autorizzate a creare collegamenti ipertestuali tabella in remoto nel database di provider. - Concedi registro
IlADMIN(oPDB_DBA) nell'Autonomous AI Database del provider utilizza ilDBMS_DATA_ACCESS_ADMIN.GRANT_REGISTERper decidere quali utenti locali sono autorizzati a gestire gli ambiti di creazione. - Registra ambito creazione
Un provider chiamaDBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPEper registrare l'ambito consentito per tabelle specifiche o interi schemi per creare collegamenti ipertestuali tabella in tali oggetti. - Aggiorna ambito creazione
Se un provider deve modificare l'accesso, lo stesso utente o un altro utente autorizzato richiamaUPDATE_CREATION_SCOPEper ampliare, limitare o modificare in altro modo i database AI autonomi consumer in grado di creare collegamenti ipertestuali per determinati oggetti dello schema. - Annulla registrazione ambito creazione
Quando un provider desidera revocare completamente la funzionalità di creazione remota (per una tabella, una lista di tabelle o uno schema), il provider chiamaUNREGISTER_CREATION_SCOPE. Ciò rimuove l'ambito registrato e impedisce la creazione di nuovi collegamenti ipertestuali tabella per tali oggetti da parte dei database consumer. - Recupera ambiti di creazione
In qualsiasi momento, un utente autorizzato può chiamareLIST_CREATION_SCOPESper recuperare le definizioni di ambito correnti. - Concedi lettura
Nell'Autonomous AI Database consumer,ADMIN(oPDB_DBA) utilizzaDBMS_DATA_ACCESS_ADMIN.GRANT_READper concedere a utenti specifici il diritto di creare tabelle federate in schemi o oggetti del provider remoto. - Revoca lettura
La proceduraREVOKE_READrimuove il privilegio di un utente per creare tabelle federate su uno schema remoto o un oggetto schema specificato nel database del provider. - Crea tabella federata
Un utente consumer a cui sono stati concessi privilegi di lettura richiamaDBMS_DATA_ACCESS.CREATE_FEDERATED_TABLEper creare una tabella federata nella tabella o nella vista di ambito del provider. - Elimina tabella federata
Quando l'accesso federato non è più necessario, l'utente consumer chiamaDBMS_DATA_ACCESS.DROP_FEDERATED_TABLEper rimuovere la tabella federata.
Ambito creazione
Un ambito di creazione in un database di provider determina quali istanze di Autonomous AI Database consumer sono autorizzate a creare collegamenti ipertestuali tabella in remoto nel database di provider.
- Basato sulla tenancy (
MY$TENANCY): qualsiasi database nella stessa tenancy del database del provider. - Basato sul compartimento (
MY$COMPARTMENT): qualsiasi database nello stesso compartimento del database provider. - Livello oggetto: tabelle o viste specifiche all'interno di uno schema.
- Livello schema: tutti gli oggetti all'interno di uno schema specifico.
È possibile gestire gli ambiti di creazione utilizzando il pacchetto DBMS_DATA_ACCESS_SCOPE, che fornisce procedure per la registrazione, l'annullamento della registrazione, l'aggiornamento e il recupero degli ambiti. Per ulteriori informazioni, vedere DBMS_DATA_ACCESS_SCOPE.
Argomento padre: Flusso di lavoro per creare tabelle federate
Concedi Registra
ADMIN (o PDB_DBA) nell'Autonomous AI Database del provider utilizza il comando DBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER per decidere quali utenti locali sono autorizzati a gestire gli ambiti di creazione.
Solo questi utenti con privilegi possono registrare, aggiornare o annullare la registrazione degli ambiti, impedendo l'esposizione incontrollata delle tabelle provider.
Esempio
BEGIN
DBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER(
username => 'ANALYTICS_ADMIN',
scope => 'MY$COMPARTMENT'
);
END;
/L'esempio precedente concede all'utente ANALYTICS_ADMIN l'autorizzazione per registrare i data set nell'ambito MY$COMPARTMENT.
Per informazioni sulla sintassi, vedere GRANT_REGISTER.
Argomento padre: Flusso di lavoro per creare tabelle federate
Ambito creazione registro
Un provider chiama DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE per registrare l'ambito consentito per tabelle specifiche o interi schemi per creare collegamenti ipertestuali tabella in tali oggetti.
BEGIN
DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_name => 'NULL',
scope => 'MY$COMPARTMENT'
);
END;
/Questo esempio registra un ambito di accesso ai dati a livello di schema per lo schema ANALYTICS, associandolo al compartimento MY$COMPARTMENT.
Esempio: Registra ambito a livello di oggetto
BEGIN
DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_name => 'SALES_DATA',
scope => 'MY$TENANCY'
);
END;
/Questo esempio registra un ambito di accesso ai dati più mirato per un oggetto specifico SALES_DATA all'interno dello schema ANALYTICS, collegandolo alla tenancy MY$TENANCY. A differenza della versione a livello di schema, schema_object_name limita l'applicazione solo a questa tabella, consentendo un controllo granulare sulle autorizzazioni di creazione.
BEGIN
DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_list => '["SALES_DATA", "CUSTOMER_DATA", "PRODUCT_DATA"]',
scope => 'MY$COMPARTMENT'
);
END;
/Questa procedura associa gli oggetti schema elencati, ovvero SALES_DATA, CUSTOMER_DATA e PRODUCT_DATA, all'ambito MY$COMPARTMENT, limitandone la creazione o l'accesso alle entità all'interno di tale compartimento.
Per informazioni sulla sintassi, vedere Registra ambito di creazione.
Argomento padre: Flusso di lavoro per creare tabelle federate
Aggiorna ambito creazione
Se un provider deve modificare l'accesso, lo stesso utente o un altro utente autorizzato richiama UPDATE_CREATION_SCOPE per ampliare, limitare o modificare in altro modo i database AI autonomi consumer in grado di creare collegamenti ipertestuali per determinati oggetti schema.
BEGIN
DBMS_DATA_ACCESS_SCOPE.UPDATE_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_name => 'SALES_DATA',
scope => 'MY$COMPARTMENT'
);
END;
/Questo esempio aggiorna l'ambito di creazione per la tabella SALES_DATA nello schema ANALYTICS in MY$COMPARTMENT.
Per informazioni sulla sintassi, vedere Aggiorna ambito di creazione.
Argomento padre: Flusso di lavoro per creare tabelle federate
Annulla registrazione ambito creazione
Quando un provider desidera revocare completamente la funzionalità di creazione remota (per una tabella, una lista di tabelle o uno schema), il provider chiama UNREGISTER_CREATION_SCOPE. Ciò rimuove l'ambito registrato e impedisce la creazione di nuovi collegamenti ipertestuali tabella per tali oggetti da parte dei database consumer.
BEGIN
DBMS_DATA_ACCESS_SCOPE.UNREGISTER_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_name => 'SALES_DATA'
);
END;
/Questo blocco di esempio rimuove un ambito di creazione registrato in precedenza per SALES_DATA nello schema ANALYTICS, in modo che i nuovi oggetti creati con tale ambito non siano più regolati dall'accesso ai dati che controlla l'ambito applicato.
Per riferimento alla sintassi, vedere Annulla registrazione ambito creazione.
Argomento padre: Flusso di lavoro per creare tabelle federate
Recupera ambiti di creazione
In qualsiasi momento, un utente autorizzato può chiamare LIST_CREATION_SCOPES per recuperare le definizioni di ambito correnti.
DECLARE
l_result CLOB;
BEGIN
DBMS_DATA_ACCESS_SCOPE.LIST_CREATION_SCOPES(
schema_name => 'ANALYTICS',
result => l_result
);
DBMS_OUTPUT.PUT_LINE(l_result);
END;
/Per riferimento alla sintassi, vedere Recupera ambito creazione.
Argomento padre: Flusso di lavoro per creare tabelle federate
Concedi lettura
Nell'Autonomous AI Database consumer, ADMIN (o PDB_DBA) utilizza DBMS_DATA_ACCESS_ADMIN.GRANT_READ per concedere a utenti specifici il diritto di creare tabelle federate in schemi o oggetti del provider remoto.
Esempio: concessione dell'accesso a un oggetto remoto specifico
BEGIN
DBMS_DATA_ACCESS_ADMIN.GRANT_READ(
username => 'BI_ANALYST',
remote_schema_name => 'ANALYTICS',
remote_schema_object_name => 'SALES_DATA'
);
END;
/Questo esempio concede all'utente BI_ANALYST l'accesso in lettura all'oggetto SALES_DATA remoto specifico nello schema ANALYTICS di un provider di dati esterno.
Per riferimento alla sintassi, vedere Concedi lettura.
Argomento padre: Flusso di lavoro per creare tabelle federate
Revoca lettura
La procedura REVOKE_READ rimuove il privilegio di un utente per creare tabelle federate su uno schema remoto o un oggetto schema specificato nel database del provider.
Se si omette il nome dell'oggetto remoto, viene revocato l'accesso alla tabella federata dell'utente per tutti gli oggetti nello schema remoto specificato.
Esempio
BEGIN
DBMS_DATA_ACCESS_ADMIN.REVOKE_READ(
username => 'BI_ANALYST',
remote_schema_name => 'ANALYTICS',
remote_schema_object_name => 'SALES_DATA'
);
END;
/Per riferimento alla sintassi, vedere Revoca lettura.
Argomento padre: Flusso di lavoro per creare tabelle federate
Crea tabella federata
Un utente consumer a cui sono stati concessi i privilegi di lettura richiama DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE per creare una tabella federata nella tabella o nella vista di ambito del provider.
La procedura utilizza gli OCID del database e le informazioni sull'area per stabilire i collegamenti ipertestuali delle tabelle in modo che il consumer possa eseguire query sui dati remoti come se si trattasse di una tabella esterna locale.
Requisiti indispensabili
- All'utente devono essere concessi i privilegi di lettura mediante la procedura
GRANT_READ. - L'utente deve esistere sia nei database consumer che nei database provider con privilegi richiesti.
- Il database consumer deve appartenere all'ambito di creazione del provider.
- Il provider deve avere un ambito di creazione registrato per gli oggetti di destinazione.
- Connettività di rete stabilita tra database consumer e provider.
Esempio: provider singolo
BEGIN
DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE(
table_name => 'SALES_FED',
remote_schema_name => 'ANALYTICS',
remote_schema_object_name => 'SALES_DATA',
db_ocids => '[{"region": "IAD", "db_ocid": "OCID1.AUTONOMOUSDATABASE.OC1.IAD.EXAMPLE123"}]'
);
END;
/Nell'esempio precedente, un consumer chiama DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE per creare una tabella federata locale che si collega alla tabella o alla vista di un provider remoto (ad esempio, SALES_DATA nello schema ANALYTICS), utilizzando JSON db_ocids per specificare il database del provider OCIDs e le aree per eseguire query senza interruzioni come se fossero locali.
SELECT
REGION,
PRODUCT_ID,
SUM(SALES_AMOUNT) as total_sales,
COUNT(*) as transaction_count
FROM SALES_FED
GROUP BY REGION, PRODUCT_ID
ORDER BY total_sales DESC;Per riferimento alla sintassi, vedere Crea tabella federata.
Argomento padre: Flusso di lavoro per creare tabelle federate
Elimina tabella federata
Quando l'accesso federato non è più necessario, l'utente consumer chiama DBMS_DATA_ACCESS.DROP_FEDERATED_TABLE per rimuovere la tabella federata.
Questa procedura pulisce l'oggetto lato consumer e termina in modo efficace quel particolare percorso di accesso federato, mentre gli ambiti e i privilegi del provider di base rimangono sotto il controllo del provider.
BEGIN
DBMS_DATA_ACCESS.DROP_FEDERATED_TABLE(
table_name => 'SALES_FED'
);
END;
/Nell'esempio precedente viene eliminata la tabella SALES_FED.
Per riferimento alla sintassi, vedere Elimina tabella federata.
Argomento padre: Flusso di lavoro per creare tabelle federate
Risoluzione dei problemi relativi agli scenari
In questa sezione vengono fornite istruzioni sui tipi di errore che possono verificarsi e su come risolvere i problemi.
-
Database consumer non incluso nell'ambito
Problema: il consumer riceve un errore di autorizzazione durante il tentativo di creare tabelle federate.
Risoluzione
- Verificare che l'ID del database consumer corrisponda ai criteri di ambito del provider.
- Verificare che all'utente siano stati concessi i privilegi di lettura mediante la procedura
GRANT_READ. - Il provider di controllo ha registrato l'ambito di creazione appropriato utilizzando la procedura
REGISTER_CREATION_SCOPE. - Verifica la connettività di rete tra broker consumer e provider.
- Confermare lo stato di registrazione del database in OCI Console.
-
Creazione tabella federata non riuscita
Problema: la procedura
CREATE_FEDERATED_TABLEnon riesce nonostante i prerequisiti siano stati soddisfatti.Risoluzione- Verificare che l'utente esista sia nei database consumer che nei database provider.
- Verificare che l'utente disponga della proprietà dell'oggetto o del privilegio
GRANT OPTIONsugli oggetti remoti. - Controllare che lo schema remoto e i nomi degli oggetti siano corretti (con distinzione tra maiuscole e minuscole).
- Verificare che il file JSON
db_ocidscontenga codici area e OCID database validi. - Assicurarsi che l'ambito del provider sia abilitato e contenga il database dei consumatori.
- Esaminare i log di comunicazione del broker per individuare eventuali errori.
-
Errori di autorizzazione
Problema: gli utenti non possono registrare gli ambiti o accedere alle tabelle federate.
Risoluzione
- Verificare che all'utente sia stato concesso il privilegio
REGISTERutilizzando la proceduraGRANT_REGISTER(lato provider). - Verificare che all'utente sia stato concesso il privilegio
READutilizzando il comandoGRANT_READ(lato consumer). - Per le operazioni a livello di oggetto, confermare che l'utente è proprietario dell'oggetto o dispone del privilegio di opzione
GRANT. - Per le operazioni a livello di schema, verificare che l'utente sia
ADMINo che disponga del ruoloPDB_DBA. - Controllare la cronologia di revoca dei privilegi per assicurarsi che i privilegi non siano stati revocati in modo esplicito.
- Verificare che all'utente sia stato concesso il privilegio