Creación de tablas federadas mediante hiperenlaces de tablas mediante la definición de ámbito

Puede crear una tabla federada a través de un hiperenlace de tabla de base de datos de IA autónoma. Una tabla federada es una tabla externa definida en los hipervínculos de tabla. Permite la agregación de datos de varias instancias de bases de datos de IA autónomas.

Aunque una tabla federada utiliza el mismo mecanismo de hiperenlace que una tabla externa, el flujo de trabajo de creación es diferente. Para las tablas externas, el proveedor crea y comparte hipervínculos de tabla, y cada consumidor utiliza esos hipervínculos para definir tablas externas. Para las tablas federadas, el consumidor inicia la creación de la tabla y los hipervínculos de tabla se crean automáticamente en la base de datos del proveedor, siempre que el consumidor esté dentro del ámbito definido por el proveedor.

Como Proveedor, puede definir ámbitos en la base de datos para otorgar a los consumidores el privilegio de crear automáticamente hipervínculos de tabla. Los consumidores autorizados dentro de estos ámbitos pueden crear tablas federadas y consultar datos de varias bases de datos de origen sin intercambio manual de enlaces.

Las principales ventajas de definir ámbitos para crear hipervínculos de tabla son:
  • Uso compartido de datos simplificado: los consumidores ahora pueden iniciar la creación de tablas externas por separado y pueden crear hiperenlaces de tablas cuando pertenecen a un ámbito autorizado.
  • Seguridad mejorada: elimina los métodos de distribución de hipervínculo de tabla (URL) no seguros.
  • Federación de datos: los consumidores pueden agregar datos de varias bases de datos de proveedores a través de tablas federadas.

En las siguientes secciones se describe el flujo de trabajo detallado sobre cómo las bases de datos autónomas de proveedor y consumidor crean tablas federadas juntas mediante la definición de ámbitos en un caso de uso práctico de ejemplo. Este flujo de trabajo y los ejemplos de código asociados se pueden modificar e implantar según sus necesidades.

Flujo de trabajo para crear tablas federadas

El siguiente flujo de trabajo tiene distintas responsabilidades para el proveedor Autonomous AI Database y la base de datos de IA autónoma del consumidor.

Desde el lado del proveedor, el primer paso es definir un ámbito de creación que especifique qué bases de datos de IA autónomas de consumidores pueden crear de forma remota hipervínculos de tabla en el proveedor. El ámbito se puede definir en el nivel de esquema u objeto.

A continuación, el DBA del proveedor controla quién puede gestionar ámbitos llamando a DBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER para los usuarios seleccionados. Estos usuarios con privilegios pueden utilizar DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE, UPDATE_CREATION_SCOPE y UNREGISTER_CREATION_SCOPE para registrar, cambiar o eliminar ámbitos para tablas o esquemas específicos, y LIST_CREATION_SCOPES para revisar la configuración actual. Cuando un consumidor solicita posteriormente un hiperenlace, el proveedor comprueba que la base de datos de IA autónoma del consumidor solicitante coincide con el ámbito registrado antes de permitir la generación de URL, lo que garantiza que solo los consumidores autorizados puedan crear hiperenlaces a los datos del proveedor.

Desde la perspectiva del consumidor, el flujo de trabajo se inicia una vez que el proveedor ha definido ámbitos que incluyen la base de datos del consumidor. El DBA del consumidor otorga a los usuarios específicos el privilegio de crear tablas federadas a través de los datos del proveedor llamando a DBMS_DATA_ACCESS_ADMIN.GRANT_READ.

A continuación, un consumidor puede llamar a DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE para crear hiperenlaces de tabla en la base de datos del proveedor en nombre del consumidor y la tabla federada resultante en el consumidor puede consultar los datos del productor como si se tratara de una tabla externa local.

Cuando el acceso federado ya no es necesario, el consumidor se limpia llamando a DBMS_DATA_ACCESS.DROP_FEDERATED_TABLE, que elimina el objeto de tabla federada en el consumidor mientras deja intactos los ámbitos del proveedor.

