Antecedentes de esta migración:
La sala de computación debe reubicarse y se ha creado una nueva base de datos de Oracle. Se planea migrar sin tiempo de inactividad y migrar los datos de la base de datos anterior en el origen a la nueva base de datos en el destino.
Originalmente, quería usar RMAN para migrar, pero debido a que la base de datos anterior es un sistema AIX y la nueva base de datos es un sistema Linux, habrá problemas con la migración de RMAN, por lo que considero usar data pump + ogg para lograr una migración continua.
Aquí se planea exportar por usuario, configurar un solo proceso ogg para usuarios grandes y hacer un lote de procesos ogg para múltiples usuarios pequeños. Este es un ejemplo de sincronización de una de las AMI de usuario.
/*
A veces puede ser necesario configurar y sincronizar algunas tablas de una biblioteca con otras bibliotecas, y a menudo se usa ogg.
*/
Una configuración de base de datos
1.1 Archivo abierto (lado fuente)
El archivado en el origen debe estar habilitado. Si el destino no está habilitado, no afectará la sincronización de ogg. Sin embargo, si el archivo de datos está dañado y la base de datos no se puede restaurar a un momento determinado, se recomienda habilitar el registro de archivo.
#Compruebe si el registro de archivo está habilitado
lista de registro de archivos;
Si el archivado automático está Habilitado, significa que está habilitado. Si está deshabilitado, debe habilitarse:
apagado inmediato;
montaje de inicio;
alterar el registro de archivos de la base de datos;
lista de registro de archivos;
modificar base de datos abierta;
1.2 Active el registro adicional en el nivel de la base de datos (lado del origen)
Verifique el estado de apertura del registro adicional de la base de datos a través de la siguiente declaración sql:
SQL> seleccione SUPPLEMENTAL_LOG_DATA_MIN,supplemental_log_data_pk,supplemental_log_data_ui,
force_logging de v$base de datos;
El valor de retorno sí significa abierto, tanto pk como ui deben abrirse. Tenga en cuenta que no es necesario activar el registro forzado, no importa si ya está activado.
Si no está habilitado, ejecute el siguiente comando para habilitarlo
alterar la base de datos agregar datos de registro complementarios;
alterar la base de datos agregar columnas de datos de registro suplementarios (clave principal, única, clave externa);
alterar el archivo de registro del cambio del sistema;
# comprobar de nuevo
seleccione SUPPLEMENTAL_LOG_DATA_MIN,supplemental_log_data_pk,supplemental_log_data_ui,
force_logging de v$base de datos;
Aviso:
Si la base de datos no se puede abrir en el modo de registro forzado, la tabla de no registro no se puede sincronizar. Si se usa nologging cuando se crea la tabla, se requiere el registro de alter table tablename;
1.3 Crear usuario Goldengate y espacio de tabla (origen y destino)
#给ogg创建单独的表空间
create tablespace OGGTBS datafile '/u01/app/oracle/oradata/orcl/oggtb1.dbf' size 3g;
#给ogg创建单独的管理用户
CREATE USER GOLDENGATE IDENTIFIED BY "123456" DEFAULT TABLESPACE OGGTBS TEMPORARY TABLESPACE TEMP;
GRANT CONNECT,resource TO goldengate;
GRANT ALTER ANY TABLE TO goldengate;
GRANT ALTER SESSION TO goldengate;
GRANT CREATE SESSION TO goldengate;
GRANT FLASHBACK ANY TABLE TO goldengate;
GRANT SELECT ANY DICTIONARY TO goldengate;
GRANT SELECT ANY TABLE TO goldengate;
GRANT drop ANY TABLE TO goldengate;
Grant insert any table to goldengate;
Grant update any table to goldengate;
Grant delete any table to goldengate;
Grant create any table to goldengate;
GRANT EXECUTE ON utl_file TO goldengate;
GRANT EXECUTE ON dbms_flashback TO goldengate;
GRANT SELECT ANY TRANSACTION TO goldengate;
1.4 Habilitar la replicación de ogg (origen y destino)
alterar el conjunto del sistema enable_goldengate_replication=true;
1.5 Determinar el conjunto de caracteres de la base de datos (fuente)
$ sqlplus / como sysdba
SQL> mostrar parámetro nls_language
SQL> mostrar el parámetro nls_territory
SQL> seleccione nombre, valor $ de sys.props $ donde nombre = 'NLS_CHARACTERSET';
El conjunto de caracteres de la base de datos es NLS_LANGUAGE_NLS_TERRITORY.NLS_CHARACTERSET
Por ejemplo:
NLS_LANGUAGE 为 AMERICANO
NLS_TERRITORY es AMÉRICA
NLS_CHARACTERSET es ZHS16GBK
Entonces el conjunto de caracteres de la base de datos es AMERICAN_AMERICA.ZHS16GBK
2. Instalar el software Goldengate (origen y destino)
Instale el software ogg tanto en el origen como en el destino.
Dirección de descarga de software: https://edelivery.oracle.com/osdc/faces/SoftwareDelivery
Haga clic en el nombre del archivo para descargar.
2.1 Crear un directorio y configurar variables de entorno
mkdir -p /puerta dorada
chown -R oráculo:oinstall /goldengate
su - oráculo
vi .bash_perfil
Agregado:
exportar OGG_DIR=/goldengate
exportar RUTA=$OGG_DIR:$ORACLE_HOME/bin:$ODI_HOME/oracledi/client:$ODI_JAVA_HOME/bin:$PATH
exportar LD_LIBRARY_PATH=$OGG_DIR:$ORACLE_HOME/lib:/usr/lib
# hacer que los cambios surtan efecto
fuente .bash_profile
2.2 Instalar el software Goldengate
Cargue el paquete de medios de instalación en este directorio: /goldengate
disco compacto / goldengate
tar xvf fbo_ggs_Linux_x64_ora11g_64bit.tar
./ggsci
#Crear directorio de trabajo OGG
GGSCI (orasvr) 3> crear subdirectorios
cd /goldengate/dirdat
base de datos mkdir
2.3 Agregar tabla de puntos de control
Agregar archivo de parámetros GLOBALS, agregar lista de verificación
GGSCI (fdpdb1) 1>editar parámetros ./GLOBALS
checkpointtable goldengate.checkpoint
GGSCI (fdpdb1) 1>id de usuario de dblogin goldengate, contraseña 123456
GGSCI (fdpdb1) 1>añadir tabla de puntos de control goldengate.punto de control
Configuración de tres Goldengate
3.1 Configurar el proceso MGR (origen y destino)
3.1.1 Archivo de parámetros de configuración
GGSCI (fdpdb1) 2> editar administrador de parámetros
Agregado:
puerto 7839
LISTA DE PORTADOS DINÁMICOS 7850-7959
ARRANQUE AUTOMÁTICO *
EXTRACCIÓN DE REINICIO AUTOMÁTICO *, REINTENTOS 5, MINUTOS DE ESPERA 7
PURGEOLDEXTRACTS ./dirdat/database/*,usecheckpoints,minkeephours 2
ID DE USUARIO goldengate, CONTRASEÑA 123456
--PURGEDDLHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 4
--PURGEMARKERHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10
LAGREPORTHOURS 1
LAGINFOMINUTOS 30
LAGCRITICALMINUTES 45
3.1.2 administrador de inicio
gerente de inicio
info all #Asegúrate de que el proceso se está ejecutando
3.2 Configurar ogg en la fuente
3.2.1 Agregar información de registro adicional para la tabla replicada
Para qué tablas copiar, agregue información de registro adicional para qué tablas
$ cd / puerta de oro
$ ./ggsci
GGSCI> dblogin ID de usuario goldengate, contraseña 123456
Si lo exporta el usuario, agregue el usuario trandata.*
Si se exporta por tabla, agregue el nombre de la tabla trandata
-- Verifique si se ha agregado una configuración de registro adicional para cada tabla
ggsci> nombre de la tabla info trandata
3.2.2 Proceso de extracción de configuración
Aquí, el proceso de extracción comienza con ext, seguido de AM, que es una abreviatura de letra personalizada.
editar parámetro EXT_AM
Agregado:
EXTRAER EXT_AM
SETENV (NLS_LANG = " AMERICAN_AMERICA.ZHS16GBK ")
SETENV (ORACLE_SID = " orcl " )
ID DE USUARIO goldengate, CONTRASEÑA " 123456 "
GETTRUNCATE
REPORTE CADA 1 MINUTOS, TASA
DESCARTAR ARCHIVO ./dirrpt/ EXT_AM.dsc ,AÑADIR,MEGABYTES 1024
THREADOPTIONS MAXCOMMITPROPAGATIONDELAY 60000 IOLATENCY 60000
TRANLOGOPTIONS _DISABLESTREAMLINEDDBLOGREADER
DBOPCIONES PERMITIDAS COLUMNA NO UTILIZADA
ADVERTENCIA TRANS LARGA 2 h, INTERVALO DE COMPROBACIÓN 3 min
EXTRAIL. /dirdat/base de datos/am
FETCHOPTIONS NOUSEINSTANTÁNEA
LECTOR DE DBLOG DE OPCIONES DE TRANSLOGO
OBTENER ACTUALIZACIÓN ANTES
NOCOMPRESSDELETES
CACHEMGR TAMAÑO DE CACHE 1G
TABLA AMI.*;
3.2.3 Crear un proceso de extracción
agregar extraer EXT_AM , tranlog, comenzar ahora, subprocesos 1
agregue exttrail ./dirdat/database/am , extraiga EXT_AM , megabytes 1024
3.2.4 Configurar el proceso de entrega
Aquí, el proceso de extracción comienza con dpe, seguido de am, que es una abreviatura de letra personalizada.
GGSCI> editar parámetros dpe_am
EXTRACTO dpe_am
PASAR A TRAVÉS DE
RMTHOST 172.22.204.250 , MGRPORT 7839, comprimir
RMTTRAIL. /dirdat/base de datos/am
TABLA AMI.*;
3.2.5 Crear proceso de entrega
agregar extraer dpe_am , exttrailsource ./dirdat/database/am
AGREGAR RMTTRAIL ./dirdat/database/am , EXTRAER dpe_am , MEGABYTES 1024
3.2.6 Iniciar el proceso de extracción y transferencia
GGSCI> empezar a extraer EXT_AM
GGSCI> empezar a extraer dpe_am
info all #Asegúrese de que todos los procesos estén en el estado de inicio EN EJECUCIÓN
Cree algunos datos de prueba para ver si el proceso de publicación captura los cambios:
estadísticas dpe_am
Ejemplo:
#Compruebe en el lado de destino si se ha entregado y vea si puede ver el archivo
cd /goldengate/dirdat/base de datos
ls-ltr
Si puede ver el archivo de cola personalizado arriba, es normal:
3.3 Inicializar datos
Las operaciones DML incluyen las operaciones INSERTAR, ACTUALIZAR, ELIMINAR y SELECCIONAR. En estas operaciones, las operaciones ACTUALIZAR y ELIMINAR solo registran la columna de datos modificada y el ID de fila (ROWID). Después de que GoldenGate extrae los datos, los convierte a su propio formato y los envía al extremo de destino. Antes de que comience la sincronización, el destino no inicializa los datos (el destino son datos vacíos), luego las operaciones ACTUALIZAR y ELIMINAR DML generadas por la transacción se envían al destino, y el proceso GoldenGate Replicat en el destino informará un error porque no se pueden encontrar los datos, lo que hará que el proceso de replicación se bloquee y se detenga (ABENDED). Por lo tanto, debemos inicializar los datos antes de la sincronización y luego sincronizar después de la inicialización, lo que reduce en gran medida la tasa de error. La forma de sincronizar los datos se puede sincronizar a través de DBLINK, EXP/IMP, SQLLDR o migración de espacio de tablas.
3.3.1 configuración de destino de datos de origen de copia de seguridad de expdp
3.3.1.1 Consultar el número SCN en la fuente
SELECCIONE a."CURRENT_SCN" DE v$base de datos a ; #Registre el scn detectado , aquí está 1343313
3.3.1.2 Agregar número SCN al exportar
vi expdp_ami_alldata_20230621.par
Agregado:
idusuario='/ como sysdba'
directorio=DMP
dumpfile=expdp_ami_alldata_20230621_%U.dmp
archivo de registro=expdp_ami_alldata_20230621.log
esquemas=ami
compresión=TODO
CLUSTER=N
paralelo=8
excluir=estadísticas
FLASHBACK_SCN= 1343313 #El scn que se encuentra arriba significa que la exportación comienza desde esta posición
# iniciar exportación
nohup expdp parfile=expdp_ami_alldata_20230621.par >nohup_expdp_ami_alldata_20230621.log &
cola -100f nohup_expdp_ami_alldata_20230621.log
Compruebe los registros en busca de errores.
3.3.2 Copie el archivo de copia de seguridad en el destino
3.3.2 Importar datos en el lado de destino
vi impdp_ami_alldata_20230621.par
Agregado:
idusuario='/ como sysdba'
directorio=dmp
dumpfile=expdp_ami_alldata_20230621_%u.dmp
archivo de registro=impdp_ami_alldata_20230621.log
table_exists_action=reemplazar
grupo = n
paralelo=8
#importar
nohup impdp parfile=impdp_ami_alldata_20230621.par >nohup_impdp_ami_alldata_20230621.log &
cola -100f nohup_impdp_ami_alldata_20230621.log
Compruebe los registros en busca de errores.
3.4 Configurar el proceso de replicación en el lado de destino
3.4.1 Configurar el proceso de replicación
editar parámetro rep_am
Agrega el siguiente contenido:
REPLICADO rep_am
SETENV (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")
SETENV (ORACLE_SID = " orcl ")
ID DE USUARIO goldengate, CONTRASEÑA 123456
SQLEXEC "ALTERAR LAS RESTRICCIONES DEL CONJUNTO DE SESIÓN=DEFERRED"
REPORTAR A LAS 01:59
REPORTE CADA 30 MINUTOS, TARIFA
REPERROR POR DEFECTO, ABEND
MANILLARCOLISIONES
--DBOPTIONS_NOAUTOMATICSEQUENCEFLUSH
lotesql LOTESPERQUEUE 100, OPSPERBATCH 8000
--TRANSPAS DE GRUPO 2000
--MAXTRANSOPS 500
asumirtargetdefs
DISCARDFILE ./dirrpt/ rep_am.dsc, ANEXAR, MEGABYTES 1024
DESCARTAR VOLVER A LAS 02:30
GETTRUNCATE
PERMITIR ACTUALIZACIONES
---SOURCEDEFS ./dirdef/cj.def
asumirtargetdefs
mapa ami.* ,objetivo ami.*;
/*
Si desea sincronizar varias tablas, escriba así:
mapear usuario.tabla 1, usuario objetivo.tabla 1;
mapear usuario.tabla 2, usuario objetivo.tabla 2;
*/
3.4.2 Agregar proceso de replicación
AGREGAR REPLICAT rep_am , EXTTRAIL . /dirdat/base de datos/am , nodbcheckpoint
3.4.3 Iniciar el proceso de replicación de destino
iniciar replicat rep_am, el scn verificado arriba aftercsn
Ejemplo:
iniciar replicación rep_am, aftercsn 1343313
info all #Compruebe para asegurarse de que el comando se está ejecutando
3.5 Sincronización de datos de prueba
levemente
Problemas encontrados durante 3.6
instantánea demasiado antigua
Aumentar undo_retention:
Si aún no funciona, busque la tabla grande y configure la sincronización ogg de la tabla grande por separado.