Compartir a través de


Trabajar con el servicio CDC de Oracle

Importante

La captura de datos modificados para Oracle de Attunity está en desuso ahora. Para obtener información, consulte el anuncio.

En esta sección se describen algunos conceptos importantes del servicio CDC de Oracle. Los conceptos incluidos en esta sección son:

  • Base de datos MSXDBCDC

    En esta sección se describen las tablas que se incluyen en esta base de datos y cómo es importante para CDC.

  • Bases de datos CDC

    En esta sección se proporciona una breve descripción de las bases de datos CDC. Estas bases de datos se crean mediante la consola del Diseñador CDC de Oracle. Consulte la documentación incluida en la instalación de la consola del diseñador CDC para obtener más información sobre las bases de datos CDC.

  • Uso de la línea de comandos para configurar el servicio CDC

    En esta sección se describen los comandos de línea de comandos que se pueden usar para configurar el servicio CDC de Oracle.

Base de datos MSXDBCDC

La base de datos MSXDBCDC (Microsoft External-Database CDC) es una base de datos especial necesaria al usar el servicio CDC para Oracle con una instancia de SQL Server.

No se puede cambiar el nombre de esta base de datos. Si existe una base de datos denominada MSXDBCDC en la instancia de SQL Server host y contiene tablas distintas de las definidas por el servicio CDC para Oracle, no se puede usar la instancia de SQL Server host.

Los usos principales de esta base de datos son:

  • Actúa como registro de Los servicios CDC de Oracle asociados a una instancia de SQL Server. Esta información se usa para los componentes de diseño y configuración del servicio y para admitir la coordinación de varios servicios CDC con el mismo nombre en distintos nodos sobre los que uno es el activo.

  • Actúa como registro de las instancias CDC de Oracle contenidas en una instancia de SQL Server, el servicio CDC que controla cada instancia y la versión de configuración que usa cada una. Esta información es equivalente a la columna is_cdc_enabled de la tabla sys.databases de la base de datos maestra. El servicio CDC examina periódicamente la tabla de dbo.xdbcdc_databases para identificar los cambios realizados en la configuración CDC o en la lista de instancias capturadas.

  • Contiene procedimientos almacenados que son propiedad de sysadmin, que ayudan a crear y mantener instancias CDC. Son similares a los procedimientos del sistema que se usan para la implementación de la característica CDC de SQL Server.

Creación de la base de datos MSXDBCDC

Se debe crear una base de datos MSXDBCDC para poder definir el servicio CDC de Oracle. Solo puede crear una base de datos MSXDBCDC en una instancia de SQL Server. La base de datos MSXDBCDC se crea al preparar una base de datos de SQL Server para CDC de Oracle. Esto se puede hacer mediante la consola de configuración del servicio CDC de Oracle o mediante la ejecución de un script de creación generado por la consola de configuración del servicio CDC.

El propietario de esta base de datos es el administrador del servicio CDC de Oracle, que puede controlar todas las instancias CDC de Oracle hospedadas en la instancia de SQL Server.

Consulte también:

Preparación de SQL Server para CDC

Tablas de base de datos MSXDBCDC

En esta sección se describen las tablas siguientes en la base de datos MSXDBCDC.

dbo.xdbcdc_trace

En esta tabla se almacena información de seguimiento del servicio CDC de Oracle. La información almacenada en esta tabla incluye cambios de estado importantes y registros de seguimiento.

El servicio CDC de Oracle escribe registros de errores y algunos de los registros de información en el registro de eventos de Windows y en la tabla de seguimiento. En algunos casos, es posible que la tabla de seguimiento no sea accesible, en cuyo caso se puede acceder a la información de error desde el registro de eventos.

A continuación se describen los elementos que se incluyen en la tabla dbo.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 El código de subestado que utiliza la tabla de estado.
mensaje_de_estado El mensaje de estado que utiliza la tabla de estado.
fuente Nombre del componente CDC de Oracle que generó el registro de seguimiento.
datos_de_texto Datos de texto adicionales para casos en los que el registro de error o seguimiento contiene una carga textual.
datos binarios Datos binarios adicionales para casos en los que el registro de error o seguimiento contiene una carga binaria.

La instancia CDC de Oracle eliminará las filas antiguas de la tabla de seguimiento según la directiva de retención de tablas de cambios.

dbo.xdbcdc_databases