Considera una organización que utilice instancias de Oracle Autonomous AI Database en las que un proveedor central Autonomous AI Database contenga datos maestros compartidos, y las bases de datos de IA autónomas de consumo departamental necesitan acceso a análisis sin duplicación de datos ni tickets de soporte. Los analistas de negocio del departamento de análisis requieren la creación de autoservicio de tablas externas sobre los datos del proveedor para ejecutar informes más rápido, al tiempo que mantienen la gobernanza a través de ámbitos definidos por el proveedor. Terminaron con los siguientes requisitos:
  1. ADMIN (proveedor) otorga el privilegio de registro del ámbito al propietario de los datos mediante el procedimiento DBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER.
    BEGIN
    DBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER(
    username => 'DATA_OWNER',
    scope => 'MY$COMPARTMENT'
    );
    END;
    /
  2. Como ADMIN, otorgue privilegios de ejecución al usuario propietario de datos (DATA_OWNER).
    grant execute on DBMS_DATA_ACCESS_SCOPE to DATA_OWNER;
  3. El propietario de los datos registra el ámbito de creación en el objeto o esquema compartido en la base de datos de IA autónoma del proveedor mediante el procedimiento DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE. Esto autoriza a las bases de datos de IA autónomas del consumidor en el mismo compartimento a crear hiperenlaces de tabla de forma remota.
    BEGIN
    DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE(
    schema_name => 'DATA_OWNER',
    schema_object_name => 'SALES_DATA',
    scope => 'MY$COMPARTMENT'
    );
    END;
    /
  4. El consumidor ADMIN otorga el privilegio de lectura al analista de negocio mediante el procedimiento DBMS_DATA_ACCESS_ADMIN.GRANT_READ.
    {{BEGIN
    DBMS_DATA_ACCESS_ADMIN.GRANT_READ(
    username => 'BI_ANALYST',
    remote_schema_name => 'DATA_OWNER',
    remote_schema_object_name=> 'SALES_DATA'
    );
    END;
    /}}

    Esto garantiza que el analista pueda iniciar la creación de tablas federadas.

  5. El consumidor ADMIN otorga privilegios de ejecución al usuario bi_analyst.
    grant execute on DBMS_DATA_ACCESS to bi_analyst;
  6. El analista de negocio crea una tabla externa federada en la base de datos de IA autónoma del consumidor mediante el procedimiento DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE. Esto genera el hiperenlace Tabla automáticamente si el ámbito coincide en el que no es necesaria ninguna intervención del profesional asistencial.

    BEGIN
    DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE(
    table_name => 'DEPT_SALES_XT',
    remote_schema_name => 'DATA_OWNER',
    remote_schema_object_name => 'SALES_DATA',
    db_ocids => '[{"region": "IAD", "db_ocid": "OCID1.AUTONOMOUSDATABASE.OC1.IAD.EXAMPLE123"}]'
    );
    END;
    /
    Nota

    El OCID de la base de datos (db_ocid) debe estar en mayúsculas.
  7. El analista consulta la tabla externa para los análisis de departamento:
    SELECT * FROM DEPT_SALES_XT WHERE region = 'West';
Nota

Los ejemplos de código anteriores se pueden modificar e implantar según sus requisitos.

Para obtener más información sobre las funciones y los parámetros anteriores, consulte DBMS_DATA_ACCESS_SCOPE Package, DBMS_DATA_ACCESS_ADMIN Package y DBMS_DATA_ACCESS Package.

En la siguiente tabla se muestran las operaciones implicadas en el flujo de trabajo de creación de tablas federadas mediante la definición del ámbito junto con sus descripciones:
Operación Descripción Usuario que ejecuta esta operación
Definir ámbito de creación Define qué bases de datos pueden crear de forma remota hiperenlaces de tablas en una instancia de base de datos de IA autónoma de proveedor. Consulte Ámbito de creación para obtener más información. Proveedor
Otorgar Registrar

Otorga a los usuarios de una instancia de base de datos de IA autónoma de proveedor permiso para registrar o actualizar el ámbito.

Consulte Grant Register para obtener más información.

Proveedor
Ámbito de creación de registro

Define qué objetos de base de datos pueden tener enlaces de hipertexto de tabla creados en un ámbito de autorización especificado.

Consulte Registro del ámbito de creación para obtener más información.

