Datastream te permite transmitir datos históricos y cambios continuos desde una base de datos de Oracle de origen hasta tu destino para realizar análisis en tiempo real y sincronizar bases de datos.
Antes de configurar una fuente de Oracle, revisa el comportamiento de replicación, las versiones y los tipos de bases de datos compatibles, la configuración de la base de datos, las prácticas recomendadas y las limitaciones conocidas en Datastream.
Comportamiento
Datastream admite dos métodos para extraer cambios en los datos de los archivos de registro de rehacer en línea: el lector de registros binarios de Oracle (versión preliminar) y Oracle LogMiner.
Con el método de lector de registros binarios (versión preliminar), se observa el siguiente comportamiento:
Si hay un retraso de lectura cuando se extraen los cambios de los archivos de registro en línea, Datastream extrae los cambios de los archivos de registro archivados.
Datastream solo replica los cambios confirmados en el destino. Las transacciones no confirmadas o revertidas no se replican.
El lector binario admite la replicación de columnas
VARCHAR2de Oracle de más de 4,000 caracteres.
Datastream también admite la función Oracle LogMiner para exponer los cambios en los datos. El método tiene el siguiente comportamiento:
- Se pueden seleccionar todos los esquemas o los esquemas específicos de una base de datos determinada, así como todas las tablas de los esquemas o tablas específicas.
- Se replican todos los datos históricos.
- Se replican todos los cambios del lenguaje de manipulación de datos (DML), como las inserciones, las actualizaciones y las eliminaciones de las bases de datos y las tablas especificadas.
- Datastream replica los cambios confirmados y, en algunos casos, los no confirmados en el destino. Datastream lee los cambios no confirmados. En caso de una reversión, los registros de salida de Datastream también incluyen la operación opuesta. Por ejemplo, si hay una operación
INSERTrevertida, los registros de salida también contendrán una operaciónDELETEcorrespondiente. En este caso, el evento aparecerá como un eventoDELETEsolo con elROWID.
Reabastecimiento basado en ROWID
En Oracle, ROWID es una seudocolumna que almacena identificadores únicos para las filas de una tabla. Datastream usa los valores ROWID para sus operaciones de reabastecimiento. Por este motivo, te recomendamos que no realices ninguna acción que pueda cambiar los valores de ROWID en tu base de datos de Oracle de origen hasta que se complete la operación de reabastecimiento.
Entre las acciones que pueden cambiar los valores de ROWID, se incluyen las siguientes:
Movimiento físico de las filas:
- Operaciones de exportación e importación: Cuando exportas una tabla y, luego, la vuelves a importar, la ubicación física de las filas puede cambiar, lo que genera nuevos valores de
ROWID. - Comando
ALTER TABLE (...) MOVE: Mover una tabla a un espacio de tablas diferente puede cambiar el almacenamiento físico y generar cambios enROWID. - Comando
ALTER TABLE (...) SHRINK SPACE: Este comando comprime la tabla, lo que puede mover filas y afectar sus valores deROWID. - Operaciones de partición: Dividir, combinar o mover particiones puede cambiar la ubicación física de las filas y sus valores
ROWID.
- Operaciones de exportación e importación: Cuando exportas una tabla y, luego, la vuelves a importar, la ubicación física de las filas puede cambiar, lo que genera nuevos valores de
Operaciones de flashback:
- Comando
FLASHBACK TABLE: restablecer una tabla a un estado anterior implica borrar y volver a insertar filas, lo que crea valoresROWIDnuevos. FLASHBACK_TRANSACTION_QUERY: Es similar aFLASHBACK TABLE. Revertir una transacción puede causar cambios enROWIDsi se borraron o actualizaron filas dentro de la transacción.
- Comando
Soluciona problemas de reabastecimiento de tablas de partición de Oracle 11.2.0.4
Si el reabastecimiento falla para una tabla particionada en Oracle 11.2.0.4 con un error de recuperación inesperado (índice fuera de los límites), se debe a un error de metadatos de Oracle en el que las consultas a ALL_OBJECTS no devuelven subparticiones.
- Solución alternativa: Revoca temporalmente el privilegio
SELECT ON DBA_EXTENTSdel usuario de Datastream (por ejemplo,REVOKE SELECT ON sys.dba_extents FROM USER_NAME;). Esto obliga a Datastream a usar el reabastecimiento basado en índices, lo que evita el problema de los metadatos.
Bases de datos en espera
Cuando usas una base de datos en espera de Oracle Active Data Guard como fuente,
Datastream lee los registros de rehacer archivados. Para asegurarte de que
Datastream solo procese los registros de rehacer que se aplicaron correctamente
a la base de datos en espera, debes filtrar las vistas estándar de Oracle, como
V$ARCHIVED_LOG y GV$ARCHIVED_LOG, para incluir solo los registros con el
filtro APPLIED = 'YES'.
Para ello, puedes crear vistas personalizadas. Asegúrate de otorgar el acceso adecuado a estas vistas para tu usuario de Datastream. Por ejemplo:
CREATE OR REPLACE VIEW USER_NAME.local_v$archived_log AS
SELECT * FROM sys.v_$ARCHIVED_LOG
WHERE RESETLOGS_CHANGE# = (SELECT resetlogs_change# FROM v$database)
AND APPLIED = 'YES';
CREATE OR REPLACE VIEW USER_NAME.local_gv$archived_log AS
SELECT * FROM sys.gv_$ARCHIVED_LOG
WHERE RESETLOGS_CHANGE# = (SELECT resetlogs_change# FROM v$database)
AND APPLIED = 'YES';
CREATE SYNONYM USER_NAME.v$archived_log FOR USER_NAME.local_v$archived_log;
CREATE SYNONYM USER_NAME.gv$archived_log FOR USER_NAME.local_gv$archived_log;
El uso del filtro APPLIED = 'YES' tiene un impacto en la actualidad de los datos.
Datastream espera hasta que el proceso de recuperación administrada (MRP) de la base de datos en espera
aplique los registros y actualice la columna APPLIED a YES antes de
extraer los cambios. Si el proceso de MRP se retrasa o se pausa, por ejemplo, si
suspendes el proceso de aplicación en espera, esto afecta directamente la actualidad de los
datos replicados. Datastream ingresa a un bucle de reintentos y retrasa el procesamiento
hasta que los registros archivados recién aplicados estén disponibles.
Esta configuración es muy relevante cuando se replican tablas que incluyen columnas de objetos grandes (LOB). Para las operaciones UPDATE, los valores detallados de las columnas de LOB no están presentes en los registros de rehacer. Por lo tanto, Datastream debe consultar la base de datos para recuperar la fila asociada. Si Datastream
procesa un registro de rehacer no aplicado y trata de recuperar el valor de LOB de la
base de datos en espera, es posible que recupere un valor incorrecto y desactualizado. Si filtras los
registros para asegurarte de que se apliquen por completo primero, Datastream recupera los
datos correctos.
Versiones
Datastream admite las siguientes versiones de la base de datos de Oracle:
- Oracle 11g, versión 11.2.0.4 (solo se admite con el método de CDC de Logminer)
- Oracle 12c, versión 12.1.0.2
- Oracle 12c, versión 12.2.0.1
- Oracle 18c
- Oracle 19c
- Oracle 21c
Datastream admite los siguientes tipos de bases de datos de Oracle:
- Autoalojado de forma local o en cualquier proveedor de servicios en la nube
- Amazon RDS for Oracle
- Oracle Cloud
- Oracle Exadata
- Oracle RAC
- Base de datos en espera de Oracle Active Data Guard
Configuración
Para configurar una base de datos de Oracle de origen de modo que sus datos se puedan transmitir a un destino, debes configurar la base de datos para otorgar acceso, configurar el registro y definir una política de retención.
Consulta Configura una base de datos de Oracle de origen para aprender a configurar esta base de datos de modo que Datastream pueda extraer datos de ella a un destino.
Prácticas recomendadas
En esta sección, se describen las prácticas recomendadas para configurar tu fuente de Oracle y usarla con Datastream.
Distinción de mayúsculas y minúsculas para el lector binario
Cuando configures una fuente de Oracle con el método de CDC de lector binario y especifiques los nombres de directorio para los registros de rehacer y de archivo, ten en cuenta que los nombres distinguen mayúsculas de minúsculas. Asegúrate de que los nombres de directorio que proporciones en el perfil de conexión de Datastream coincidan con las mayúsculas y minúsculas exactas de los nombres de directorio en tu base de datos de Oracle.
Simultaneidad de CDC
Para minimizar el retraso de replicación, asegúrate de que Datastream pueda procesar los registros de rehacer
con la misma rapidez con la que los crea la fuente de Oracle. Cuando se usa el método de CDC de lector binario, la simultaneidad de Datastream se encuentra en el nivel del archivo de registro de rehacer: cada
tarea definida por maxConcurrentCdcTasks procesa un archivo a la vez.
Te recomendamos que uses la siguiente metodología:
- Ajusta la simultaneidad en Datastream: Identifica la cantidad promedio de
cambios de registro de rehacer durante tu horario de atención de mayor actividad y configura el
parámetro
maxConcurrentCdcTaskssegún corresponda. Para obtener más información, consulta Cantidad máxima de tareas de CDC. - Configura el cambio de registros de Oracle: Configura Oracle para que cambie los registros con frecuencia, por ejemplo, cada 10 o 20 minutos. Esto crea un flujo constante de unidades de trabajo más pequeñas, lo que permite que las tareas simultáneas de Datastream funcionen en paralelo de manera eficaz.
Te recomendamos que optimices tu configuración para que haya suficientes tareas simultáneas en Datastream para controlar la creación frecuente de registros de rehacer más pequeños desde Oracle. Para obtener más información, consulta Controles de simultaneidad de transmisiones.
Limitaciones conocidas
Entre las limitaciones conocidas que tiene el uso de la base de datos de Oracle como fuente, se incluyen las siguientes:
- Las transmisiones están limitadas a 10,000 tablas. Si una transmisión incluye más de 10,000 tablas, es posible que se produzcan errores.
- Datastream admite la arquitectura multiusuario de Oracle (CDB/PDB). Sin embargo, solo puedes replicar una base de datos conectable en una transmisión.
- No se admite Oracle Autonomous Database.
- En el caso de las tablas que no tienen una clave primaria, Datastream usa el
ROWIDde la fila para realizar una operación de combinación en el lado del consumidor. Ten en cuenta que es posible que elROWIDno sea único. Por ejemplo, si borras y vuelves a insertar una fila con la utilidad de exportación/importación de Oracle, es posible que cambie elROWIDde la fila. Si borras una fila, Oracle puede reasignar suROWIDa una fila nueva que se inserte más adelante. - No se admiten las tablas organizadas por índices (IOT).
- No se admiten las tablas temporales.
- Los siguientes tipos de datos de Oracle no son compatibles y no se replican. Las columnas de estos tipos se replican como valores
NULLen el destino:ANYDATA,ANYDATASET,ANYTYPEVARRAY(arrays de Oracle)BFILE,BFILENAMEINTERVAL DAY TO SECOND,INTERVAL YEAR TO MONTHLONG,LONG RAWUROWIDUDT- Tipos de medios y espaciales:
ORDAUDIO,ORDDATASOURCE,ORDDICOM,ORDDOC,ORDIMAGE,ORDVIDEO,SDO_GEOMETRY(y todos los demás tipos deMDSYS.SDO_*).
Para transmitir columnas de tipos de datos de objetos grandes, como
XMLTYPE, objetos binarios grandes (BLOB), objetos de caracteres grandes (CLOB) y objetos de caracteres nacionales grandes (NCLOB), debes incluir la marcastreamLargeObjectsen la configuración de tu transmisión. Si no incluyes la marca, Datastream no transmite esas columnas y se reemplazan por valoresNULLen el destino. Para obtener más información, consulta Habilita la transmisión de objetos grandes para fuentes de Oracle. Cuando se transmiten estos tipos de datos, Datastream debe consultar la base de datos de origen para recuperar los valores de LOB faltantes en un momento determinado (en un proceso de búsqueda activo llamado complementación). Esto ocurre en las siguientes situaciones:- Cuando las cargas útiles de LOB sin cambios se quitan del registro de rehacer durante una operación
UPDATE - Durante cualquier operación de DML que involucre tipos de XML binarios
- Durante cualquier DML analizado en una tabla que contenga LOB si la transmisión usa el método LogMiner
Debido a que Datastream transmite estas columnas consultando la base de datos, es posible que los cambios intermedios no se capturen en situaciones que impliquen actualizaciones rápidas y consecutivas o una eliminación rápida después de una inserción. Ten en cuenta que las operaciones
DELETEno activan la complementación. Esta limitación es particularmente relevante cuando se usa el modo de escritura de solo anexar, que espera que se capturen todos los cambios intermedios.- Cuando las cargas útiles de LOB sin cambios se quitan del registro de rehacer durante una operación
En el caso de Oracle 11g, no se admiten las tablas que tienen columnas de tipos de datos
ANYDATAoUDT, y no se replicará toda la tabla.La seguridad de etiquetas de Oracle (OLS) no se replica.
Datastream recupera periódicamente el esquema más reciente de la fuente a medida que se procesan los eventos. Si un esquema cambia, es posible que se lean algunos eventos del esquema nuevo mientras se sigue aplicando el esquema anterior. En este caso, Datastream detecta el cambio de esquema, activa una recuperación de esquema y vuelve a procesar los eventos con errores.
No todos los cambios en el esquema de origen se pueden detectar automáticamente, en cuyo caso pueden ocurrir daños en los datos. Los siguientes cambios en el esquema pueden causar daños en los datos o fallas en el procesamiento de los eventos downstream:
- Descarta columnas
- Agregar columnas en medio de una tabla
- Cambiar el tipo de datos de una columna
- Reordenar las columnas
- Descartar tablas (relevante si la misma tabla se vuelve a crear con datos nuevos agregados)
- Truncar tablas
Datastream no admite la replicación de vistas.
Datastream no admite la replicación de columnas virtuales (
GENERATED ALWAYS AS (...) VIRTUAL), ya que Oracle no almacena valores de columnas virtuales en el disco ni los escribe en los registros de rehacer. Las columnas virtuales se omiten del esquema de destino. Si una columna virtual forma parte de una clave primaria compuesta, Datastream usa solo las columnas no virtuales como clave primaria en el destino, lo que puede provocar reemplazos de claves duplicadas si las columnas restantes no son únicas.Datastream admite vistas materializadas. Sin embargo, las vistas nuevas que se crean mientras se ejecuta la transmisión no se reabastecen automáticamente.
Cuando se usa el método LogMiner de Oracle, no se admiten las sentencias
SAVEPOINTy pueden causar discrepancias de datos en caso de una reversión.Cuando se usa el método de lector binario, no se admiten las tablas particionadas de forma dinámica.
Cuando se usa el método LogMiner de Oracle, Datastream no admite la replicación de tablas y columnas cuyos nombres superen los 30 caracteres.
Datastream admite las siguientes codificaciones de grupo de caracteres para las bases de datos de Oracle:
AL16UTF16AL32UTF8IN8ISCIIIW8ISO8859P8JA16SJISJA16SJISTILDEKO16MSWIN949US7ASCIIUTF8WE8ISO8859P1WE8ISO8859P9WE8ISO8859P15WE8MSWIN1252ZHT16BIG5
Datastream no admite la replicación de valores de fecha cero. Estas fechas se reemplazan por valores
NULL.Datastream no admite la conectividad directa a bases de datos con la función de nombre de acceso de cliente único (SCAN) en entornos de Oracle Real Application Clusters (RAC). Para obtener información sobre las posibles soluciones, consulta Comportamiento y limitaciones de la fuente de Oracle.
Si la fuente es una base de datos en espera de Oracle Active Data Guard, Datastream solo admite la encriptación a nivel de espacio de tabla y no admite la encriptación a nivel de columna.
Limitaciones adicionales cuando se usa el lector binario
El método de lector binario de alto rendimiento solo se admite para Oracle 12c y versiones posteriores. Para Oracle 11g y versiones anteriores, debes usar LogMiner.
El lector binario no admite las siguientes funciones:
- Encriptación de base de datos transparente (TDE)
- Compresión híbrida en columnas
- Protege tus archivos
- ASM no es compatible con las fuentes de Amazon RDS.
- El método de CDC de lector binario no admite Oracle 11g ni versiones anteriores.
¿Qué sigue?
- Aprende a configurar una fuente de Oracle para usarla con Datastream.