Migre los datos de una base de datos Oracle autogestionada a una instancia de AnalyticDB for PostgreSQL para construir un almacén de datos en tiempo real.
Requisitos previos
La base de datos Oracle autogestionada debe ser de la versión 9i, 10g, 11g, 12c, 18c o 19c.
La base de datos Oracle autogestionada debe ejecutarse en modo ARCHIVELOG con un periodo de retención de registros de archivo adecuado, y dichos registros deben estar accesibles. Para obtener más información, consulte ARCHIVELOG.
El registro suplementario (Supplemental Logging), que incluye
supplemental_log_data_pkysupplemental_log_data_ui, debe estar habilitado en la base de datos Oracle autogestionada. Para obtener más información, consulte Supplemental Logging.Para crear la instancia de destino de AnalyticDB for PostgreSQL, consulte Create an AnalyticDB for PostgreSQL instance.
Facturación
|
Tipo de migración |
Cargo por configuración de la tarea |
Cargo por tráfico de Internet |
|
Migración de esquemas y migración completa de datos |
Sin costo. |
DTS cobra una tarifa por tráfico de Internet cuando el Access Method de la base de datos de destino se establece en Public IP Address. Billing overview. |
|
Migración incremental de datos |
Con costo. Billing overview. |
Notas
Durante la migración completa de datos, DTS consume recursos de lectura y escritura de las bases de datos de origen y de destino, lo cual puede aumentar la carga de estas. Evalúe el impacto en el rendimiento antes de iniciar la migración y ejecute el proceso en horarios de menor actividad.
Si una tarea de migración de datos falla, DTS la reanuda automáticamente. Antes de cambiar su carga de trabajo a la base de datos de destino, detenga o libere la tarea para evitar que se reanude de forma automática y sobrescriba los datos en la base de datos de destino.
DTS solo admite la migración a nivel de tabla. Las tablas optimizadas para anexión (AO) no se pueden usar como tablas de destino.
Al utilizar la asignación de columnas, si no migra todas las columnas o si los esquemas de las tablas difieren, se pierden los datos de las columnas que existen únicamente en la tabla de origen.
-
Si la base de datos Oracle autogestionada se despliega con una arquitectura Real Application Cluster (RAC) y se conecta a DTS mediante una VPC de Alibaba Cloud, debe conectar la dirección IP del Single Client Access Name (SCAN) del Oracle RAC y la dirección IP virtual (VIP) de cada nodo a la VPC, además de configurar las rutas. Estos ajustes garantizan que la tarea de DTS se ejecute correctamente. Para obtener más información, consulte Connect a data center to DTS through VPN Gateway.
ImportanteCuando configure la base de datos Oracle de origen en la consola de DTS, puede especificar la dirección IP SCAN del Oracle RAC como endpoint o dirección IP de la base de datos.
Tipos de migración
|
Tipo |
Descripción |
|
Migración de esquemas |
DTS migra los esquemas de los objetos —incluidas tablas, índices, restricciones, funciones, secuencias y vistas— desde la base de datos de origen hacia la de destino. Aviso
|
|
Migración completa de datos |
DTS migra todos los datos de los objetos seleccionados desde la base de datos de origen hacia la de destino. Nota
No ejecute operaciones DDL en los objetos que va a migrar hasta que finalicen la migración de esquemas y la migración completa de datos. De lo contrario, la migración podría fallar. |
|
Migración incremental de datos |
Una vez concluida la migración completa de datos, DTS sondea y captura los registros redo de la base de datos Oracle autogestionada. Después, migra los cambios incrementales de datos a la base de datos de destino en tiempo real. Durante la migración incremental de datos, DTS admite las siguientes instrucciones SQL:
La migración incremental de datos reduce al mínimo el tiempo de inactividad de sus aplicaciones autogestionadas durante el proceso. |
Permisos de las cuentas de base de datos
|
Base de datos |
Migración de esquemas |
Migración completa de datos |
Migración incremental de datos |
|
Base de datos Oracle autogestionada |
Permisos de propietario del esquema |
Permisos de propietario del esquema |
DBA |
|
AnalyticDB for PostgreSQL |
Permisos de lectura y escritura en la base de datos de destino |
Permisos de lectura y escritura en la base de datos de destino |
Permisos de lectura y escritura en la base de datos de destino |
Para crear una cuenta de base de datos y otorgarle permisos, consulte lo siguiente:
Para una base de datos Oracle autogestionada, consulte CREATE USER y GRANT.
Para AnalyticDB for PostgreSQL, consulte Configure an account.
Si necesita ejecutar una migración incremental de datos pero no puede otorgar permisos de DBA, tiene la opción de asignar permisos más específicos a la cuenta de la base de datos.
Registros de Oracle y permisos detallados
Para migrar datos incrementales sin permisos de DBA, habilite el registro de archivos y el registro suplementario, y otorgue permisos detallados a la cuenta de la base de datos Oracle.
-
Habilite el registro de archivos y el registro suplementario.
Tipo
Procedimiento
Registro de archivos
Ejecute las siguientes instrucciones para habilitar el registro de archivos:
shutdown immediate; startup mount; alter database archivelog; alter database open; archive log list;Registro suplementario
Habilite el registro suplementario a nivel de base de datos o de tabla según sus necesidades comerciales:
NotaPuede habilitar el registro suplementario a nivel de base de datos para garantizar la estabilidad de las tareas de Data Transmission Service (DTS). También puede habilitarlo a nivel de tabla para reducir el uso de disco de la base de datos Oracle de origen.
-
Habilitar el registro suplementario a nivel de base de datos
-
Ejecute la siguiente instrucción para habilitar el registro suplementario mínimo:
alter database add supplemental log data; -
Ejecute la siguiente instrucción para habilitar el registro suplementario de claves primarias y únicas a nivel de base de datos:
alter database add supplemental log data (primary key,unique index) columns;
-
-
Habilitar el registro suplementario a nivel de tabla
-
Ejecute la siguiente instrucción para habilitar el registro suplementario mínimo:
alter database add supplemental log data; -
Habilite el registro suplementario a nivel de tabla mediante uno de los siguientes métodos:
-
Habilitar el registro suplementario de clave primaria a nivel de tabla
alter table table_name add supplemental log data (primary key) columns; -
Habilitar el registro suplementario a nivel de tabla para todas las columnas
alter table tb_name add supplemental log data (all) columns;
-
-
Registro forzado
Ejecute la siguiente instrucción para habilitar el registro forzado:
alter database force logging; -
-
Otorgue permisos detallados a la cuenta de la base de datos Oracle.
De Oracle 9i a 11g
# Create a database account (for example, rdsdt_dtsacct) and grant permissions. create user rdsdt_dtsacct IDENTIFIED BY rdsdt_dtsacct; grant create session to rdsdt_dtsacct; grant connect to rdsdt_dtsacct; grant resource to rdsdt_dtsacct; grant execute on sys.dbms_logmnr to rdsdt_dtsacct; grant select on V_$LOGMNR_LOGS to rdsdt_dtsacct; grant select on all_objects to rdsdt_dtsacct; grant select on all_tab_cols to rdsdt_dtsacct; grant select on dba_registry to rdsdt_dtsacct; grant select any table to rdsdt_dtsacct; grant select any transaction to rdsdt_dtsacct; -- v$log privileges grant select on v_$log to rdsdt_dtsacct; -- v$logfile privileges grant select on v_$logfile to rdsdt_dtsacct; -- v$archived_log privileges grant select on v_$archived_log to rdsdt_dtsacct; -- v$parameter privileges grant select on v_$parameter to rdsdt_dtsacct; -- v$database privileges grant select on v_$database to rdsdt_dtsacct; -- v$active_instances privileges grant select on v_$active_instances to rdsdt_dtsacct; -- v$instance privileges grant select on v_$instance to rdsdt_dtsacct; -- v$logmnr_contents privileges grant select on v_$logmnr_contents to rdsdt_dtsacct; -- system tables grant select on sys.USER$ to rdsdt_dtsacct; grant select on SYS.OBJ$ to rdsdt_dtsacct; grant select on SYS.COL$ to rdsdt_dtsacct; grant select on SYS.IND$ to rdsdt_dtsacct; grant select on SYS.ICOL$ to rdsdt_dtsacct; grant select on SYS.CDEF$ to rdsdt_dtsacct; grant select on SYS.CCOL$ to rdsdt_dtsacct; grant select on SYS.TABPART$ to rdsdt_dtsacct; grant select on SYS.TABSUBPART$ to rdsdt_dtsacct; grant select on SYS.TABCOMPART$ to rdsdt_dtsacct; grant select_catalog_role TO rdsdt_dtsacct;De Oracle 12c a 19c (multitenant)
# Switch to the PDB, then create a database account (for example, rdsdt_dtsacct) and grant permissions. ALTER SESSION SET container = ORCLPDB1; create user rdsdt_dtsacct IDENTIFIED BY rdsdt_dtsacct; grant create session to rdsdt_dtsacct; grant connect to rdsdt_dtsacct; grant resource to rdsdt_dtsacct; grant execute on sys.dbms_logmnr to rdsdt_dtsacct; grant select on all_objects to rdsdt_dtsacct; grant select on all_tab_cols to rdsdt_dtsacct; grant select on dba_registry to rdsdt_dtsacct; grant select any table to rdsdt_dtsacct; grant select any transaction to rdsdt_dtsacct; -- v$log privileges grant select on v_$log to rdsdt_dtsacct; -- v$logfile privileges grant select on v_$logfile to rdsdt_dtsacct; -- v$archived_log privileges grant select on v_$archived_log to rdsdt_dtsacct; -- v$parameter privileges grant select on v_$parameter to rdsdt_dtsacct; -- v$database privileges grant select on v_$database to rdsdt_dtsacct; -- v$active_instances privileges grant select on v_$active_instances to rdsdt_dtsacct; -- v$instance privileges grant select on v_$instance to rdsdt_dtsacct; -- v$logmnr_contents privileges grant select on v_$logmnr_contents to rdsdt_dtsacct; grant select on sys.USER$ to rdsdt_dtsacct; grant select on SYS.OBJ$ to rdsdt_dtsacct; grant select on SYS.COL$ to rdsdt_dtsacct; grant select on SYS.IND$ to rdsdt_dtsacct; grant select on SYS.ICOL$ to rdsdt_dtsacct; grant select on SYS.CDEF$ to rdsdt_dtsacct; grant select on SYS.CCOL$ to rdsdt_dtsacct; grant select on SYS.TABPART$ to rdsdt_dtsacct; grant select on SYS.TABSUBPART$ to rdsdt_dtsacct; grant select on SYS.TABCOMPART$ to rdsdt_dtsacct; -- V$PDBS privileges grant select on V_$PDBS to rdsdt_dtsacct; grant select on dba_objects to rdsdt_dtsacct; grant select on DBA_TAB_COMMENTS to rdsdt_dtsacct; grant select on dba_tab_cols to rdsdt_dtsacct; grant select_catalog_role TO rdsdt_dtsacct; # Switch to CDB$ROOT to create a database account and grant permissions. ALTER SESSION SET container = CDB$ROOT; # Set the required session parameter, then create a database account (e.g., rdsdt_dtsacct) and grant permissions. alter session set "_ORACLE_SCRIPT"=true; create user rdsdt_dtsacct IDENTIFIED BY rdsdt_dtsacct; grant create session to rdsdt_dtsacct; grant connect to rdsdt_dtsacct; grant select on v_$logmnr_contents to rdsdt_dtsacct; grant LOGMINING TO rdsdt_dtsacct; grant EXECUTE_CATALOG_ROLE to rdsdt_dtsacct; grant execute on sys.dbms_logmnr to rdsdt_dtsacct;De Oracle 12c a 19c (non-multitenant)
# Create a database account (for example, rdsdt_dtsacct) and grant permissions. create user rdsdt_dtsacct IDENTIFIED BY rdsdt_dtsacct; grant create session to rdsdt_dtsacct; grant connect to rdsdt_dtsacct; grant resource to rdsdt_dtsacct; grant select on V_$LOGMNR_LOGS to rdsdt_dtsacct; grant select on all_objects to rdsdt_dtsacct; grant select on all_tab_cols to rdsdt_dtsacct; grant select on dba_registry to rdsdt_dtsacct; grant select any table to rdsdt_dtsacct; grant select any transaction to rdsdt_dtsacct; grant select on v$database to rdsdt_dtsacct; grant select on dba_objects to rdsdt_dtsacct; grant select on DBA_TAB_COMMENTS to rdsdt_dtsacct; grant select on dba_tab_cols to rdsdt_dtsacct; -- v$log privileges grant select on v_$log to rdsdt_dtsacct; -- v$logfile privileges grant select on v_$logfile to rdsdt_dtsacct; -- v$archived_log privileges grant select on v_$archived_log to rdsdt_dtsacct; -- v$parameter privileges grant select on v_$parameter to rdsdt_dtsacct; -- v$database privileges grant select on v_$database to rdsdt_dtsacct; -- v$active_instances privileges grant select on v_$active_instances to rdsdt_dtsacct; -- v$instance privileges grant select on v_$instance to rdsdt_dtsacct; -- v$logmnr_contents privileges grant select on v_$logmnr_contents to rdsdt_dtsacct; grant select on sys.USER$ to rdsdt_dtsacct; grant select on SYS.OBJ$ to rdsdt_dtsacct; grant select on SYS.COL$ to rdsdt_dtsacct; grant select on SYS.IND$ to rdsdt_dtsacct; grant select on SYS.ICOL$ to rdsdt_dtsacct; grant select on SYS.CDEF$ to rdsdt_dtsacct; grant select on SYS.CCOL$ to rdsdt_dtsacct; grant select on SYS.TABPART$ to rdsdt_dtsacct; grant select on SYS.TABSUBPART$ to rdsdt_dtsacct; grant select on SYS.TABCOMPART$ to rdsdt_dtsacct; grant LOGMINING TO rdsdt_dtsacct; grant EXECUTE_CATALOG_ROLE to rdsdt_dtsacct; grant execute on sys.dbms_logmnr to rdsdt_dtsacct; grant select_catalog_role TO rdsdt_dtsacct;NotaPara obtener más información sobre la arquitectura multitenant de Oracle, consulte Oracle Multitenant.
Procedimiento
-
Inicie sesión en la consola de DTS.
NotaSi el sistema lo redirige automáticamente a la consola de Data Management (DMS), haga clic en el icono
en la esquina inferior derecha. Después, haga clic en
para volver a la consola clásica de DTS. En el panel de navegación izquierdo, haga clic en Data Migration.
-
En la parte superior de la página Migration Tasks, seleccione la región donde se encuentra la instancia de destino.
En la esquina superior derecha de la página, haga clic en Create Data Migration Task.
-
Configure los parámetros de conexión de las bases de datos de origen y de destino.
Categoría
Parámetro
Descripción
N/A
Task Name
DTS genera un nombre de tarea automáticamente. Para identificarla con mayor facilidad, se recomienda especificar un nombre descriptivo. No es obligatorio que el nombre sea único.
Source Database
Instance Type
Seleccione una opción según el lugar donde esté desplegada la base de datos de origen. Este tema utiliza self-managed database on an ECS instance como ejemplo.
NotaSi su base de datos autogestionada utiliza un tipo de instancia distinto, se requieren preparativos adicionales. Para obtener más información, consulte Preparation overview.
Region
Seleccione la región donde se encuentra la instancia de ECS que aloja la base de datos Oracle.
ECS Instance ID
Seleccione el identificador de la instancia de ECS que aloja la base de datos Oracle autogestionada.
Database Type
Seleccione Oracle.
Port
Introduzca el puerto de servicio de la base de datos Oracle autogestionada. Valor predeterminado: 1521.
Instance Type
-
Non-RAC Instance: si elige esta opción, también debe especificar el SID.
-
RAC Instance: si elige esta opción, también debe especificar el Service Name.
En este ejemplo, se selecciona Non-RAC Instance.
SID
Introduzca el SID de la base de datos Oracle autogestionada.
Database Account
Introduzca la cuenta de la base de datos Oracle autogestionada. Para conocer los permisos obligatorios, consulte Permissions required for database accounts.
Database Password
Introduzca la contraseña de la cuenta de la base de datos.
NotaDespués de introducir la información de la base de datos de origen, haga clic en Test Connectivity, junto a Database Password, para comprobar que los datos sean correctos. Si la información es correcta, se muestra el mensaje Passed. Si aparece el mensaje Failed, haga clic en Diagnose, junto al mensaje Failed, y ajuste la información de la base de datos de origen según las indicaciones.
Destination Database
Instance Type
Seleccione AnalyticDB for PostgreSQL.
Region
Seleccione la región donde se encuentra la instancia de destino de AnalyticDB for PostgreSQL.
Instance ID
Seleccione el identificador de la instancia de destino de AnalyticDB for PostgreSQL.
Database
Introduzca el nombre de la base de datos de destino para la migración de datos.
Database Account
Introduzca la cuenta de la base de datos de la instancia de destino de AnalyticDB for PostgreSQL. Para conocer los permisos obligatorios, consulte Permissions required for database accounts.
Database Password
Introduzca la contraseña de la cuenta de la base de datos.
-
-
Una vez completada la configuración, haga clic en Set Whitelist and Next en la esquina inferior derecha de la página.
Si el origen o el destino es una instancia de base de datos de Alibaba Cloud, como ApsaraDB for MySQL o ApsaraDB for MongoDB, DTS agrega automáticamente las direcciones IP de sus servidores en la región correspondiente a la lista blanca de la instancia. Si el origen o el destino es una base de datos autogestionada en una instancia de ECS, DTS agrega automáticamente sus direcciones IP a las reglas de seguridad de dicha instancia. También debe asegurarse de que la base de datos autogestionada no restrinja el acceso desde la instancia de ECS. Si la base de datos es un clúster desplegado en varias instancias de ECS, agregue manualmente las direcciones IP de DTS a las reglas de seguridad de cada instancia. Cuando el origen o el destino es una base de datos en un centro de datos local o en otra nube, agregue manualmente las direcciones IP de DTS de la región correspondiente para permitir el acceso desde los servidores de DTS. Para consultar la lista de direcciones IP de los servidores de DTS, consulte DTS server IP addresses.
AvisoAgregar los bloques CIDR públicos de los servidores de DTS, ya sea de forma automática o manual, puede generar riesgos de seguridad. Al utilizar este producto, usted reconoce y acepta estos riesgos potenciales. Es su responsabilidad implementar medidas de seguridad básicas. Estas incluyen, entre otras, usar contraseñas seguras, restringir los puertos abiertos, aplicar autenticación en las llamadas a API internas, revisar y limitar periódicamente los segmentos de red innecesarios, o conectarse mediante redes privadas como Express Connect, VPN Gateway o Smart Access Gateway.
-
Seleccione los tipos de migración, los tipos de operación y los objetos de migración.
Parámetro
Descripción
Migration Types
-
Si solo necesita una migración completa, seleccione Schema Migration y Full Data Migration.
-
Para ejecutar una migración sin tiempo de inactividad, seleccione Schema Migration, Full Data Migration y Incremental Data Migration.
NotaSi no selecciona Incremental Data Migration, evite escribir datos nuevos en la base de datos de origen durante la migración para garantizar la coherencia de los datos.
Operation Types
Seleccione los tipos de operación que desea sincronizar durante la migración incremental de datos, según sus necesidades de negocio. De forma predeterminada, todos los tipos de operación están seleccionados.
Objects to Migrate
En el cuadro Available, haga clic en los objetos que desea migrar. Luego, haga clic en el icono
para moverlos al cuadro Selected Objects.Nota-
Los objetos de migración se pueden seleccionar a nivel de tabla.
-
De forma predeterminada, los objetos migrados conservan su nombre original en la base de datos de destino. Para cambiar el nombre de un objeto, utilice la función de asignación de nombres de objetos. Para obtener más información, consulte Object name mapping.
-
Si utiliza la función de asignación de nombres de objetos, es posible que otros objetos dependientes del elemento renombrado presenten errores durante la migración.
Object Name Mapping
Para cambiar el nombre de un objeto migrado en la instancia de destino, utilice la función de asignación de nombres de objetos. Para obtener más información, consulte Object name mapping.
ImportanteSi aplica la asignación de columnas en una migración parcial de tablas, o si los esquemas de origen y destino difieren, se perderán los datos de las columnas presentes en la tabla de origen pero ausentes en la de destino.
Connection Failure Retry Duration
La duración predeterminada de reintento es de 12 horas, aunque es posible especificar un valor personalizado. Si DTS restablece la conexión con las bases de datos de origen y destino dentro del periodo indicado, la tarea de migración se reanuda automáticamente. De lo contrario, la tarea finaliza con errores.
NotaDTS cobra por el tiempo de ejecución de la tarea durante el periodo de reintento de conexión. Se recomienda personalizar la duración de reintento según sus necesidades de negocio, o liberar la instancia de DTS inmediatamente después de liberar las instancias de las bases de datos de origen y destino.
Enclose Object Names in Quotation Marks
Indica si los nombres de los objetos de destino deben ir entre comillas. Si selecciona Yes y se cumple alguna de las siguientes condiciones, DTS agregará comillas simples o dobles al objeto de destino durante la migración de esquema y la migración incremental de datos:
-
El entorno de la base de datos de origen distingue entre mayúsculas y minúsculas, y los nombres de los objetos combinan ambos tipos de letras.
-
El nombre de una tabla de origen no comienza con una letra e incluye caracteres distintos de letras, dígitos o los caracteres especiales compatibles.
NotaLos caracteres especiales compatibles son el guion bajo (_), el signo de número (#) y el signo de dólar ($).
-
Los nombres de esquema, tabla o columna que se van a migrar son palabras clave, palabras reservadas o caracteres no válidos en la base de datos de destino.
-
-
Establezca la clave primaria y la clave de distribución de las tablas que se migrarán a la instancia de AnalyticDB for PostgreSQL.
En la página de configuración, establezca el Type de cada tabla, por ejemplo, como tabla distribuida por hash. Una vez configurado, la columna Definition Status mostrará "Defined".
NotaPara obtener más información sobre las claves primarias y las claves de distribución, consulte Table constraints y Table distribution keys.
Si alguna tabla carece de clave primaria, aparecerá en esta página la opción Set Primary Keys and Distribution Keys of All Tables Without Primary Keys to ROWID. Al seleccionarla, se agrega una columna ROWID a las tablas de destino que funciona como clave primaria y clave de distribución.
-
Una vez completada la configuración, haga clic en Precheck and Start en la esquina inferior derecha de la página.
NotaAntes de iniciar la tarea de migración, DTS ejecuta una comprobación previa. La tarea solo puede comenzar si supera esta comprobación.
-
Si la comprobación previa termina con errores, haga clic en el icono
, junto al elemento afectado, para consultar los detalles.Corrija los problemas según las indicaciones y vuelva a ejecutar la comprobación previa.
Si no necesita corregir los elementos de advertencia, seleccione Ignore y luego haga clic en Ignore Warnings and Rerun Precheck para ejecutar la comprobación previa nuevamente.
Cuando la tarea supere la comprobación previa, haga clic en Next.
En el cuadro de diálogo Confirm Settings que aparece, seleccione una Instance Class y active la casilla Data Transmission Service (pay-as-you-go) Service Terms.
-
Haga clic en Buy and Start para iniciar la migración.
-
Migración de esquema + migración completa de datos
Permita que la tarea finalice automáticamente. Detenerla de forma manual podría provocar que los datos queden incompletos.
-
Migración de esquema + migración completa de datos + migración incremental de datos
La tarea de migración no se detiene automáticamente; debe detenerla de forma manual.
ImportanteElija un momento adecuado para detener la tarea manualmente, por ejemplo, fuera del horario de mayor actividad o cuando esté listo para trasladar su negocio al clúster de destino.
Espere a que la tarea de migración alcance la fase Incremental Data Migration y el estado muestre Undelayed. Después, deje de escribir datos en la base de datos de origen durante varios minutos. Durante este periodo, el estado de Incremental Data Migration podría mostrar latencia.
Espere a que el estado de Incremental Data Migration vuelva a mostrar Undelayed. A continuación, detenga la tarea de migración manualmente: seleccione la casilla de verificación de la tarea correspondiente y haga clic en Pause en la barra de operaciones por lotes ubicada en la parte inferior de la página.
-