Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
La captura de datos modificados para Oracle de Attunity está en desuso ahora. Para obtener información, consulte el anuncio.
Una instancia CDC de Oracle está asociada a una base de datos de SQL Server con el mismo nombre en la instancia de SQL Server de destino. Esta base de datos se denomina base de datos CDC de Oracle (o la base de datos CDC).
La base de datos CDC se crea y configura mediante la consola del Diseñador CDC de Oracle y contiene los siguientes elementos:
Esquema
cdccreado habilitando la base de datos para CDC de SQL Server.Conjunto de tablas de cdc.xdbcdc_xxxx usadas por la instancia CDC de Oracle.
Conjunto de tablas reflejo vacías con las definiciones de las tablas capturadas en la base de datos Oracle de origen.
Un conjunto de tablas de cambios y funciones de acceso a cambios, generadas por el mecanismo CDC del servidor SQL, que son idénticas a las usadas en los CDC normales del servidor SQL, que no son de Oracle.
El cdc esquema inicialmente solo es accesible para los miembros del rol fijo de base de datos dbowner. El acceso a las tablas de cambios y las funciones de cambio viene determinado por el mismo modelo de seguridad que el CDC de SQL Server. Para obtener más información sobre el modelo de seguridad, vea Modelo de seguridad.
Creación de la base de datos CDC
En la mayoría de los casos, la base de datos CDC se crea mediante la consola del diseñador CDC, pero también se puede crear con un script de implementación CDC que se genera mediante la consola del diseñador CDC. El administrador del sistema de SQL Server puede cambiar la configuración de la base de datos si es necesario (para elementos como el almacenamiento, la seguridad o la disponibilidad).
Para obtener más información sobre el uso de la consola del diseñador CDC para crear las tablas de base de datos y los scripts necesarios, vea Usar el Asistente para nueva instancia.
Roles de usuario de base de datos CDC
Cuando se crea y habilita una base de datos CDC para CDC, se crea un usuario de base de datos llamado cdc_service en la base de datos CDC y está asociado al inicio de sesión de SQL Server con el que se configuró el servicio CDC de Oracle. Este usuario se convierte en miembro de los roles de base de datos de db_datareader, db_datawriter y db_ddladmin . Si el inicio de sesión de SQL Server también está asociado con el usuario dbo, no se crea el cdc_service.
Esta asignación de roles permite al servicio CDC de Oracle actualizar las tablas en el cdc esquema con datos capturados y con información de control.
Cuando se crea una base de datos CDC y se configuran las tablas de origen Oracle para CDC, el propietario de la base de datos CDC puede otorgar permisos SELECT sobre las tablas reflejadas y definir roles de control de acceso CDC en SQL Server para gestionar quién accede a los datos de cambios.
Mesas Espejo
Para cada tabla capturada, <nombre de esquema>.<nombre de tabla>, en la base de datos de origen de Oracle, se crea una tabla vacía similar en la base de datos CDC, con el mismo esquema y nombre de tabla. No se pueden capturar tablas de origen de Oracle con el nombre del esquema cdc (no distingue mayúsculas de minúsculas) porque el esquema cdc de SQL Server está reservado para el CDC de SQL Server.
Las tablas reflejadas están vacías; no se almacenan datos en ellos. Se usan para habilitar la infraestructura CDC estándar de SQL Server que usa la instancia CDC de Oracle. Para evitar que los datos se inserte o actualicen en las tablas reflejadas, se deniegan todas las operaciones UPDATE, DELETE e INSERT para PUBLIC. Esto garantiza que no se puedan modificar.
Acceso a datos modificados
Debido al modelo de seguridad de SQL Server usado para obtener acceso a los datos modificados asociados a una instancia de captura, el usuario debe tener select acceso a todas las columnas capturadas de la tabla reflejada asociada (los permisos de acceso a las tablas originales de Oracle no proporcionan acceso a las tablas de cambios en SQL Server). Para obtener información sobre el modelo de seguridad de SQL Server, vea Modelo de seguridad.
Además, si se especifica un rol de acceso cuando se crea la instancia de captura, el autor de la llamada también debe ser miembro del rol de acceso especificado. Otras funciones generales de captura de datos modificados para acceder a los metadatos son accesibles para todos los usuarios de la base de datos a través del rol PUBLIC, aunque el acceso a los metadatos devueltos suele estar limitado mediante el uso de acceso selecto a las tablas de origen subyacentes y la pertenencia a cualquier rol de acceso definido.
Los datos modificados se pueden leer llamando a funciones especiales basadas en tablas generadas por el componente CDC de SQL Server cuando se crea una instancia de captura. Para obtener más información sobre esta función, vea Funciones de captura de datos modificados (Transact-SQL).
El acceso a los datos CDC a través del componente origen CDC de Integration Services está sujeto a las mismas reglas.
Tablas de base de datos CDC
En esta sección se describen las tablas siguientes en la base de datos CDC.
- Tablas de cambios (_CT)
- cdc.lsn_time_mapping
- cdc.xdbcdc_config
- cdc.xdbcdc_state
- cdc.xdbcdc_trace
- cdc.xdbcdc_staged_transactions
Tablas de cambios (_CT)
Las tablas de cambios se crean a partir de las tablas espejo. Contienen los datos modificados que se capturan de la base de datos de Oracle. Las tablas se denominan según la convención siguiente:
[cdc]. [<instancia-de-captura>_CT]
Cuando la captura está habilitada inicialmente para la tabla <schema-name>.<table-name>, el nombre de instancia de captura predeterminado es <schema-name>_<table-name>. Por ejemplo, el nombre de instancia de captura predeterminado para la tabla Oracle HR.EMPLOYEES es HR_EMPLOYEES y la tabla de cambios asociada es [cdc]. [HR_EMPLOYEES_CT]
Las tablas de captura son escritas por la instancia CDC de Oracle. Se leen mediante funciones especiales con valores de tabla generados por SQL Server cuando se crea la instancia de captura. Por ejemplo: fn_cdc_get_all_changes_HR_EMPLOYEES. Para obtener más información sobre estas funciones CDC, vea Funciones de captura de datos modificados (Transact-SQL).
cdc.lsn_time_mapping
La tabla [cdc].[lsn_time_mapping] se genera mediante el componente CDC de SQL Server. Su uso en el caso de CDC de Oracle es diferente de su uso normal.
Para los CDC de Oracle, los valores LSN almacenados en esta tabla se basan en el valor del número de cambio del sistema (SCN) de Oracle asociado al cambio. Los primeros 6 bytes del valor LSN son el número original de SCN de Oracle.
Además, cuando se usa el CDC de Oracle, las columnas de hora (tran_begin_time y tran_end_time) almacenan la hora UTC del cambio en lugar de la hora local, como sucede con los CDC normales de SQL Server. Esto garantiza que los cambios en el horario de verano no afecten a los datos almacenados en el lsn_time_mapping.
cdc.xdbcdc_config
Esta tabla contiene los datos de configuración de la instancia CDC de Oracle. Se actualiza usando la consola del diseñador CDC. Esta tabla solo tiene una fila.
En la tabla siguiente se describen las columnas de la tabla cdc.xdbcdc_config .
| Elemento | Descripción |
|---|---|
| Versión | Esto lleva un registro de la versión de la configuración de la instancia CDC. Se actualiza cada vez que se actualiza la tabla y cada vez que se agrega una nueva instancia de captura o se quita una instancia de captura existente. |
| cadena_de_conexión | Una cadena de conexión de Oracle. Un ejemplo básico es:<server>:<port>/<instance> (por ejemplo, erp.contoso.com:1521/orcl).La cadena de conexión también puede especificar un descriptor de conexión de Oracle Net, por ejemplo, (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp) (HOST=erp.contoso.com) (PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=orcl))).Si usa un servidor de directorios o tnsnames, la cadena de conexión puede ser el nombre de la conexión. Para obtener información sobre las cadenas de conexión de Oracle, consulte la Guía del programador de la interfaz de llamada, que proporciona información detallada sobre las cadenas de conexión de base de datos de Oracle para el cliente instantáneo de Oracle que usa el servicio CDC de Oracle. |
| usar_autenticación_de_Windows | Valor booleano que puede ser: 0: Se proporciona un nombre de usuario y una contraseña de Oracle para la autenticación (el valor predeterminado) 1: La autenticación de Windows se usa para conectarse a la base de datos de Oracle. Puede usar esta opción solo si la base de datos de Oracle está configurada para trabajar con la autenticación de Windows. |
| nombre de usuario | El nombre del usuario de la base de datos Oracle para la extracción de registros. Esto solo es obligatorio si use_windows_authentication = 0. |
| contraseña | Contraseña del usuario de minería de registros de la base de datos Oracle. Esto solo es obligatorio si use_windows_authentication = 0. |
| tiempo_de_espera_de_preparación_de_transacción | El tiempo, en segundos, que una transacción de Oracle no confirmada se mantiene en memoria antes de ser escrita en la tabla cdc.xdbcdc_staged_transactions. El valor predeterminado es 120 segundos. |
| límite_de_memoria | Límite de la cantidad de memoria, en Mb, que se puede usar para almacenar en caché datos. Una configuración inferior hace que se escriba más transacción en la tabla cdc.xdbcdc_staged_transactions . El valor predeterminado es 50 Mb. |
| opciones | Lista de opciones en forma de nombre[=valor][; ] : se usa para especificar opciones secundarias (por ejemplo, seguimiento, ajuste). Consulte la tabla siguiente para obtener una descripción de las opciones disponibles. |
La siguiente tabla describe las opciones disponibles.
| Nombre | Predeterminado | Minuto | Máx. | estática | Descripción |
|---|---|---|---|---|---|
| seguimiento | Falso | - | - | Falso | Los valores disponibles son: Cierto Falso en desactivado |
| intervalo_actualización_estado_cdc | 10 | 1 | 120 | Falso | Tamaño (en Kbytes) de fragmentos de memoria asignados para una transacción (una transacción puede asignar más de un fragmento). Consulte la columna memory_limit en la tabla cdc.xdbcdc_config. |
| transacciones_max_objetivo_loteadas | 100 | 1 | 1 000 | Cierto | Número máximo de transacciones de Oracle que se pueden procesar en una sola transacción en las tablas CT de SQL Server. |
| Parámetro target_idle_lsn_update_interval | 10 | 0 | 1 | Falso | Intervalo (en segundos) para actualizar la tabla lsn_time_mapping cuando las tablas capturadas no tienen actividad. |
| período_de_retención_de_trazas | veinticuatro | 1 | 24*31 | Falso | Cantidad de tiempo (en horas para mantener los mensajes en la tabla de seguimiento). |
| sql_reconnect_interval | 2 | 2 | tres mil seiscientos | Falso | Cantidad de tiempo (en segundos) que se esperará antes de volver a conectarse a SQL Server. Este intervalo se usa además del tiempo de espera de conexión del cliente de SQL Server. |
| límite_de_reconexión_sql | -1 | -1 | -1 | Falso | Número máximo de reconexiones de SQL Server. El -1 predeterminado significa que el proceso intenta volver a conectarse hasta que se detiene. |
| límite_de_reinicio_cdc | 6 | -1 | tres mil seiscientos | Falso | En la mayoría de los casos, el servicio CDC reinicia automáticamente una instancia CDC terminada anómalamente. Esta propiedad define después de cuántos errores por hora el servicio se detiene para reiniciar la instancia. El valor -1 significa que la instancia debe reiniciarse siempre. El servicio vuelve a reiniciar la instancia después de cualquier actualización de la tabla de configuración. |
| informe_de_memoria_cdc | 0 | 0 | 1 000 | Falso | Si se cambió el valor del parámetro, la instancia CDC imprime su informe de memoria en la tabla de seguimiento. |
| tiempo_de_espera_de_comando_objetivo | 600 | 1 | tres mil seiscientos | Falso | Tiempo de espera de comandos al operar con SQL Server. |
| conjunto_de_caracteres_fuente | - | - | - | Cierto | Se puede establecer en una codificación de Oracle específica que se usará en lugar de la página de códigos de la base de datos de Oracle. Esto puede ser de uso cuando la codificación real que usan los datos de caracteres es diferente de la expresada por la página de códigos de la base de datos de Oracle. |
| intervalo_de_reintento_de_error_de_fuente | 30 | 1 | tres mil seiscientos | Falso | Se utiliza antes de intentar de nuevo en caso de varios errores, como errores de conexión o una falta temporal de sincronización entre las tablas del sistema. |
| source_prefetch_size | 100 | 1 | 10 000 | Cierto | Tamaño del lote de captura previa. |
| source_max_tables_en_consulta | 100 | 1 | 10 000 | Cierto | Número máximo de tablas en la cláusula WHERE antes de cambiar a leer el registro de Oracle sin filtrado de tablas. |
| source_read_retry_interval (intervalo_de_reintento_de_lectura_de_fuente) | 2 | 1 | tres mil seiscientos | Falso | Cantidad de tiempo que el origen espera antes de intentar leer de nuevo los registros de transacciones de Oracle en EOF. |
| intervalo_de_reconexión_de_fuente | 30 | 1 | tres mil seiscientos | Falso | Cuánto tiempo (en segundos) esperar antes de intentar volver a conectarse a la base de datos de origen. |
| límite_de_reconexión_fuente | -1 | -1 | Falso | Número máximo de reconexión de la base de datos de origen. El -1 predeterminado significa que el proceso intenta volver a conectarse hasta que se detiene. | |
| tiempo_de_espera_del_comando_origen | 30 | 1 | tres mil seiscientos | Falso | Tiempo de espera de conexión al trabajar con Oracle. |
| tiempo_de_espera_conexión_fuente | 30 | 1 | tres mil seiscientos | Falso | Tiempo de espera de conexión trabajando con SQL Server. |
| errores_de_datos_de_rastreo | Cierto | - | - | Falso | booleano. True indica que se registran errores de conversión y truncamiento de datos. |
| CDC_detener_en_cambios_de_esquema_críticos | Falso | - | - | Falso | booleano.
True indica que se detiene cuando se detecta un cambio de esquema que rompe la compatibilidad. False indica eliminar la tabla espejo y la instancia de captura. |
| source_oracle_home | - | - | Falso | Se puede establecer en una ruta de acceso principal específica de Oracle o en un nombre de inicio de Oracle que la instancia CDC usará para conectarse a Oracle. |
cdc.xdbcdc_state
Esta tabla contiene información sobre el estado persistente de la instancia CDC de Oracle. El estado de captura se utiliza en escenarios de recuperación, conmutación por error y para la supervisión de salud.
En la siguiente tabla se describen las columnas de cdc.xdbcdc_state.
| Elemento | Descripción |
|---|---|
| estado | Código de estado actual de la instancia CDC de Oracle actual. La situación describe el estado actual para el CDC. |
| sub_estado | Estado de segundo nivel que proporciona información adicional sobre el estado actual. |
| activo | Valor booleano que puede ser: 0: El proceso de instancia CDC de Oracle no está activo. 1: El proceso de instancia CDC de Oracle está activo. |
| error | Valor booleano que puede ser: 0: El proceso de instancia CDC de Oracle no está en estado de error. 1: La instancia CDC de Oracle está en estado de error. |
| mensaje_de_estado | Cadena que proporciona una descripción del error o estado. |
| marca de tiempo | Marca de tiempo con la hora (UTC) a la que se actualizó por última vez el estado de captura. |
| nodo_de_captura_activo | El nombre del host (el host puede ser un nodo de un clúster) que ejecuta actualmente el servicio CDC de Oracle y la instancia CDC de Oracle (que está procesando los registros de transacciones de Oracle). |
| marca_de_tiempo_última_transacción | Marca de tiempo con la hora (UTC) cuando la última transacción escrita en las tablas de cambios. |
| marca_de_tiempo_último_cambio | Marca de tiempo con la hora (UTC) cuando se leyó el registro de cambios más reciente del registro de transacciones de Oracle de origen. Esta marca de tiempo ayuda a identificar la latencia actual del proceso CDC. |
| cabecera_registro_transacción_cn | Número de cambio (CN) más reciente leído del registro de transacciones de Oracle. |
| cola_del_registro_de_transacciones_cn | Número de cambio (CN) en el registro de transacciones de Oracle en el que la instancia CDC de Oracle cambia a en caso de reinicio o recuperación. |
| current_cn | Número de cambio (CN) más reciente que se sabe que está en la base de datos de origen. |
| versión_del_software | La versión interna del servicio CDC de Oracle. |
| transacciones completadas | El número de transacciones procesadas desde que el CDC fue restablecido por última vez. |
| cambios escritos | Número de registros de cambios escritos en las tablas de cambios de SQL Server. |
| leer cambios | Número de registros de cambios leídos del registro de transacciones de Oracle de origen. |
| transacciones planificadas | Número de transacciones actualmente activas almacenadas provisionalmente en la tabla cdc.xdbcdc_staged_transactions . |
cdc.xdbcdc_trace
Esta tabla contiene información sobre el funcionamiento de la instancia CDC. La información almacenada en esta tabla incluye registros de errores, cambios de estado importantes y registros de seguimiento. La información de error también se escribe en el registro de eventos de Windows para asegurarse de que la información está disponible si la tabla de cdc.xcbcdc_trace no está disponible.
En la tabla siguiente se describen las columnas de la tabla cdc.xdbcdc_trace.
| Elemento | Descripción |
|---|---|
| marca de tiempo | Marca de tiempo UTC exacta cuando se escribió el registro de seguimiento. |
| tipo | Contiene uno de los siguientes valores. ERROR INFORMACIÓN HUELLA |
| nodo | Nombre del nodo en el que se escribió el registro. |
| estado | Código de estado que usa la tabla de estado. |
| sub_estado | Código de subestado que usa la tabla de estado. |
| mensaje_de_estado | El mensaje de estado que utiliza la tabla de estado. |
| datos | Datos adicionales para casos en los que el registro de error o seguimiento contiene una carga útil (por ejemplo, un registro de registro dañado). |
cdc.xdbcdc_staged_transactions
Esta tabla almacena registros de cambios para transacciones grandes o de larga duración hasta que se captura el evento de confirmación o de reversión de la transacción. El servicio CDC de Oracle ordena los registros capturados por tiempo de confirmación de transacción y, a continuación, por orden cronológico para cada transacción. Los registros de la misma transacción se almacenan en memoria hasta que finaliza la transacción y, a continuación, se registran en la tabla de cambios de destino o se descartan (en caso de un rollback). Dado que hay una cantidad limitada de memoria disponible, las transacciones grandes se escriben en la tabla cdc.xdbcdc_staged_transactions hasta que se completa la transacción. Las transacciones también se escriben en la tabla de almacenamiento provisional cuando se ejecutan durante mucho tiempo. Por lo tanto, cuando se reinicia la instancia CDC de Oracle, no es necesario volver a leer los cambios antiguos de los registros de transacciones de Oracle.
En la tabla siguiente se describen las columnas de la tabla cdc.xdbcdc_staged_transactions .
| Elemento | Descripción |
|---|---|
| identificador_de_transacción | Identificador único de la transacción que se está preparando. |
| seq_num | Número de fila de xcbcdc_staged_transactions correspondiente a la transacción actual (empezando con 0). |
| data_start_cn | Número de cambio (CN) para el primer cambio en los datos de esta fila. |
| fin_de_datos_cn | Número de cambio (CN) del último cambio en los datos de esta fila. |
| datos | Los cambios en etapas para la transacción en forma de BLOB. |
Véase también
Diseñador de captura de datos modificados para Oracle de Attunity