Crea la base de datos en espera de Oracle con la siembra en la capa de almacenamiento de Google Cloud NetApp Volumes
Crea la base de datos física en espera de Oracle utilizando la replicación en la capa de almacenamiento de Google Cloud NetApp Volumes, instantáneas o clones para acelerar la inicialización de la base de datos en espera en comparación con los métodos RMAN tradicionales. Este procedimiento abarca la configuración del listener, la creación del pfile de la base de datos en espera, la inicialización de los volúmenes de espera con la replicación GCNV, la finalización de la instancia de Oracle y el registro de la base de datos en espera con Oracle Restart. Todos los niveles de HA completan estos pasos. Para Prod HA (Data Guard + FSFO), continúa con Finalización de Data Guard antes de configurar Data Guard Broker, Fast-Start Failover y el Observer.
Paso 1: Configura los parámetros del listener y de Data Guard
Configura el listener en ambos servidores de base de datos para que admita conexiones de Data Guard, incluido el servicio requerido para el broker. _DGMGRL Configura el archivo de contraseñas y los parámetros de registro de archivos en la base de datos principal.
-
Configura el listener principal y comprueba el entorno en
oracdb1:sudo su - oracle . ~/.bash_profile # ORACLE_SID=orcl, ORACLE_HOME set -
Configura el listener en espera en
oracdb2para que incluya los serviciosorclsyorcls_DGMGRL:GRID_HOME=/u01/app/26ai/grid sudo -u grid tee "$GRID_HOME/network/admin/listener.ora" >/dev/null <<'EOF' LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oracdb2.example.internal)(PORT = 1521))) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orcls) (ORACLE_HOME = /u01/app/oracle/product/26ai/db_1) (SID_NAME = orcls)) (SID_DESC = (GLOBAL_DBNAME = orcls_DGMGRL) (ORACLE_HOME = /u01/app/oracle/product/26ai/db_1) (SID_NAME = orcls))) EOF -
Reinicia el listener mediante Oracle Restart en ambos hosts y verifica que el servicio
_DGMGRLesté registrado:sudo -u grid bash -c ' export GRID_HOME=/u01/app/26ai/grid export ORACLE_HOME=$GRID_HOME $GRID_HOME/bin/srvctl stop listener $GRID_HOME/bin/srvctl start listener $GRID_HOME/bin/lsnrctl status 'lsnrctl statusdebe incluir<SID>y<SID>_DGMGRL.
Paso 2: Prepara el pfile de reserva y NOMOUNT
Prepara la instancia de base de datos de reserva copiando el archivo de contraseñas desde la principal, creando un archivo init.ora mínimo con los parámetros de Data Guard e iniciando la instancia en modo NOMOUNT.
-
Copia el archivo de contraseñas principal al host de reserva utilizando IAP y
gcloud compute scp:PRIMARY_ZONE=us-west1-a # zone of oracdb1 STANDBY_ZONE=us-west1-b # zone of oracdb2 gcloud compute scp \ oracdb1:/u01/app/oracle/product/26ai/db_1/dbs/orapworcl ./orapworcl \ --zone=$PRIMARY_ZONE --tunnel-through-iap gcloud compute scp \ ./orapworcl oracdb2:/u01/app/oracle/product/26ai/db_1/dbs/orapworcls \ --zone=$STANDBY_ZONE --tunnel-through-iap -
Consulta el valor del parámetro
compatiblede la base de datos principal:# On oracdb1 sudo -u oracle sqlplus -s / as sysdba \ <<<"SELECT value FROM v\$parameter WHERE name='compatible';" -
Crea el archivo pfile de reserva en
oracdb2, configura la propiedad del archivo de contraseñas e inicia la instancia en modo NOMOUNT. Sustituye el valor decompatibledel paso anterior por<COPY_FROM_PRIMARY>:sudo -u oracle mkdir -p /u01/app/oracle/admin/orcls/adump sudo chown oracle:oinstall /u01/app/oracle/product/26ai/db_1/dbs/orapworcls sudo chmod 0600 /u01/app/oracle/product/26ai/db_1/dbs/orapworcls sudo -u oracle tee /u01/app/oracle/product/26ai/db_1/dbs/initorcls.ora >/dev/null <<'EOF' *.db_name='orcl' *.db_unique_name='orcls' *.audit_file_dest='/u01/app/oracle/admin/orcls/adump' *.diagnostic_dest='/u01/app/oracle' *.compatible='<COPY_FROM_PRIMARY>' *.sga_target=3072m *.pga_aggregate_target=1024m *.processes=320 *.remote_login_passwordfile='EXCLUSIVE' *.standby_file_management='AUTO' *.fal_server='orcl' *.log_archive_config='DG_CONFIG=(orcl,orcls)' *.log_archive_dest_1='LOCATION=+RECO VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcls' *.log_archive_dest_2='SERVICE=orcl AFFIRM SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl' *.log_archive_dest_state_2='DEFER' *.log_archive_format='%t_%s_%r.arc' *.dg_broker_start=TRUE *.undo_tablespace='UNDOTBS1' *.open_cursors=300 *.db_create_file_dest='+DATA' *.db_create_online_log_dest_1='+DATA' *.db_recovery_file_dest='+FRA' *.db_recovery_file_dest_size=25000m EOF echo "orcls:/u01/app/oracle/product/26ai/db_1:N" | sudo tee -a /etc/oratab sudo -u oracle bash -c ' export ORACLE_HOME=/u01/app/oracle/product/26ai/db_1 export ORACLE_SID=orcls sqlplus / as sysdba <<SQL STARTUP NOMOUNT PFILE=/u01/app/oracle/product/26ai/db_1/dbs/initorcls.ora; EXIT SQL 'La instancia en espera se encuentra ahora en modo NOMOUNT sin archivos de datos hasta Paso 3: inicializa el almacenamiento en espera con GCNV.
Paso 3: inicializa el almacenamiento en espera con GCNV
Inicia los volúmenes de reserva en oracle-pool-b, conéctalos a oracdb2, monta los grupos de discos ASM y finaliza la instancia de reserva en estado MOUNT.
Utiliza la replicación GCNV para la inicialización de entornos de producción y la inicialización mediante instantáneas para flujos de trabajo puntuales en laboratorio.
Elige la ruta de siembra
Elige el método de siembra en espera según tu entorno y tus requisitos de recuperación.
-
Recomendado para producción: Usa la ruta de replicación en Ruta de replicación: crear y sincronizar replicaciones y Ruta de replicación: conmutación y conexión de volúmenes en espera.
-
Alternativa para laboratorios: Usa Ruta alternativa: semilla a partir de una instantánea.
Todos los enlaces se reúnen en Montar grupos de discos ASM en modo de espera y Finaliza la instancia en espera.
Comprueba los requisitos previos
Confirma los siguientes requisitos previos antes de inicializar los volúmenes de reserva.
-
gcloud netappcon compatibilidad con la replicación de volúmenes. -
Dos grupos Default-mode en diferentes ubicaciones (
oracle-pool-a,oracle-pool-b). -
Los volúmenes de origen del grupo primario se encuentran en
oracdb1-hg; los volúmenes de destino se crean mediante replicación. -
Ejecuta la replicación desde Cloud Shell o desde una estación de trabajo, no desde DB VMs.
-
En
oracdb2, completa la configuración completa de iSCSI y ASM del host desde Paso 4, Paso 5 y Paso 6.export PROJECT=<your-gcp-project> export LOC_A=us-west1-a export LOC_B=us-west1-b export DEST_POOL="projects/${PROJECT}/locations/${LOC_B}/storagePools/oracle-pool-b" -
Crea un grupo de reserva si es necesario:
gcloud netapp storage-pools create oracle-pool-b \ --project="${PROJECT}" --location="${LOC_B}" \ --service-level=flex --type=unified --mode=default \ --capacity=1024 --network=name=<your-vpc>
Crear y sincronizar replicaciones
Crea relaciones de replicación desde los volúmenes primarios a los volúmenes de reserva y luego espera a que termine la sincronización inicial.
gcloud netapp volumes replications create repl-oracdb2-data \
--project="${PROJECT}" --location="${LOC_A}" --volume=oracdb1_data \
--replication-schedule=EVERY_10_MINUTES \
--destination-volume-parameters="storage_pool=${DEST_POOL},volume_id=oracdb2_data,share_name=oracdb2_data"
gcloud netapp volumes replications create repl-oracdb2-reco \
--project="${PROJECT}" --location="${LOC_A}" --volume=oracdb1_reco \
--replication-schedule=EVERY_10_MINUTES \
--destination-volume-parameters="storage_pool=${DEST_POOL},volume_id=oracdb2_reco,share_name=oracdb2_reco"
+
Espera hasta que mirrorState esté MIRRORED y se haya completado la sincronización inicial para cada replicación.
Realiza el corte y conecta los volúmenes de reserva
Pon en reposo el servidor principal, detén la replicación después de la última sincronización y conecta los volúmenes de destino al grupo de hosts en espera.
En el primario, suspende las escrituras y captura los metadatos de recuperación:
ALTER DATABASE BEGIN BACKUP;
SELECT CURRENT_SCN FROM V$DATABASE;
ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/orcls_stby.ctl';
Deja que se complete un último ciclo de replicación y, a continuación, detén las replicaciones:
gcloud netapp volumes replications stop repl-oracdb2-data \
--project="${PROJECT}" --location="${LOC_A}" --volume=oracdb1_data --force
gcloud netapp volumes replications stop repl-oracdb2-reco \
--project="${PROJECT}" --location="${LOC_A}" --volume=oracdb1_reco --force
Conectar los volúmenes de destino a oracdb2-hg (los LUN replicados pueden conservar los nombres de origen):
HG=$(gcloud netapp host-groups describe oracdb2-hg --project="${PROJECT}" \
--location=us-west1 --format='value(name)')
gcloud netapp volumes update oracdb2_data --project="${PROJECT}" --location="${LOC_B}" \
--block-devices="name=oracdb1_data_lun,host-groups=${HG},os-type=LINUX"
Copia el archivo de control de reserva en oracdb2, luego finaliza el modo de copia de seguridad en el servidor principal:
ALTER DATABASE END BACKUP;
Semilla a partir de una instantánea
Utiliza esta ruta para la inicialización puntual de laboratorio cuando no sea necesaria la replicación continua.
Para una instalación inicial de laboratorio, crea una instantánea de origen y crea volúmenes en espera a partir de esa instantánea en oracle-pool-b (Cloud Console o API). Asocia los volúmenes creados a oracdb2-hg y luego continúa con Montar grupos de discos ASM en modo de espera.
Montar grupos de discos ASM en modo de espera
En el servidor de reserva, identifica las rutas de almacenamiento conectadas y monta los grupos de discos ASM antes de la recuperación de bases de datos.
En oracdb2, inicia sesión en los portales iSCSI de standby-pool y vuelve a escanear los dispositivos multivía. Si los encabezados de los discos ASM coinciden con la nomenclatura principal en un flujo de trabajo de laboratorio, utiliza alias al estilo principal (por ejemplo, ora_oracdb1_data_01, ora_oracdb1_arch_01), configura asm_diskstring='/dev/mapper/ora_oracdb1_*p*' y confirma que la propiedad de la partición sea grid:asmadmin, luego monta los grupos de discos:
ALTER DISKGROUP DATA MOUNT FORCE;
ALTER DISKGROUP RECO MOUNT FORCE;
ALTER DISKGROUP FRA MOUNT FORCE;
Finaliza la instancia en espera
Restaura el archivo de control de espera, recupera hasta el SCN capturado, convierte a espera física e inicia la recuperación gestionada.
STARTUP NOMOUNT;
RESTORE STANDBY CONTROLFILE FROM '/tmp/orcls_stby.ctl';
ALTER DATABASE MOUNT;
RECOVER DATABASE UNTIL SCN <quiesce_scn>;
ALTER DATABASE CONVERT TO PHYSICAL STANDBY;
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
En este momento, el servidor de reserva debería ser PHYSICAL STANDBY y MOUNTED con la recuperación gestionada ya iniciada.
Próximos pasos específicos para cada nivel:
-
Prod HA (sin Data Guard): Ve directamente a Paso 4: Registrar el standby con Oracle Restart.
-
Prod HA (Data Guard + FSFO): Sigue en Paso 4: Registrar el standby con Oracle Restart, luego ve a Pasos finales de Data Guard.
Paso 4: Registrar el standby con Oracle Restart
Registra la base de datos de reserva en Oracle Restart para que, al reiniciar, se recuperen automáticamente los grupos de discos ASM, se monte la base de datos de reserva y se reinicie la recuperación gestionada. Añade también el servicio de aplicación a ambos recursos de base de datos.
-
Captura la ubicación del spfile de la base de datos en espera y regístrala con Oracle Restart en
oracdb2. Sustituye<STANDBY_SPFILE_PATH>de la consulta (a menudo bajo+DATA):sudo -u oracle bash -c ' export ORACLE_SID=orcls sqlplus -s / as sysdba <<< "SHOW PARAMETER spfile;" ' sudo -u oracle bash -c ' export GRID_HOME=/u01/app/26ai/grid export ORACLE_HOME=/u01/app/oracle/product/26ai/db_1 export PATH=$ORACLE_HOME/bin:$GRID_HOME/bin:$PATH srvctl add database \ -db orcls \ -dbname orcl \ -oraclehome /u01/app/oracle/product/26ai/db_1 \ -spfile <STANDBY_SPFILE_PATH> \ -pwfile /u01/app/oracle/product/26ai/db_1/dbs/orapworcls \ -role PHYSICAL_STANDBY \ -startoption MOUNT \ -stopoption IMMEDIATE \ -diskgroup DATA,RECO,FRA srvctl config database -db orcls srvctl status database -db orcls ' -
Comprueba y actualiza el recurso de base de datos principal en
oracdb1para que incluya todas las dependencias de los grupos de discos ASM:sudo -u oracle bash -c ' export GRID_HOME=/u01/app/26ai/grid export ORACLE_HOME=/u01/app/oracle/product/26ai/db_1 export PATH=$ORACLE_HOME/bin:$GRID_HOME/bin:$PATH srvctl config database -db orcl srvctl modify database -db orcl -diskgroup DATA,RECO,FRA srvctl config database -db orcl ' -
Agrega el servicio de la aplicación al recurso de base de datos en espera (
orclsenoracdb2). Utilizarole PRIMARYen ambos lados para queorclappesté disponible tras la conmutación de sitios:sudo -u oracle bash -c ' export GRID_HOME=/u01/app/26ai/grid export ORACLE_HOME=/u01/app/oracle/product/26ai/db_1 export PATH=$ORACLE_HOME/bin:$GRID_HOME/bin:$PATH srvctl add service \ -db orcls \ -service orclapp \ -pdb orclpdb \ -role PRIMARY \ -policy AUTOMATIC srvctl config service -db orcls -service orclapp ' -
Comprueba el recurso de la base de datos de reserva en
oracdb2:sudo -u oracle bash -c ' export GRID_HOME=/u01/app/26ai/grid export ORACLE_HOME=/u01/app/oracle/product/26ai/db_1 export PATH=$ORACLE_HOME/bin:$GRID_HOME/bin:$PATH srvctl status database -db orcls '
¿Qué sigue?
Específico de cada nivel:
-
Prod HA (sin Data Guard): Para mantener un destino de recuperación basado en la replicación de almacenamiento, la inicialización del servidor en espera ha finalizado y la base de datos en espera se ha registrado en Oracle Restart como instancia de respaldo.
-
Prod HA (Data Guard + FSFO): Para habilitar la conmutación de sitios gestionada por el broker y la conmutación por error de inicio rápido, continúa con Finaliza la base de datos de reserva para Data Guard.