Utilice Data Transmission Service (DTS) para sincronizar datos desde una base de datos Oracle autogestionada hacia un proyecto de MaxCompute. DTS admite la sincronización de esquemas, la sincronización completa de datos y la sincronización incremental de datos (captura de cambios mediante registros redo y archivados).
Funcionamiento
DTS sincroniza los datos en tres fases secuenciales:
Schema synchronization: DTS crea las tablas de destino en MaxCompute. Cada nombre de tabla recibe el sufijo
_base. Por ejemplo, si la tabla de origen escustomer, DTS creacustomer_baseen MaxCompute.Full data synchronization: DTS copia todas las filas existentes de la base de datos Oracle de origen a las tablas
_basecorrespondientes en MaxCompute.Incremental data synchronization: DTS lee los registros redo y archivados de Oracle, y escribe los registros de cambios en una tabla de datos incrementales independiente en MaxCompute. El nombre de la tabla de datos incrementales recibe el sufijo
_log. Por ejemplo, los cambios encustomerse escriben encustomer_log.
Facturación
|
Tipo de sincronización |
Costo |
|
Sincronización de esquemas y sincronización completa de datos |
Gratis |
|
Sincronización incremental de datos |
Con cargo. Para más información, consulte Descripción general de la facturación. |
Operaciones SQL compatibles
|
Tipo de operación |
Sentencias SQL |
|
DML (lenguaje de manipulación de datos) |
INSERT, UPDATE, DELETE |
|
DDL (lenguaje de definición de datos) |
ADD COLUMN (no se admiten columnas de atributos) |
Nota
DTS no sincroniza claves externas. Las operaciones en cascada y de eliminación en la base de datos de origen no se replican en el destino.
Requisitos previos
Antes de empezar, asegúrese de cumplir con lo siguiente:
Haber activado MaxCompute y creado un proyecto de MaxCompute. Consulte Activate MaxCompute and DataWorks y Create a MaxCompute project.
Haber configurado una lista de permitidos de direcciones IP en el cliente de MaxCompute para permitir el acceso de DTS. Consulte Configure an IP address whitelist to allow access from Alibaba Cloud services to MaxCompute.
-
Haber creado un par de AccessKey para la cuenta de Alibaba Cloud propietaria del proyecto de MaxCompute de destino. Consulte Creación de un par de AccessKey.
Nota
Como alternativa, puede crear un usuario RAM y configurarlo como superadministrador del proyecto de MaxCompute.
-
Haber configurado la base de datos Oracle de origen:
Debe ejecutarse en modo ARCHIVELOG, con archivos de registro archivados accesibles y un periodo de retención adecuado. Consulte Gestión de archivos de registro redo archivados.
Debe tener habilitado el registro suplementario, con
SUPPLEMENTAL_LOG_DATA_PKySUPPLEMENTAL_LOG_DATA_UIestablecidos en Yesconfiguración de notificaciones de alerta. Consulte Registro suplementario.Debe contar con una cuenta de base de datos que tenga los permisos necesarios. Consulte Prepare an Oracle database.
Haber revisado las capacidades y los límites de DTS para la sincronización con Oracle y, opcionalmente, haber evaluado la viabilidad de la migración con Advanced Database & Application Migration (ADAM). Consulte Descripción general.
Límites
Requisitos de la base de datos de origen
Las tablas deben tener una clave primaria o una clave única, y todos sus campos deben ser únicos. De lo contrario, podrían aparecer filas duplicadas en el destino.
En Oracle 12c y versiones posteriores, los nombres de tabla no pueden superar los 30 bytes.
Si cambia el nombre de tablas o columnas en el destino (Selected Objects > clic derecho), una sola tarea admite hasta 1,000 tables. Para cargas de trabajo mayores, divida las tablas en varias tareas o sincronice toda la base de datos sin cambiar nombres.
Para Oracle Real Application Cluster (RAC), utilice una dirección IP virtual (VIP) en lugar de una dirección IP de Single Client Access Name (SCAN). Una vez especificada la VIP, no se admite el failover de nodos.
Si la base de datos Oracle RAC se conecta mediante Express Connect, especifique una VIP al configurar la tarea.
Requisitos de retención de registros
Los registros redo y los registros archivados deben cumplir con los siguientes periodos mínimos de retención:
|
Modo de sincronización |
Periodo mínimo de retención |
|
Solo sincronización incremental de datos |
24 horas |
|
Sincronización completa + sincronización incremental de datos |
7 días |
Si los registros se purgan antes de que DTS pueda leerlos, la tarea fallará. En casos extremos, esto puede provocar inconsistencia o pérdida de datos. Una vez completada la sincronización completa de datos, puede reducir el periodo de retención a 24 horas.
Los periodos de retención inferiores a estos mínimos pueden causar que DTS omita datos de registro, lo cual podría comprometer las garantías del Acuerdo de Nivel de Servicio (SLA).
Otras limitaciones
No realice un cambio de rol primario/secundario mientras la tarea se esté ejecutando, ya que esta fallará.
Las cadenas vacías de tipo
VARCHAR2(que Oracle trata como NULL) provocan errores si la columna de destino correspondiente tiene una restricciónNOT NULL.En tablas con la directiva de Auditoría Detallada (FGA) habilitada, DTS no puede leer la pseudocolumna
ORA_ROWSCNy la tarea falla. Deshabilite la directiva FGA en las tablas afectadas o exclúyalas de la sincronización.No actualice campos
LONGTEXTmientras la sincronización esté en curso.No ejecute operaciones DDL durante la sincronización de esquemas ni durante la sincronización inicial completa de datos.
No utilice Oracle Data Pump para escribir en la base de datos de origen durante la sincronización incremental de datos, ya que podría producirse pérdida de datos.
No es posible sincronizar tablas externas.
MaxCompute no admite restricciones de clave primaria. Si ocurren errores de red durante la sincronización, DTS podría escribir filas duplicadas en MaxCompute.
Escriba en el proyecto de MaxCompute de destino únicamente a través de DTS para evitar inconsistencias en los datos.
Si DTS necesita recuperar una instancia con errores, el proceso puede tardar hasta 8 horas e implicar el reinicio de la instancia o el ajuste de parámetros de la instancia DTS (no se modifican los parámetros de la base de datos). Para consultar los parámetros que podrían modificarse, vea Modificación de parámetros de instancia.
Consideraciones de rendimiento
Sincronice los datos fuera de las horas pico. La sincronización completa de datos consume recursos de lectura y escritura tanto en la base de datos de origen como en la de destino.
Tras la sincronización completa de datos, el tablespace de destino podría ser mayor que el de origen debido a la fragmentación generada por operaciones INSERT concurrentes.
La latencia de sincronización se calcula comparando la marca de tiempo del último registro sincronizado en el destino con la marca de tiempo actual en el origen. Si no se ejecutan operaciones DML en el origen durante un periodo prolongado, la lectura de latencia podría ser inexacta. Ejecute una operación DML en el origen para actualizarla o habilite una tabla de latidos si sincroniza una base de datos completa.
Permisos necesarios para la cuenta de base de datos
|
Base de datos |
Permisos obligatorios |
Referencia |
|
Base de datos Oracle autogestionada |
Permisos detallados |
Para sincronizar datos incrementales, el registro de archivado y el registro suplementario deben estar habilitados en la base de datos Oracle. Consulte Configure an Oracle database.
Creación de una tarea de sincronización de datos
Paso 1: Abrir la página de sincronización de datos
Utilice una de las siguientes consolas para comenzar:
Consola de DTS
Inicie sesión en la consola de DTS.DTS console
En el panel de navegación izquierdo, haga clic en Data Synchronization.
En la esquina superior izquierda, seleccione la región donde se ejecutará la tarea de sincronización de datos.
Consola de DMS
Nota
La ruta de navegación exacta puede variar según el modo de la consola DMS. Consulte Modo simple y Personalización del diseño y estilo de la consola DMS.
Inicie sesión en la consola de DMS.DMS console
En la barra de navegación superior, pase el puntero sobre Data + AI y seleccione DTS (DTS) > Data Synchronization.
En la lista desplegable junto a Data Synchronization Tasks, seleccione la región donde se ejecutará la tarea.
Paso 2: Configurar las bases de datos de origen y destino
Haga clic en Create Task para abrir la página de configuración de la tarea. Configure los parámetros como se indica a continuación:
| Sección | Parámetro | Descripción |
|---|---|---|
| N/A | Task Name | Nombre de la tarea DTS. DTS genera un nombre automáticamente. Especifique un nombre descriptivo para facilitar su identificación. Los nombres de las tareas no necesitan ser únicos. |
| Source Database | Select Existing Connection | Seleccione una instancia de base de datos registrada en la lista desplegable para completar automáticamente los parámetros de conexión. Si la instancia no está registrada, configure los parámetros manualmente. |
| Database Type | Seleccione Oracle. | |
| Access Method | Seleccione el método que corresponda al lugar donde está implementada la base de datos Oracle. Este ejemplo utiliza Self-managed Database on ECS. Para otros métodos de acceso, consulte Preparation overview. | |
| Instance Region | Región donde reside la base de datos Oracle de origen. | |
| ECS Instance ID | ID de la instancia ECS que ejecuta la base de datos Oracle de origen. | |
| Port Number | Puerto del servicio Oracle. Valor predeterminado: 1521. | |
| Oracle Type | Non-RAC Instance: requiere el SID (identificador del sistema). RAC or PDB Instance: requiere el Service Name. Este ejemplo utiliza RAC or PDB Instance con un Service Name. | |
| Database Account | Cuenta de Oracle. Para consultar los permisos necesarios, vea Required database account permissions. | |
| Database Password | Contraseña de la cuenta de Oracle. | |
| Destination Database | Select Existing Connection | Seleccione una instancia de base de datos registrada en la lista desplegable para completar automáticamente los parámetros de conexión. Si la instancia no está registrada, configure los parámetros manualmente. |
| Database Type | Seleccione MaxCompute. | |
| Access Method | Seleccione Alibaba Cloud Instance. | |
| Instance Region | Región donde reside el proyecto de MaxCompute de destino. | |
| Project | Nombre del proyecto de MaxCompute de destino. | |
| AccessKey ID of Alibaba Cloud Account | AccessKey ID del par de AccessKey que preparó en la sección de requisitos previos. | |
| AccessKey Secret of Alibaba Cloud Account | AccessKey secret del par de AccessKey que preparó en la sección de requisitos previos. |
Paso 3: Probar la conectividad
En la parte inferior de la página, haga clic en Test Connectivity and Proceed. En el cuadro de diálogo CIDR Blocks of DTS Servers, haga clic en Test Connectivity.
Nota
Los bloques CIDR de los servidores DTS deben agregarse a la configuración de seguridad tanto de la base de datos de origen como de la de destino. Esto puede hacerse de forma automática o manual. Consulte Agregar direcciones IP de servidores DTS a una lista de permitidos.
Haga clic en OK para otorgar permisos a su cuenta de MaxCompute y luego haga clic en Test Connectivity and Proceed.
Paso 4: Configurar los objetos a sincronizar
En el paso Configure Objects, establezca los siguientes parámetros:
|
Parámetro |
Descripción |
|
Synchronization Types |
Incremental Data Synchronization está seleccionada de forma predeterminada. Seleccione también Schema Synchronization y Full Data Synchronization para ejecutar las tres fases. |
|
Naming Rules of Additional Columns |
DTS agrega columnas adicionales a las tablas de destino. Si el nombre de una columna adicional entra en conflicto con una columna existente, la tarea fallará y podría producirse pérdida de datos. Seleccione New Rule o Previous Rule según sus necesidades. Compruebe si existen conflictos de nombres antes de establecer este parámetro. Consulte Naming rules for additional columns. |
|
Partition Definition of Incremental Data Table |
Seleccione los nombres de partición según sus necesidades. Consulte Partition. |
|
Processing Mode of Conflicting Tables |
Precheck and Report Errors (predeterminado): comprueba si existen nombres de tabla idénticos en el origen y el destino. La comprobación previa falla si hay conflictos. Para resolverlos, utilice la función de asignación de nombres de objetos para renombrar las tablas de destino. Consulte Asignación de nombres de objetos. Ignore Errors and Proceed: omite la comprobación de conflictos. Durante la sincronización completa, se conservan los registros existentes en el destino; durante la sincronización incremental, los registros existentes se sobrescriben. Si los esquemas difieren, la inicialización podría fallar o solo se sincronizarán algunas columnas. |
|
Capitalization of Object Names in Destination Instance |
Controla el uso de mayúsculas y minúsculas en los nombres de bases de datos, tablas y columnas en el destino. Valor predeterminado: DTS default policy. Consulte Especificación del uso de mayúsculas en nombres de objetos de la instancia de destino. |
|
Source Objects |
Seleccione una o más tablas y haga clic en |
|
Selected Objects |
Para cambiar el nombre de un solo objeto: haga clic derecho sobre él y especifique un nuevo nombre. Consulte Asignación del nombre de un solo objeto. Para cambiar el nombre de varios objetos: haga clic en Batch Edit. Consulte Asignación de múltiples nombres de objetos a la vez. Para filtrar filas: haga clic derecho en la tabla y establezca las condiciones de filtro. Consulte Specify filter conditions. Cambiar el nombre de un objeto puede provocar que otros objetos dependientes fallen en la sincronización. |
Paso 5: Configurar opciones avanzadas
Haga clic en Next: Advanced Settings y configure lo siguiente:
|
Parámetro |
Descripción |
|
Dedicated Cluster for Task Scheduling |
De forma predeterminada, DTS programa las tareas en un clúster compartido. Adquiera un clúster dedicado para mejorar la estabilidad. Consulte ¿Qué es un clúster dedicado de DTS?. |
|
Retry Time for Failed Connections |
Tiempo durante el cual DTS reintenta la operación tras un fallo de conexión. Valores válidos: 10–1440 minutos. Valor predeterminado: 720 minutos. Establezca este valor en 30 minutos como mínimo. Si varias tareas comparten la misma base de datos de origen o destino, se aplica el tiempo de reintento más corto. DTS factura la instancia durante los reintentos. |
|
Retry Time for Other Issues |
Tiempo durante el cual DTS reintenta la operación tras un fallo DDL o DML. Valores válidos: 1–1440 minutos. Valor predeterminado: 10 minutos. Establezca un valor superior a 10 minutos e inferior al valor de Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Synchronization |
Limite la velocidad de la sincronización completa para reducir la carga en los servidores de base de datos. Configure QPS (queries per second) to the source database, RPS of Full Data Migration y Data migration speed for full migration (MB/s). Disponible solo cuando Full Data Synchronization está seleccionada. |
|
Enable Throttling for Incremental Data Synchronization |
Limite la velocidad de la sincronización incremental configurando RPS of Incremental Data Synchronization y Data synchronization speed for incremental synchronization (MB/s). |
|
Actual Write Code |
Formato de codificación para los datos escritos en el destino. Selecciónelo según sus necesidades. |
|
Environment Tag |
Etiqueta opcional para identificar la instancia DTS. |
|
Configure ETL |
Habilita la función de extracción, transformación y carga (ETL). Seleccione Yes para introducir sentencias de procesamiento de datos en el editor de código. Consulte Configuración de ETL en una tarea de migración o sincronización de datos. Seleccione No para omitirla. Consulte también ¿Qué es ETL? |
|
Monitoring and Alerting |
Configure alertas para fallos de tareas o alta latencia de sincronización. Seleccione Yes y establezca el umbral de alerta y los contactos de notificación. Consulte Configuración de monitoreo y alertas al crear una tarea DTS. |
Paso 6: Ejecutar la comprobación previa
Haga clic en Next: Save Task Settings and Precheck.
Nota
Para obtener una vista previa de los parámetros de API correspondientes a esta configuración de tarea, pase el puntero sobre el botón y haga clic en Preview OpenAPI parameters.
DTS ejecuta una comprobación previa antes de iniciar la tarea. Si la comprobación falla:
Haga clic en View Details junto a cada elemento fallido, resuelva el problema y haga clic en Precheck Again.
Para elementos de alerta que puedan ignorarse: haga clic en Confirm Alert Details, luego en Ignore en el cuadro de diálogo, después en OK y finalmente en Precheck Again. Ignorar alertas puede provocar inconsistencia en los datos.
Paso 7: Adquirir una instancia de sincronización de datos
Espere hasta que Success Rate alcance 100% y luego haga clic en Next: Purchase Instance.
-
En la página buy, configure lo siguiente:
Sección Parámetro Descripción New Instance Class Billing Method Subscription: pago anticipado por un plazo fijo; más rentable para uso a largo plazo. Pay-as-you-go: facturación por hora; adecuado para uso a corto plazo. Libere la instancia cuando ya no la necesite para detener los cargos. Resource Group Settings Grupo de recursos para la instancia. Valor predeterminado: default resource group. Consulte ¿Qué es Resource Management? Instance Class Clase de throughput de sincronización. Consulte Clases de instancia de sincronización de datos. Subscription Duration Disponible para el método de facturación Subscription. Opciones: 1–9 meses, 1 año, 2 años, 3 años o 5 años. Lea y acepte los Data Transmission Service (Pay-as-you-go) Service Terms.
Haga clic en Buy and Start y luego en OK en el cuadro de diálogo de confirmación.
La tarea aparecerá en la lista de tareas. Monitoree su progreso desde dicha lista.
Esquema de la tabla de datos incrementales
Nota
Ejecute set odps.sql.allow.fullscan=true; en MaxCompute para permitir escaneos completos de tablas en el proyecto.
DTS escribe los registros de cambios incrementales en la tabla _log en MaxCompute. Cada fila en la tabla de datos incrementales representa un evento de cambio e incluye los siguientes campos de metadatos además de las columnas de la tabla de origen:
|
Campo |
Descripción |
|
|
Identificador único de la entrada de registro. Se incrementa automáticamente con cada nueva entrada. Para una operación UPDATE, DTS genera dos entradas (valores anteriores y posteriores a la actualización) con el mismo |
|
|
Tipo de operación: |
|
|
Marca de tiempo de la operación en UTC. También corresponde a la marca de tiempo del archivo de registro binario. |
|
|
Indica si la fila contiene valores previos a la actualización: |
|
|
Indica si la fila contiene valores posteriores a la actualización: |