Esta tabla contiene los nombres del servicio CDC para las bases de datos CDC de Oracle en la instancia actual de SQL Server. Cada base de datos corresponde a una instancia CDC de Oracle. El servicio CDC de Oracle usa esta tabla para determinar qué instancias se van a iniciar o detener y qué instancias se van a volver a configurar.

En la tabla siguiente se describen los elementos que se incluyen en la tabla dbo.xdbcdc_databases .

Elemento Descripción
nombre Nombre de la base de datos de Oracle en la instancia de SQL Server.
versión_de_configuración Marca de tiempo (UTC) para el último cambio en la base de datos CDC de la tabla correspondiente xdbcdc_config o la marca de tiempo (UTC) para la fila actual en esta tabla.

El desencadenador UPDATE aplica un valor de GETUTCDATE() para este elemento. config_version permite al servicio CDC identificar la instancia CDC que debe comprobarse para el cambio de configuración o para habilitar o deshabilitar.
cdc_service_name Este elemento determina qué servicio CDC de Oracle controla la base de datos de Oracle seleccionada.
Habilitado Indica si la instancia CDC de Oracle está activa (1) o deshabilitada (0). Cuando el servicio CDC de Oracle inicia solo se inician las instancias marcadas como enable (1).

Nota: Una instancia CDC de Oracle se puede deshabilitar debido a un error que no se puede reintentar. En este caso, la instancia debe reiniciarse manualmente después de resolver el error.

dbo.xdbcdc_services

En esta tabla se enumeran los servicios CDC asociados a la instancia de SQL Server host. La consola del diseñador CDC usa esta tabla para determinar la lista de servicios CDC configurados para la instancia local de SQL Server. También lo usa el servicio CDC para asegurarse de que solo un servicio de Windows en ejecución controla un nombre de servicio CDC de Oracle determinado.

A continuación se describen los elementos de estado de captura que se incluyen en la tabla dbo.xdbcdc_databases .

Elemento Descripción
cdc_service_name Nombre del servicio CDC de Oracle (el nombre del servicio de Windows).
cdc_service_sql_login Nombre del inicio de sesión de SQL Server usado por el servicio CDC de Oracle para conectarse a la instancia de SQL Server. Se crea un nuevo usuario de SQL denominado cdc_service, que se asocia con este nombre de inicio de sesión y luego se agrega como miembro de los roles fijos de base de datos db_ddladmin, db_datareader y db_datawriter para cada base de datos de CDC gestionada por este servicio.
conteo_de_referencias Este elemento cuenta el número de máquinas donde está instalado el mismo servicio CDC de Oracle. Se incrementa con cada adición de un servicio CDC de Oracle con el mismo nombre, y se disminuye cuando se elimina dicho servicio. Cuando el contador alcanza cero, se elimina esta fila.
nodo_de_servicio_activo Nombre del nodo de Windows que controla actualmente el servicio CDC. Cuando el servicio se detiene correctamente, esta columna se establece en NULL, lo que indica que ya no hay un servicio activo.
latido_del_servicio_activo Este elemento realiza un seguimiento del servicio CDC actual para determinar si todavía está activo.

Este ítem se actualiza a intervalos regulares con la marca de tiempo UTC de la base de datos actual para el servicio CDC activo. El intervalo predeterminado es de 30 segundos, pero el intervalo es configurable.

Cuando un servicio CDC pendiente detecta que el latido no se actualizó después de que se haya superado el intervalo configurado, el servicio pendiente intenta asumir el rol de servicio CDC activo.
opciones Este elemento especifica las opciones secundarias, como el seguimiento o el ajuste. Se escribe en forma de nombre[=valor][; ]. La cadena de opciones usa la misma semántica que la cadena de conexión ODBC. Si la opción es Boolean (con un valor de sí/no), el valor solo puede incluir el nombre.

trace tiene los siguientes valores posibles.

verdadero

en

falso

apagado

<nombre> de clase[,nombre de> clase]



El valor predeterminado es false.

service_heartbeat_interval es el intervalo de tiempo (en segundos) para que el servicio actualice la columna active_service_heartbeat. El valor predeterminado es 30. El valor máximo es 3600.

service_config_polling_interval es el intervalo de sondeo (en segundos) para que el servicio CDC compruebe si hay cambios de configuración. El valor predeterminado es 30. El valor máximo es 3600.

sql_command_timeout es el tiempo de espera del comando que funciona con SQL Server. El valor predeterminado es 1. El valor máximo es 3600.