Proveedor
Actualizar ámbito de creación Modifica el ámbito de creación existente. Consulte Actualizar ámbito de creación para obtener más información. Proveedor
Anular registro de ámbito de creación Elimina la configuración de ámbito de creación registrada anteriormente para un esquema, un único objeto o una lista de objetos. Consulte Anulación del registro del ámbito de creación para obtener más información. Proveedor
Recuperar ámbito de creación Consulta y recupera los ámbitos de creación registrados para los esquemas u objetos especificados. Consulte Lista de ámbitos de creación para obtener más información. Proveedor
Crear tabla federada Crea una tabla federada. Consulte Creación de tablas federadas para obtener más información. Consumidor
Conceder lectura Otorga privilegios de lectura a un usuario consumidor para esquemas u objetos remotos, lo que permite la creación de tablas federadas. Consulte Otorgar lectura para obtener más información. Consumidor
Revocar lectura Revoca un privilegio de lectura otorgado anteriormente para crear una tabla federada. Consulte Revocar lectura para obtener más información. Consumidor
Borrar tabla federada Elimina las tablas federadas especificadas de la base de datos. Consulte Borrar tabla federada para obtener más información. Consumidor

Ámbito de creación

Un ámbito de creación en una base de datos de proveedor determina qué instancias de base de datos de IA autónoma de consumidor tienen permiso para crear de forma remota hipervínculos de tabla en la base de datos de proveedor.

El ámbito se puede definir en varios niveles:
  • Basado en arrendamiento (MY$TENANCY): cualquier base de datos del mismo arrendamiento que la base de datos del proveedor.
  • Basado en compartimentos (MY$COMPARTMENT): cualquier base de datos del mismo compartimento que la base de datos del proveedor.
  • Nivel de objeto: tablas o vistas específicas dentro de un esquema.
  • Nivel de esquema: todos los objetos de un esquema específico.

Puede gestionar ámbitos de creación mediante el paquete DBMS_DATA_ACCESS_SCOPE, que proporciona procedimientos para registrar, anular el registro, actualizar y recuperar ámbitos. Consulte DBMS_DATA_ACCESS_SCOPE para obtener más información.

Otorgar Registrar

ADMIN (o PDB_DBA) en la base de datos de IA autónoma del proveedor utiliza DBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER para decidir qué usuarios locales pueden gestionar ámbitos de creación.

Solo estos usuarios con privilegios pueden registrar, actualizar o anular el registro de ámbitos, lo que evita la exposición no controlada de las tablas de proveedores.

Ejemplo

BEGIN
DBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER(
username => 'ANALYTICS_ADMIN',
scope => 'MY$COMPARTMENT'
);
END;
/

En el ejemplo anterior se otorga al usuario ANALYTICS_ADMIN permiso para registrar juegos de datos en el ámbito MY$COMPARTMENT.

Consulte GRANT_REGISTER para obtener una referencia de sintaxis.

Ámbito de creación de registro

Un proveedor llama a DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE para registrar el ámbito permitido para tablas específicas o esquemas completos a fin de crear hipervínculos de tabla en esos objetos.

Ejemplo: registro de ámbito de nivel de esquema
BEGIN
DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_name => 'NULL',
scope => 'MY$COMPARTMENT'
);
END;
/

En este ejemplo, se registra un ámbito de acceso a datos en el nivel de esquema para el esquema ANALYTICS, asociándolo al compartimento MY$COMPARTMENT.

Ejemplo: registro de ámbito de nivel de objeto

BEGIN
DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_name => 'SALES_DATA',
scope => 'MY$TENANCY'
);
END;
/

En este ejemplo se registra un ámbito de acceso a datos más específico para un objeto específico SALES_DATA dentro del esquema ANALYTICS, enlazándolo al arrendamiento MY$TENANCY. A diferencia de la versión de nivel de esquema, schema_object_name limita la aplicación a esta tabla, lo que permite el control granular sobre los permisos de creación.

Ejemplo: registro de varios objetos
BEGIN
DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_list => '["SALES_DATA", "CUSTOMER_DATA", "PRODUCT_DATA"]',
scope => 'MY$COMPARTMENT'
);
END;
/

