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.
El servicio CDC de Oracle es un servicio de Windows que ejecuta el programa xdbcdcsvc.exe. El servicio CDC de Oracle se puede configurar para ejecutar varios servicios de Windows en el mismo equipo, cada uno con un nombre de servicio de Windows diferente. La creación de varios servicios de Windows CDC de Oracle en un único equipo se realiza a menudo para lograr una mejor separación entre ellos o cuando cada uno necesita trabajar con una instancia de SQL Server diferente.
Se crea un servicio CDC de Oracle mediante la consola de configuración del servicio CDC de Oracle o se define a través de la interfaz de línea de comandos integrada en el programa xdbcdcsvc.exe. En ambos casos, cada servicio CDC de Oracle creado está asociado a una única instancia de SQL Server (que puede estar agrupada o reflejada con la configuración alwaysOn ) y la información de conexión (conexión de cadena y credenciales de acceso) forma parte de la configuración del servicio.
Cuando se inicia un servicio CDC de Oracle, intenta conectarse a la instancia de SQL Server con la que está asociado, obtener la lista de instancias CDC de Oracle que necesita controlar y realiza una validación inicial del entorno. Los errores durante el inicio del servicio y cualquier información de inicio o detención siempre se escriben en el registro de eventos de la aplicación de Windows. Cuando se establece una conexión a SQL Server, todos los errores y mensajes de información se escriben en la tabla dbo.xdbcdc_trace de la base de datos MSXDBCDC de la instancia de SQL Server. Una de las comprobaciones realizadas durante el inicio es la comprobación de que ningún otro servicio CDC de Oracle con el mismo nombre funciona actualmente. Si un servicio con el mismo nombre está conectado actualmente desde otro equipo, el servicio CDC de Oracle entra en un bucle de espera, esperando a que el otro servicio se desconecte antes de continuar con el trabajo CDC de Oracle.
Cuando el servicio CDC de Oracle pasa todas las comprobaciones de inicio, comprueba la dbo.xdbcdc_databases tabla de la base de datos MSXDBCDC para las instancias CDC de Oracle habilitadas. Para cada instancia CDC de Oracle habilitada, el servicio inicia un subproceso para controlar esa instancia CDC de Oracle.
Cuando se inicia una instancia CDC de Oracle, accede a la base de datos CDC de SQL Server con el mismo nombre que la instancia CDC y recupera su estado de la ejecución anterior. También comprueba que todo se está ejecutando correctamente. A continuación, reanuda el procesamiento de los cambios; Leer los registros de transacciones de Oracle y escribir cambios en la base de datos CDC.
El servicio CDC de Oracle supervisa periódicamente la tabla dbo.xdbcdc_tables de la base de datos MSXDBCDC para determinar si se han producido cambios de configuración en cualquiera de las configuraciones de la instancia CDC de Oracle. Si se encuentra un cambio, el servicio CDC de Oracle notifica a la instancia CDC de Oracle que debe comprobar si hay cambios en su configuración. La mayoría de los cambios de configuración, como agregar y quitar instancias de captura, se pueden aplicar mientras la instancia CDC de Oracle está habilitada, otras requieren que se reinicie la instancia CDC de Oracle.
Al usar la consola del Diseñador CDC de Oracle, los cambios se detectan automáticamente. Al actualizar la configuración CDC de Oracle directamente mediante SQL, se debe llamar al siguiente procedimiento para que el servicio CDC de Oracle observe el cambio de configuración:
DECLARE @dbname nvarchar(128) = 'HRcdc'
EXECUTE [MSXDBCDC].[dbo].[xdbcdc_update_config_version] @dbname
GO
El proceso de instancia CDC de Oracle actualiza su estado en la tabla del sistema cdc.xdbcdc_state y escribe información de error en la tabla cdc.xdbcdc_trace . La tabla xdbcdc_state es útil para supervisar el estado de la instancia CDC de Oracle. Proporciona el estado de fecha up-to, varios contadores (como el número de cambios extraídos de Oracle, el número de cambios almacenados en SQL Server, el número de transacciones confirmadas y registradas y el número actual de transacciones en curso) y la indicación de latencia.
La configuración de la instancia CDC de Oracle se guarda en la tabla cdc.xdbcdc_config , que es la tabla con la que funciona la consola del Diseñador CDC de Oracle. Dado que toda la configuración de una instancia CDC de Oracle se encuentra en la instancia de SQL Server de destino y las bases de datos CDC, es posible crear scripts de implementación de SQL Server para una instancia CDC de Oracle. Esto se hace mediante la configuración del servicio CDC de Oracle y las consolas del Diseñador CDC de Oracle.
Consideraciones de seguridad
A continuación se describen los requisitos de seguridad necesarios para trabajar con el servicio CDC para Oracle.
Protección de datos de Oracle de origen
El servicio CDC de Oracle no requiere acceso a los datos de origen de Oracle y está protegido asegurándose de que las credenciales de minería de registros no conceden permiso SELECT en las tablas oracle del cliente.
Protección de los datos de cambio de origen de Oracle
El servicio CDC de Oracle se proporciona con credenciales de minería de registros que permiten al servicio capturar los cambios realizados en cualquier tabla de la base de datos de Oracle. Los datos modificados no tienen los permisos de acceso pormenorizados que tienen las tablas normales, por lo que el acceso a los datos modificados omite los controles integrados de acceso a datos de Oracle.
Las tablas de Oracle de origen capturadas tienen tablas reflejadas vacías con el mismo esquema y nombre de tabla en la base de datos CDC. Los datos capturados se almacenan en instancias de captura de SQL Server y ofrecen la misma protección que se proporciona para los cambios capturados de la base de datos de SQL Server. Para obtener acceso a los datos modificados asociados a una instancia de captura, se debe conceder al usuario acceso selecto a todas las columnas capturadas de la tabla reflejada asociada. 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 público, aunque el acceso a los metadatos devueltos normalmente también se bloquea mediante el uso de acceso selecto a las tablas de origen subyacentes y la pertenencia a cualquier rol de acceso definido.
Esto significa que los usuarios con el rol fijo de servidor sysadmin o el rol fijo de base de datos db_owner tienen (de forma predeterminada) acceso total a los datos capturados, y se puede conceder más acceso mediante roles de filtro o concediendo acceso de selección a las columnas capturadas.
Protección de las credenciales de origen para la minería de registros de Oracle
La configuración del servicio CDC de Oracle, almacenada en la base de datos CDC (en la tabla cdc.xdbcdc_config) incluye el nombre de usuario de minería de registros y su contraseña asociada.
La contraseña de minería de datos de registros se almacena cifrada mediante una clave asimétrica con el nombre xdbcdc_asym_key fijo que se crea automáticamente con el siguiente comando:
USE [<cdc-database-name>]
CREATE ASYMMETRIC KEY xdbcdc_asym_key
WITH ALGORITHM = RSA_1024
ENCRYPTION BY PASSWORD = '<cdc-database-name><asym-key-password>'
Si se usa un algoritmo diferente, esta clave se puede quitar y se puede crear una nueva por el mismo nombre y cifrada por la misma contraseña.
La contraseña de clave asimétrica es la contraseña maestra que se guarda en el Registro en la ruta HKLM\Software\Microsoft\XDBCDCSVC\. Esta clave solo es accesible para los administradores locales y para la cuenta de servicio cdc de Oracle para Windows. La clave contiene un valor binario cifrado AsymmetricKeyPassword que almacenó la contraseña de clave asimétrica. Se requiere acceso a esta clave del Registro para poder acceder a las credenciales de minería de registros de Oracle.
Para usar la cláusula ENCRYPTION BY PASSWORD, la contraseña debe cumplir los requisitos de directiva de contraseñas de Windows para el equipo que ejecuta la instancia de SQL Server. Para ello, seleccione la contraseña de clave asimétrica según esa directiva.
Si se pierde la contraseña de clave asimétrica, las credenciales de minería de registros para cada una de las instancias CDC de Oracle deben especificarse de nuevo en el Diseñador de servicios CDC de Oracle.
La clave asimétrica se crea automáticamente en la base de datos CDC cuando el servicio CDC detecta una base de datos CDC de instancia de Oracle que no tiene esta clave asimétrica o cuando la clave existe, pero la contraseña no coincide.
Cuenta de servicio de Windows para el servicio CDC de Oracle
La cuenta de servicio usada con el servicio de Windows CDC de Oracle no requiere privilegios adicionales. Esta cuenta debe poder usar la API de Oracle Native Client y la API ODBC de SQL Server Native Client. También debe poder acceder a la clave de configuración del servicio en el Registro (esta consola de configuración del servicio CDC configura la ACL para eso).
En esta sección
Permisos necesarios de conexión de SQL Server para el servicio CDC
Roles de usuario del servicio de captura de datos modificados para Oracle de Attunity
Véase también
Administración de un servicio CDC local
Administración de un servicio CDC de Oracle