Procedimientos almacenados de la base de datos MSXDBCDC

En esta sección se describen los siguientes procedimientos almacenados en la base de datos MSXDBCDC.

dbo.xcbcdc_reset_db(Nombre de la base de datos)

Este procedimiento borra los datos de una instancia CDC de Oracle. Se usa:

  • Para reiniciar la captura de datos sin tener en cuenta los datos anteriores, por ejemplo, después de la recuperación de la base de datos de origen o después de la inactividad donde algunos de los registros de transacciones de Oracle no están disponibles.

  • Cuando hay corrupción en el estado CDC (específicamente en los datos cdc.*tables).

El procedimiento dbo.xcbcdc_reset_db realiza las siguientes tareas:

  • Detiene la instancia CDC (si está activa).

  • Trunca las tablas de cambios, la tabla cdc_lsn_mapping y la tabla cdc_ddl_history.

  • Borra la tabla cdc_xdbcdc_state .

  • Borra la columna start_lsn para cada fila del cdc_change_table.

Para usar el procedimiento dbo.xcbcdc_reset_db, el usuario debe ser miembro del rol db_owner para la base de datos de instancia CDC que se está nombrando, o bien miembro del rol fijo de servidor sysadmin o serveradmin.

Para obtener más información sobre las tablas CDC, vea Las bases de datos CDC en el sistema de ayuda en la consola del diseñador CDC.

dbo.xdbcdc_disable_db(dbname)

El procedimiento dbo.xcbcdc_disable_db realiza la siguiente tarea:

  • Quita la entrada de la base de datos CDC seleccionada en la tabla MSXDBCDC.xdbcdc_databases.

Para usar el procedimiento dbo.xcbcdc_disable_db, el usuario debe ser miembro del rol fijo de base de datos db_owner para la instancia CDC nombrada o miembro del rol fijo del servidor sysadmin o serveradmin.

Para obtener más información sobre las tablas CDC, vea Las bases de datos CDC en el sistema de ayuda en la consola del diseñador CDC.

dbo.xcbcdc_add_service(svcname,sqlusr)

El procedimiento dbo.xcbcdc_add_service agrega una entrada a la tabla MSXDBCDC.xdbcdc_services y agrega un incremento de uno a la columna ref_count para el nombre del servicio en la tabla MSXDBCDC.xdbcdc_services . Cuando el ref_count es 0, elimina la fila.

Para utilizar el nombre del servicio dbo.xcbcdc_add_service< en el procedimiento de >nombre de usuario, el usuario debe ser miembro del rol de base de datos db_owner para la base de datos de instancia CDC que se menciona, o ser miembro del rol fijo de servidor sysadmin o serveradmin.

dbo.xdbcdc_start(dbname)

El procedimiento dbo.xdbcdc_start envía una solicitud de inicio al servicio CDC que controla la instancia CDC seleccionada para iniciar el procesamiento de cambios.

Para usar el procedimiento dbo.xcdcdc_start , el usuario debe ser miembro del rol de base de datos de db_owner para la base de datos CDC o ser miembro de los roles sysadmin o serveradmin para la instancia de SQL Server.

dbo.xdbcdc_stop(nombre_de_base_de_datos)

El procedimiento dbo.xdbcdc_stop envía una solicitud de detención al servicio CDC que controla la instancia CDC seleccionada para detener el procesamiento de cambios.

Para usar el procedimiento dbo.xcdcdc_stop , el usuario debe ser miembro del rol de base de datos de db_owner para la base de datos CDC o ser miembro de los roles sysadmin o serveradmin para la instancia de SQL Server.

Bases de datos CDC

Cada instancia CDC de Oracle usada en un servicio CDC está asociada a una base de datos específica de SQL Server denominada base de datos CDC. Esta base de datos de SQL Server se hospeda en la instancia de SQL Server asociada al servicio CDC de Oracle.

La base de datos CDC contiene un esquema CDC especial. El servicio CDC de Oracle usa este esquema con nombres de tabla con el prefijo xdbcdc_. Este esquema se usa con fines de seguridad y coherencia.

Tanto la instancia CDC de Oracle como las bases de datos CDC se crean mediante la consola del diseñador CDC de Oracle. Para obtener más información sobre las bases de datos CDC, consulte la documentación incluida con la instalación de la consola del Diseñador CDC de Oracle.

Uso de la línea de comandos para configurar el servicio CDC

