Skip to main content
NetApp database solutions
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Crea la base de datos en espera de Oracle con la siembra en la capa de almacenamiento de Google Cloud NetApp Volumes

Colaboradores netapp-jsnyder

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.

  1. Configura el listener principal y comprueba el entorno en oracdb1:

    sudo su - oracle
    . ~/.bash_profile        # ORACLE_SID=orcl, ORACLE_HOME set
  2. Configura el listener en espera en oracdb2 para que incluya los servicios orcls y orcls_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
  3. Reinicia el listener mediante Oracle Restart en ambos hosts y verifica que el servicio _DGMGRL esté 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 status debe 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.

  1. 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
  2. Consulta el valor del parámetro compatible de la base de datos principal:

    # On oracdb1
    sudo -u oracle sqlplus -s / as sysdba \
      <<<"SELECT value FROM v\$parameter WHERE name='compatible';"
  3. 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 de compatible del 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.

Comprueba los requisitos previos

Confirma los siguientes requisitos previos antes de inicializar los volúmenes de reserva.

  • gcloud netapp con 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:

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.

  1. 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
    '
  2. Comprueba y actualiza el recurso de base de datos principal en oracdb1 para 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
    '
  3. Agrega el servicio de la aplicación al recurso de base de datos en espera (orcls en oracdb2). Utiliza role PRIMARY en ambos lados para que orclapp esté 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
    '
  4. 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.