Este procedimiento asocia los objetos de esquema mostrados: SALES_DATA, CUSTOMER_DATA y PRODUCT_DATA al ámbito MY$COMPARTMENT, restringiendo su creación o acceso a las entidades de ese compartimento.

Consulte Register Creation Scope para obtener una referencia de sintaxis.

Actualizar ámbito de creación

Si un proveedor necesita cambiar el acceso, el mismo usuario u otro usuario autorizado llama a UPDATE_CREATION_SCOPE para ampliar, reducir o ajustar de otro modo qué bases de datos de IA autónomas de consumidores pueden crear hiperenlaces para objetos de esquema concretos.

Ejemplo
BEGIN
DBMS_DATA_ACCESS_SCOPE.UPDATE_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_name => 'SALES_DATA',
scope => 'MY$COMPARTMENT'
);
END;
/

En este ejemplo, se actualiza el ámbito de creación de la tabla SALES_DATA en el esquema ANALYTICS a MY$COMPARTMENT.

Consulte Update Creation Scope para obtener más información sobre la sintaxis.

Anular registro de ámbito de creación

Cuando un proveedor desea revocar completamente la capacidad de creación remota (para una tabla, una lista de tablas o un esquema), el proveedor llama a UNREGISTER_CREATION_SCOPE. Esto elimina el ámbito registrado y evita que las bases de datos de consumidores creen nuevos hipervínculos de tabla para esos objetos.

Ejemplo
BEGIN
DBMS_DATA_ACCESS_SCOPE.UNREGISTER_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_name => 'SALES_DATA'
);
END;
/

Este bloque de ejemplo elimina un ámbito de creación registrado anteriormente para SALES_DATA en el esquema ANALYTICS, de modo que los nuevos objetos creados en ese ámbito ya no se rigen por el acceso a los datos que controla el ámbito aplicado.

Consulte Unregister Creation Scope para obtener una referencia de sintaxis.

Recuperar ámbitos de creación

En cualquier momento, un usuario autorizado puede llamar a LIST_CREATION_SCOPES para recuperar las definiciones de ámbito actuales.

Ejemplo
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;
/

Consulte Retrieve Creation Scope para obtener una referencia de sintaxis.

Conceder lectura

En la base de datos de IA autónoma del consumidor, ADMIN (o PDB_DBA) utiliza DBMS_DATA_ACCESS_ADMIN.GRANT_READ para otorgar a usuarios específicos el derecho de crear tablas federadas en esquemas u objetos de proveedores remotos.

Ejemplo: Otorgamiento de acceso a un objeto remoto específico

BEGIN
DBMS_DATA_ACCESS_ADMIN.GRANT_READ(
username => 'BI_ANALYST',
remote_schema_name => 'ANALYTICS',
remote_schema_object_name => 'SALES_DATA'
);
END;
/

En este ejemplo, se otorga al usuario BI_ANALYST acceso de lectura al objeto SALES_DATA remoto específico en el esquema ANALYTICS de un proveedor de datos externo.

Consulte Otorgar lectura para obtener una referencia de sintaxis.

Revocar lectura

El procedimiento REVOKE_READ elimina el privilegio de un usuario para crear tablas federadas a través de un esquema remoto u objeto de esquema especificado en la base de datos del proveedor.

Si omite el nombre del objeto remoto, revoca el acceso a la tabla federada de ese usuario para todos los objetos del esquema remoto proporcionado.

Ejemplo

BEGIN
DBMS_DATA_ACCESS_ADMIN.REVOKE_READ(
username => 'BI_ANALYST',
remote_schema_name => 'ANALYTICS',
remote_schema_object_name => 'SALES_DATA'
);
END;
/

Consulte Revoke Read para obtener referencia sobre la sintaxis.

Crear tabla federada

Un usuario consumidor al que se le han otorgado privilegios de lectura llama a DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE para crear una tabla federada en la tabla o vista dentro del ámbito del proveedor.

El procedimiento utiliza OCID de base de datos e información de región para establecer hipervínculos de tabla para que el consumidor pueda consultar datos remotos como si se tratara de una tabla externa local.