Puede operar el programa servicio CDC de Oracle (xdbcdcsvc.exe) desde la línea de comandos. El programa de servicio CDC es un archivo ejecutable nativo de Windows de 32 bits/64 bits.

Consulte también

Cómo usar la interfaz de Command-Line del servicio CDC

Comandos del programa de servicio

En la sección se describen los siguientes comandos que se usan para configurar el servicio CDC.

Configuración

Use Config para actualizar una configuración del servicio CDC de Oracle desde un script. El comando se puede usar para actualizar solo partes específicas de la configuración del servicio CDC (por ejemplo, solo la cadena de conexión sin conocer la contraseña de clave asimétrica). Un administrador de equipos debe ejecutar el comando. A continuación se muestra un ejemplo del Config comando .

"<path>xdbcdcsvc.exe" config  
     <cdc-service-name>  
     [connect= <sql-server-connection-string>]  
     [key= <asym-key-password>]  
     [svcacct= <windows-account> <windows-password>]  
     [sqlacct= <sql-username> <sql-password>]  
  

Donde:

cdc-service-name es el nombre del servicio CDC que se va a actualizar. Es un parámetro obligatorio.

sql-server-connection-string es la cadena de conexión que se va a actualizar. Si la cadena de conexión contiene espacios o comillas, debe encapsularse entre comillas dobles ("). Las comillas dobles se duplican para escapar las comillas incrustadas.

asym-key-password es la contraseña que se va a actualizar.

windows-account, windows-password son las credenciales de la cuenta de Windows para el servicio que se está actualizando.

sql-username, sql-password son las credenciales de autenticación de SQL Server que se actualizan. Si sqlacct tiene un nombre de usuario vacío y una contraseña vacía, el servicio CDC de Oracle se conecta a SQL Server mediante la autenticación de Windows.

Nota: Cualquier parámetro que contenga espacios o comillas dobles debe ajustarse con comillas dobles ("). Las comillas dobles incrustadas deben duplicarse (por ejemplo, para usar "A#B" D como contraseña, escriba ""A#B"" D").

Crear

Use Create para crear un servicio CDC de Oracle a partir de un script. Un administrador de equipos debe ejecutar el comando. A continuación se muestra un ejemplo del Create comando :

"<path>xdbcdcsvc.exe" create  
     <cdc-service-name>  
     [connect= "<sql-server-connection-string>"]  
     [key= <asym-key-password>]  
     [svcacct <windows-account> <windows-password>]  
     [sqlacct <sql-username> <sql-password>]  

Donde:

cdc-service-name es el nombre del servicio recién creado. Si ya hay un servicio con este nombre, el programa devuelve un error. No debe usar nombres largos ni nombres con espacios. Los caracteres "/" y "\" no son caracteres válidos en un nombre de servicio. Es un parámetro obligatorio.

sql-server-connection-string es la cadena de conexión que se va a usar para conectarse a la instancia de SQL Server asociada al nuevo servicio CDC de Oracle.

asym-key-password es la contraseña que protege la clave asimétrica utilizada para almacenar las credenciales de minería de registros de la base de datos de origen.

windows-account, windows-password son el nombre de la cuenta y la contraseña asociadas al servicio CDC de Oracle que se va a crear.

sql-username, sql-password son el nombre de la cuenta de SQL Server y la contraseña que se usan para conectarse a la instancia de SQL Server. Si ambos parámetros están vacíos, el servicio CDC para Oracle se conecta a SQL Server mediante la autenticación de Windows.

Nota: Cualquier parámetro que contenga espacios o comillas dobles debe ajustarse con comillas dobles ("). Las comillas dobles incrustadas deben duplicarse (por ejemplo, para usar "A#B" D como contraseña, escriba ""A#B"" D".

Borrar

Use Delete para eliminar limpiamente el servicio CDC de Oracle de un script. Un administrador de equipos debe ejecutar este comando. A continuación se muestra un ejemplo del Delete comando .

"<path>xdbcdcsvc.exe" delete  
    <cdc-service-name>  
  

Donde:

cdc-service-name es el nombre del servicio CDC que se va a eliminar.

Nota: Cualquier parámetro que contenga espacios o comillas dobles debe ajustarse con comillas dobles ("). Las comillas dobles incrustadas deben duplicarse (por ejemplo, para usar "A#B" D como contraseña, escriba ""A#B"" D").

Véase también

Cómo usar la interfaz de Command-Line del servicio CDC
Preparación de SQL Server para CDC