Requisitos

  • Se deben otorgar privilegios de lectura al usuario mediante el procedimiento GRANT_READ.
  • El usuario debe existir en las bases de datos de consumidor y proveedor con los privilegios necesarios.
  • La base de datos de consumidores debe pertenecer al ámbito de creación del proveedor.
  • El proveedor debe tener un ámbito de creación registrado para los objetos de destino.
  • Conectividad de red establecida entre las bases de datos de consumidores y proveedores.
Soporte entre regiones
  • Cuando las instancias de Autonomous AI Database del proveedor y el consumidor están en diferentes regiones de OCI, aún puede crear tablas federadas mediante hiperenlaces de tablas de ámbito de proveedor.

  • Esto significa que, incluso si el origen de datos (proveedor) está en, por ejemplo, la región Este de EE. UU. y la base de datos de consumidores está en Europa Occidental, puede configurar una tabla federada a través de hiperenlaces de tabla.

Ejemplo: proveedor único

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;
/

En el ejemplo anterior, un consumidor llama a DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE para crear una tabla federada local que enlace a la tabla o vista de un proveedor remoto (por ejemplo, SALES_DATA en el esquema ANALYTICS), utilizando JSON db_ocids para especificar la base de datos de proveedor OCIDs y las regiones para realizar consultas sin problemas como si fueran locales.

Una vez que un consumidor crea una tabla federada. Se pueden consultar como tablas externas normales:
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;

Consulte Crear tabla federada para obtener una referencia de sintaxis.

Borrar tabla federada

Cuando el acceso federado ya no es necesario, el usuario consumidor llama a DBMS_DATA_ACCESS.DROP_FEDERATED_TABLE para eliminar la tabla federada.

Este procedimiento limpia el objeto del lado del consumidor y finaliza efectivamente esa ruta de acceso federada concreta, mientras que los ámbitos y privilegios del proveedor subyacente permanecen bajo control del proveedor.

BEGIN
DBMS_DATA_ACCESS.DROP_FEDERATED_TABLE(
table_name => 'SALES_FED'
);
END;
/

En el ejemplo anterior se borra la tabla SALES_FED.

Consulte Borrar tabla federada para obtener una referencia de sintaxis.

Escenarios de solución de problemas

En esta sección, se proporcionan instrucciones sobre los tipos de fallos que se pueden producir y cómo solucionar los problemas.

  1. La base de datos del consumidor no está incluida en el ámbito

    Problema: el consumidor recibe un error de autorización al intentar crear tablas federadas.

    Resolución

    • Verifique que el ID de la base de datos de consumidores coincide con los criterios de ámbito del proveedor.
    • Confirme que se han otorgado privilegios de lectura al usuario mediante el procedimiento GRANT_READ.
    • El proveedor de comprobación ha registrado el ámbito de creación adecuado mediante el procedimiento REGISTER_CREATION_SCOPE.
    • Confirme el estado de registro de la base de datos en la consola de OCI.
  2. Fallo al crear la tabla federada

    Problema: el procedimiento CREATE_FEDERATED_TABLE falla a pesar de que se cumplen los requisitos previos.

    Resolución
    • Verifique que el usuario existe en las bases de datos de consumidor y proveedor.
    • Confirme que el usuario tiene la propiedad del objeto o el privilegio GRANT OPTION en objetos remotos.
    • Compruebe que el esquema remoto y los nombres de objeto son correctos (sensible a mayúsculas/minúsculas).
    • Verifique que JSON db_ocids contiene códigos de región y OCID de base de datos válidos.
    • Asegúrese de que el ámbito del proveedor está activado y contiene la base de datos de consumidores.
  3. Errores de autorización

    Problema: los usuarios no pueden registrar ámbitos ni acceder a tablas federadas.

    Resolución

    • Verifique que se ha otorgado al usuario el privilegio REGISTER mediante el procedimiento GRANT_REGISTER (del lado del proveedor).
    • Verifique que se ha otorgado al usuario el privilegio READ mediante GRANT_READ (del lado del consumidor).
    • Para las operaciones de nivel de objeto, confirme que el usuario posee el objeto o tiene el privilegio de opción GRANT.
    • Para las operaciones de nivel de esquema, confirme que el usuario es ADMIN o que tiene el rol PDB_DBA.
    • Compruebe el historial de revocaciones de privilegios para asegurarse de que los privilegios no se han revocado explícitamente.