Migrar Oracle RAC

Para realizar la migración de una base de datos de Oracle RAC desde un servidor de Oracle Cloud Infrastructure Classic a un sistema de Oracle Cloud Infrastructure Database, puede utilizar Oracle Data Guard. Debe configurar la base de datos en Oracle Cloud Infrastructure Classic como la base de datos primaria (la base de datos origen), que migra a una base de datos en espera (la base de datos destino) en Oracle Cloud Infrastructure en sistemas de máquina virtual.

Configurar Base de Datos Primaria (Origen)

Para configurar la base de datos primaria (la base de datos origen), configure Oracle Data Guard y modifique los archivos listener.ora y tnsnames.ora para la base de datos en espera (la base de datos destino).

Configurar Base de Datos Primaria para la Base de Datos en Espera

En esta configuración, se configura la base de datos primaria (origen) para utilizar Oracle Data Guard.

  1. Utilice SSH para conectarse al servidor de la base de datos primaria (base de datos origen).
  2. En la base de datos en espera (la base de datos destino), conéctese como propietario del software de la base de datos oracle.
    sudo su - oracle
  3. Ejecute la secuencia de comandos oraenv, que define la variable de entorno $ ORACLE_HOME.
    . oraenv
  4. Inicie sesión en la instancia de base de datos como un usuario que tenga privilegios de administrador. Por ejemplo:
    sqlplus / as sysoper
  5. Asegúrese de que la base de datos está en modo ARCHIVELOG.
    ARCHIVE LOG LIST
  6. Si la salida de Database log mode es No Archive Mode y la salida de Automatic archival es Disabled, realice lo siguiente:
    1. Salga de SQL*Plus
      SQL> exit
    2. Cierre la base de datos.
      srvctl stop database -db db_unique_name
    3. Reiniciar la base de datos en modo de montaje
      srvctl start database -db db_unique_name -o mount
    4. Inicie sesión en la instancia de base de datos como un usuario que tenga privilegios de administrador. Por ejemplo:
      sqlplus / as sysoper
    5. Activar modo archive log.
      ALTER DATABASE ARCHIVELOG;
    6. Asegúrese de que la base de datos está ahora en modo archive log.
      ARCHIVE LOG LIST
      La salida de la salida del modo de log de la base de datos debe ser Archive Mode y la salida de Automatic archival es Activada .
    7. Abra la base de datos.
      ALTER DATABASE OPEN;
  7. Conéctese con el privilegio de administrador de SYSDBA.
    CONNECT / AS SYSDBA
  8. Para un entorno de varios clientes, realice lo siguiente:
    1. Compruebe el estado de PDBS.
      SHOW PDBS
    2. Si las PDB no están abiertas, ábralas.
      ALTER PLUGGABLE DATABASE ALL OPEN;
  9. Asegúrese de que la base de datos está en modo de registro forzoso. Por ejemplo:
    SELECT NAME, OPEN_MODE, FORCE_LOGGING FROM V$DATABASE;
  10. Si es necesario, active force logging.
    ALTER DATABASE FORCE LOGGING;
  11. Compruebe la configuración.
    SELECT NAME, CDB, OPEN_MODE, FORCE_LOGGING FROM V$DATABASE;
    La columna FORCE_LOGGING debe ser YES.
  12. Utilice el comando SHOW PARAMETER para comprobar los siguientes parámetros de base de datos:
    1. DB_NAME y DB_UNIQUE_NAME: Asegúrese de que estos nombres son distintos de los que se utilizan en la base de datos destino.
    2. REMOTE_LOGIN_PASSWORDFILE: Este parámetro se debe definir en EXCLUSIVE.

Agregar Servicios Estáticos al Archivo listener.ora de Base de Datos Primaria

En esta sección, debe agregar un nuevo listener estático a listener.or a y reiniciar el listener.

  1. Utilice SSH para conectarse al primer nodo de la base de datos primaria (origen).
  2. En la línea de comandos, conéctese como grid user.
    sudo su - grid
  3. Modifique el archivo /u01/app/12.2.0.1/grid/network/admin/listener.ora para incluir el listener estático. El siguiente ejemplo muestra el formato que se debe utilizar para un listener estático:
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SDU=65535)
          (GLOBAL_DBNAME = source_db_unique_name.source_db_domain)
          (ORACLE_HOME = source_oracle_home)
          (ENVS="TNS_ADMIN= source_oracle_home/network/admin")
          (SID_NAME = source_db_name)
        )
      )
  4. Parar el listener.

    Nota:

    La parada e inicio del listener estático puede afectar a las nuevas conexiones a la base de datos durante unos segundos.
    srvctl stop listener -l LISTENER
  5. Reinicie el listener.
    srvctl start listener -l LISTENER
  6. Compruebe el estado del listener.
    lsnrctl status
  7. Compruebe que hay entradas en la salida con el estado UNKNOWN.
  8. Repita los pasos anteriores para el segundo nodo de la base de datos primaria (la base de datos origen).

Configuración de Parámetros de Base de Datos Primaria

Después de configurar la base de datos primaria (origen) y agregar servicios estáticos al archivo listener.ora de la base de datos primaria, puede configurar los parámetros Oracle Data Guard en la base de datos primaria.

  1. Utilice SSH para conectarse al primer nodo de RAC de la base de datos primaria (la base de datos origen).
  2. Inicie sesión en la instancia de base de datos como un usuario que tenga el privilegio de administrador de SYSDBA.
    sqlplus / as sysdba
    Enter password: password
  3. Activar gestión automática de archivos en espera.
    ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SID='*' SCOPE=BOTH;
  4. Defina el destino de retraso de archivo.
    ALTER SYSTEM SET ARCHIVE_LAG_TARGET=1800 SID='*' SCOPE=BOTH;
  5. Identifique los nombres y las ubicaciones del archivo de configuración de Oracle Broker. Las siguientes sentencias dependen del tipo de almacenamiento de base de datos.
    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE1='/u02/app/oracle/oradata/<db_unique_name>/dr1<db_unique_name>.dat' SID='*' SCOPE=BOTH; SCOPE=BOTH;
    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE2='/u03/app/oracle/fast_recovery_area/<db_unique_name>/dr2<db_unique_name>.dat' SID='*' SCOPE=BOTH;
  6. Active el proceso DMON de Oracle Broker para la base de datos.
    ALTER SYSTEM SET DG_BROKER_START=TRUE SCOPE=BOTH;
  7. (Opcional) Establezca los parámetros DB_BLOCK_CHECKING y DB_BLOCK_CHECKSUM.
    ALTER SYSTEM SET DB_BLOCK_CHECKING=FULL SID='*' SCOPE=BOTH;
    ALTER SYSTEM SET DB_BLOCK_CHECKSUM=FULL SID='*' SCOPE=BOTH;
  8. (Opcional) Establezca el búfer de registro en 256 megabytes.
    ALTER SYSTEM SET LOG_BUFFER=268435456 SID='*' SCOPE=BOTH;
  9. Defina el parámetro DB_LOST_WRITE_PROTECT en TYPICAL.
    ALTER SYSTEM SET DB_LOST_WRITE_PROTECT=TYPICAL SID='*' SCOPE=BOTH;
  10. Active la función de flashback de base de datos. El valor mínimo recomendado para DB_FLASHBACK_RETENTION_TARGET es 120 minutos.
    ALTER DATABASE FLASHBACK ON;
    ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=120; 
    ALTER SYSTEM ARCHIVE LOG CURRENT;
  11. Agregue los redo logs en espera, según el redo log en línea. Puede utilizar la siguiente consulta para determinar el número y el tamaño (en bytes) de los ORL. El tamaño de los redo logs en espera debe ser el mismo que el de los redo logs en línea, pero debe agregar uno o más redo logs en espera adicionales que los redo logs en línea. En el siguiente ejemplo, existen cuatro redo logs en línea, por lo que debe agregar al menos cinco redo logs en espera. Es decir, para cada thread, debe especificar los redo logs actuales más al menos uno y, a continuación, utilizar el mismo tamaño que los redo logs originales.
    1. Ejecute la siguiente consulta para determinar el número y el tamaño en bytes de los redo logs de Oracle.
      SELECT GROUP#, BYTES FROM V$LOG;
      La salida debe ser similar a la siguiente.
      GROUP# BYTES
      ------ ----------
      1      1073741824
      2      1073741824
      3      1073741824
      4      1073741824
    2. Para el primer thread, especifique los redo logs actuales más uno más y utilice el mismo tamaño que los redo logs actuales. Por ejemplo:
      ALTER DATABASE ADD STANDBY LOGFILE THREAD 1
      GROUP 5 SIZE 1073741824,
      GROUP 6 SIZE 1073741824, 
      GROUP 7 SIZE 1073741824,
      GROUP 8 SIZE 1073741824,
      GROUP 9 SIZE 1073741824;
    3. Para el segundo thread, especifique los redo logs actuales más uno más y utilice el mismo tamaño que los redo logs actuales. Por ejemplo:
      ALTER DATABASE ADD STANDBY LOGFILE THREAD 2
      GROUP 10 SIZE 1073741824,
      GROUP 11 SIZE 1073741824, 
      GROUP 12 SIZE 1073741824,
      GROUP 13 SIZE 1073741824,
      GROUP 14 SIZE 1073741824;
    4. Verifique que ha creado el número correcto de redo logs en espera.
      SELECT GROUP#, BYTES FROM V$STANDBY_LOG;
      Debe aparecer una salida similar a la siguiente:
          GROUP#      BYTES
      ---------- ----------
               5 1073741824
               6 1073741824
               7 1073741824
               8 1073741824
               9 1073741824
              10 1073741824
              11 1073741824
              12 1073741824
              13 1073741824
              14 1073741824
      10 rows selected.

Configurar Base de Datos en Espera (Destino)

Para configurar la base de datos en espera (destino), debe borrar la base de datos en espera y, a continuación, modificar los archivos oratab, listener.ora y tnsnames.ora .

Agregar Entradas para Instancias de Base de Datos

Actualice el archivo /etc/oratab en los nodos de Oracle RAC y agregue una entrada para la instancia de base de datos de la siguiente forma:

  1. Utilice SSH para conectarse al primer nodo de la base de datos origen (la base de datos primaria) que se va a migrar.
  2. Actualice /etc/oratab para agregar el identificador de instancia de base de datos a la entrada de base de datos realizando las siguientes acciones:
    1. Edite /etc/oratab:
      sudo vi /etc/oratab
    2. Agregue una entrada para la base de datos con el siguiente formato:
      $ORACLE_SID:$ORACLE_HOME:N
      Ejemplo de nodo 1:
      orcl1:/u01/app/oracle/product/12.1.0.2/dbhome_1:N
      Ejemplo de nodo 2:
      orcl2:/u01/app/oracle/product/12.1.0.2/dbhome_1:N
  3. Ejecute la secuencia de comandos oraenv para establecer variables de entorno de la base de datos como $ ORACLE_HOME :
    . oraenv
  4. Repita los pasos anteriores para el segundo nodo Oracle RAC.

Borrar Base de Datos en Espera (Destino)

  1. Utilice SSH para conectarse al servidor en espera (destino).
  2. Cambie al usuario de oracle propietario de la base de datos.
  3. Inicie sesión en la instancia de base de datos como un usuario que tenga el privilegio de administrador de SYSDBA.
    sqlplus / as sysdba
    Enter password: password
  4. Cierre la base de datos como se indica a continuación:
    alter system set cluster_database=false sid='*' scope=spfile;
    System altered.
  5. Salga de SQL*Plus:
     exit
  6. Para la base de datos con srvctl:
    srvctl stop database -db database_unqiue_name
  7. Inicie sesión en la instancia de base de datos como un usuario que tenga el privilegio de administrador de SYSDBA.
    sqlplus / as sysdba
    Enter password: password
  8. Inicie y monte la base de datos en modo restringido:
     startup mount restrict
    ORACLE instance started.
    Total System Global Area 7516192768 bytes
    Fixed Size                  2941872 bytes
    Variable Size            1409289296 bytes
    Database Buffers         6073352192 bytes
    Redo Buffers               30609408 bytes
    Database mounted.
  9. Borrar Base de Datos en Espera:
     drop database;
    Database dropped.

Agregar Servicios Estáticos al Archivo listener.ora de Base de Datos en Espera

Después de agregar servicios estáticos al archivo listener.ora de la base de datos en espera (la base de datos origen), debe reiniciar el listener.

  1. Utilice SSH para conectarse al primer nodo Oracle RAC del servidor de la base de datos en espera (base de datos origen).
  2. En la línea de comandos, conéctese como usuario de grid.
    sudo su - grid
  3. Modifique elarchivo $ ORACLE_HOME/network/admin/listener.ora para incluir static listener. El siguiente ejemplo muestra el formato que se debe utilizar para un static listener:
    SID_LIST_LISTENER=
     (SID_LIST=
      (SID_DESC=
      (SDU=65535)
      (GLOBAL_DBNAME = standby_db_unique_name.standby_db_domain)
      (SID_NAME = standby_db_sid)
      (ORACLE_HOME= standby_oracle_home)
      (ENVS="TNS_ADMIN= standby_oracle_home/network/admin")
      )
    )
  4. Utilice la utilidad srvctl para parar el listener.
    srvctl stop listener -l LISTENER
  5. Reinicie listener.
    srvctl start listener -l LISTENER
  6. Compruebe el estado de listener.
    lsnrctl status

    Nota:

    output es el nuevo listener con el estado UNKNOWN
  7. Repita estos pasos para el segundo nodo Oracle RAC.

Copiar Carteras de TDE de la Base de Datos Primaria en la Base de Datos en Espera

Puede copiar manualmente los archivos de cartera de TDE de la base de datos primaria (la base de datos origen) en el sistema de la base de datos en espera (la base de datos destino) mediante el protocolo de copia segura (SCP).

Comprimir la cartera de TDE

Debe realizar esta operación en la base de datos primaria (la base de datos origen).

  1. Utilice SSH para conectarse al servidor de la base de datos primaria (base de datos origen).
  2. En la línea de comandos, conéctese como propietario del software de la base de datos oracle.
    sudo su - oracle
  3. Ejecute la secuencia de comandos oraenv, que define la variable de entorno $ ORACLE_HOME.
    . oraenv
  4. Para buscar la ubicación de la cartera, conéctese a la instancia de la base de datos primaria (base de datos origen) con elprivilegio de administrador SYSDBA .
    sqlplus / as sysdba
  5. Consulte la columna WRL_PARAMETER de la vista dinámica V$ENCRYPTION_WALLET para buscar el directorio en el que está la cartera.
    SELECT * FROM V$ENCRYPTION_WALLET;
  6. Salga de SQL*Plus.
    exit
  7. Vaya al directorio en el que se encuentran los archivos de cartera. Por ejemplo:
    cd /u02/app/oracle/admin/source_db_unique_name
  8. Utilice el comando tar para comprimir la cartera de TDE. Por ejemplo:
    tar cvf tde_wallet.tar ./tde_wallet
    Aparecerá una salida similar a la siguiente:
    ./tde_wallet/
    ./tde_wallet/ewallet.p12
    ./tde_wallet/cwallet.sso
    ./tde_wallet/ewallet_2018021607225910.p12
Copie la cartera de TDE y defina los permisos en el directorio de cartera

Después de realizar una copia de seguridad del archivo de cartera de TDE, debe crear un directorio para la cartera y definir los permisos en este directorio.

  1. Copie el archivo tar de la cartera en un directorio tmp. Por ejemplo:
    cp tde_wallet.tar /tmp/
  2. Salga para convertirse en el usuario de OPC.
    $ exit
  3. Copie la clave privada del host local en la base de datos primaria.
    Por defecto, las claves privadas no se almacenan en las bases de datos
    scp -i /home/opc/.ssh/privateKey opc@<Primary DB IP>:/home/opc/.ssh/
  4. Utilice SCP para copiar los archivos de cartera de la base de datos primaria (base de datos origen) en la base de datos en espera (base de datos destino), en eldirectorio /opt/oracle/dcs/commonstore/wallets/tde/$ ORACLE_UNQNAME . Por ejemplo:
    scp -i /home/opc/.ssh/privateKey /tmp/tde_wallet.tar opc@<Standby DB IP>:/tmp/
    Aparecerá una salida similar a la siguiente:
    tde_wallet.tar
    100% 20KB 20.0KB/s 00:00
  5. Utilice SSH para conectarse al servidor de base de datos destino.
  6. Inicie sesión como propietario del software de base de datos oracle.
    sudo su - oracle
  7. Ejecute la secuencia de comandos oraenv, que define la variable de entorno $ ORACLE_HOME.
    . oraenv
  8. Para buscar la ubicación de la cartera, muestre el contenido de sqlnet.ora:
    cat $ORACLE_HOME/network/admin/sqlnet.ora
  9. Elparámetro ENCRYPTION_WALLET_LOCATION muestra la ubicación de la cartera. Por ejemplo:
    ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/opt/oracle/dcs/commonstore/wallets/tde/$ORACLE_UNQNAME)))
  10. Vaya al directorio de cartera de destino. Por ejemplo:
    cd /opt/oracle/dcs/commonstore/wallets/tde
  11. Compruebe que la cartera correcta está en este directorio.
    ls target_db_unique_name
  12. Realice una copia de seguridad del archivo de cartera. Por ejemplo:
    mv target_db_unique_name target_db_unique_name.old
  13. Cree un directorio en el que almacenar la cartera. Por ejemplo:
    mkdir target_db_unique_name
  14. Compruebe los permisos en el directorio de carteras.
    ls -ld target_db_unique_name
  15. Si es necesario, otorgue al propietario del software de la base de datos los permisos oracle read, write y execute.
    chmod 700 target_db_unique_name
  16. Vuelva a comprobar los permisos.
    ls -ld target_db_unique_name
  17. Copie el archivo tar de la cartera en el directorio actual.
    cp /tmp/tde_wallet.tar .
  18. Compruebe los permisos.
    ls -rlt
    Aparecerá una salida similar a la siguiente:
    total 124
    drwx------ 2 oracle oinstall 20480 Feb 16 09:25 target_db_unique_name.old
    drwx------ 2 oracle oinstall 20480 Feb 16 10:16 target_db_unique_name
    -rw-r--r-- 1 oracle oinstall 20480 Feb 16 10:17 tde_wallet.tar
Completar el proceso de cartera de TDE

Debe extraer el archivo tar de cartera de TDE y, a continuación, mover su contenido al directorio de carteras en la base de datos en espera (base de datos destino).

  1. En la base de datos en espera (base de datos destino), asegúrese de que se encuentra en el directorio de cartera correcto. Por ejemplo:
    pwd
     
    # Output similar to the following should appear:
    /opt/oracle/dcs/commonstore/wallets/tde
  2. Extraiga el archivo tar.
    tar xvf tde_wallet.tar
    Debe aparecer una salida similar a la siguiente:
    ./tde_wallet/ewallet.p12
    ./tde_wallet/ewallet_2018050819024979.p12
    ./tde_wallet/cwallet.sso
  3. Mueva el contenido tde_wallet al directorio de carteras en la base de datos en espera (la base de datos destino).
    mv ./tde_wallet/* ./target_db_unique_name
  4. Elimine el contenido tde_wallet de la base de datos en espera (la base de datos destino).
    rm -rf ./tde_wallet

Configurar el archivo de parámetros de inicialización en espera e iniciar la instancia en modo NOMOUNT

Después de configurar el archivo de inicialización en espera, puede reiniciar la base de datos en modo NOMOUNT.

  1. Utilice SSH para conectarse al servidor de la base de datos en espera (base de datos destino).
  2. Inicie sesión como propietario del software de base de datos oracle.
    sudo su - oracle
  3. Ejecute el script oraenv, que define la variable de entorno $ORACLE_HOME.
    . oraenv
  4. Vaya al directorio dbs.
    cd $ORACLE_HOME/dbs
  5. Cree un archivo de parámetros de inicialización temporal, denominado init_<sid>.ora donde <sid> es el SID de la base de datos destino de la siguiente forma:
    echo "*.db_name='db_name'" > $ORACLE_HOME/dbs/init<sid>.ora
    echo "*.db_unique_name='target_db_unique_name'" >> $ORACLE_HOME/dbs/init<sid>.ora
  6. Realice una copia de seguridad del archivo de contraseñas existente, si existe. Por ejemplo:
    mv $ORACLE_HOME/dbs/orapw<sid> $ORACLE_HOME/dbs/orapw<sid>.old
  7. Cree un nuevo archivo de contraseñas. Por ejemplo:
    orapwd file=$ORACLE_HOME/dbs/orapwtarget password=admin_password_for_primary entries=5
  8. Cambie el archivo de contraseñas del cluster al archivo de contraseñas de non-ASM:
    $ srvctl modify database -d <oci_db_unique_name> -pwfile $ORACLE_HOME/dbs/orapw<oci_oracle_sid>
    $ srvctl config database -d <oci_db_unique_name>
  9. Conéctese a la instancia de la base de datos en espera (base de datos destino) como un usuario que tenga el privilegio de administrador de sysdba. Por ejemplo:
    sqlplus / as sysdba 
  10. Cierre la base de datos. Por ejemplo:
    shutdown immediate
  11. Reinicie la base de datos en modo NOMOUNT con el archivo de parámetros de inicialización init<sid>.ora.
    startup force nomount PFILE=?/dbs/init<sid>.ora

Duplicar Base de Datos Destino para la Base de Datos en Espera de la Base de Datos Activa

Puede ejecutar un script para duplicar la base de datos en espera (la base de datos destino). Si la base de datos primaria (la base de datos origen) es grande, puede asignar canales adicionales para mejorar el rendimiento. Para una base de datos recién instalada, un canal normalmente ejecuta la duplicación de la base de datos en un par de minutos. Asegúrese de que no se produce ningún error después de ejecutar la operación de duplicación de Oracle Recovery Manager (Oracle RMAN). Si se producen errores, reinicie la base de datos mediante el archivo de parámetros de inicialización (no spfile), en caso de que se genere en el directorio $ORACLE_HOME/dbs como parte del proceso de duplicación de Oracle RMAN.

  1. Conéctese a la base de datos en espera (la base de datos destino) como propietario del software de la base de datos oracle.
    su - oracle
  2. Ejecute la secuencia de comandos oraenv, que define la variable de entorno $ ORACLE_HOME.
    . oraenv
  3. Crear dup.rcv
    vi dup.rcv
    Pegue el contenido del script mientras se actualizan las variables necesarias.
  4. Con la base de datos en espera (base de datos destino) en modo NOMOUNT, conéctese a Oracle RMAN.
    rman
    RMAN> connect target sys@<primary_db_tnsnames_name>
    target database Password: password
    RMAN> connect auxiliary sys@<standby_db_tnsnames_name>
    auxiliary database Password: password
  5. Ejecute el siguiente script para duplicar la base de datos destino para una base de datos en espera de una base de datos activa. El siguiente ejemplo muestra el script dup.rcv, que se debe crear por el usuario y se basa en la nota de My Oracle Support 2369137 . RMAN Explicación de duplicados activos en el método RMAN-06217 -- PUSH & PULL Explicación (ID de documento 2369137.1). En este ejemplo, el archivo de comandos dup.rcv se ha personalizado para transferir la duplicación (copias de imagen) del sistema de archivos a Oracle Automatic Storage Management (Oracle ASM). Otras opciones, como del sistema de archivos a Oracle Automatic Storage Management Cluster File System u Oracle ASM a Oracle ASM, necesitarán cambios en los parámetros de destino de archivos y los parámetros de conversión de nombres de archivos.
    @dup.rcv
    Output similar to the following appears:
    
    RMAN> run {
    2> allocate channel prmy1 type disk;
    3> allocate channel prmy2 type disk;
    4> allocate channel prmy3 type disk;
    5> allocate channel prmy4 type disk;
    6> allocate auxiliary channel stby1 type disk;
    7> allocate auxiliary channel stby2 type disk;
    8> allocate auxiliary channel stby type disk;
    9> duplicate target database for standby from active database dorecover
    10> spfile
    11> parameter_value_convert '/u02/app/oracle/oradata/source_db_name','+DATA'
    12> Set CLUSTER_DATABASE='FALSE'
    13> set db_unique_name='<target_db_unique_name>'
    14> set db_create_file_dest='+DATA'
    15> set db_create_online_log_dest_1='+RECO'
    16> set db_recovery_file_dest='+RECO'
    17> set audit_file_dest='/u01/app/oracle/admin/db_name/adump'
    18> set control_files='+DATA','+RECO'
    19> set dg_broker_config_file1='+DATA/<target_db_unique_name>/dr1<target_db_unique_name>.dat'
    20> set dg_broker_config_file2='+RECO/<target_db_unique_name>/dr2<target_db_unique_name>.dat'
    21> set dispatchers='(PROTOCOL=TCP) (SERVICE=<target_db_name>XDB)'
    22> set instance_name='<target_db_name>'
    23> set db_domain='<target_db_domain>'
    24> set db_recovery_file_dest='+RECO'
    25> ;
    26> }

Pasos Posteriores a Duplicación de Oracle Recovery Manager

Después de terminar la operación de duplicación de Oracle Recovery Manager (Oracle RMAN), debe realizar estas tareas de limpieza en la base de datos en espera (base de datos destino).

Actualización del archivo de contraseñas

Actualice el archivo de contraseñas de la siguiente manera:

  1. Vuelva a mover el archivo de contraseñas a ASM:
    [oracle@oci_node1 ~]$ cp $ORACLE_HOME/dbs/orapw<oci_node1_oracle_sid> /tmp/orapw<oci_node1_oracle_sid>
  2. Salga al usuario de opc:
    [oracle@oci_node1 ~]$ exit
  3. Cambie al usuario grid:
    [opc@oci_node1 ~]$ sudo su - grid
  4. Cambiar a petición de datos de ASMCMD:
    [grid@oci_node1 ~]$ asmcmd
  5. Copie la contraseña en ASMCMD:
    ASMCMD> pwcopy --dbuniquename <oci_db_unique_name> '/tmp/orapw<oci_node1_oracle_sid>' '+DATA'

    Nota:

    El comando puede mostrar errores ya que ASM es una versión diferente a la de la base de datos. Los errores se pueden ignorar porque la incidencia de registro se corrige más adelante en este procedimiento.

  6. Navegue al directorio +DATA/<OCI_DB_UNIQUE_NAME>/PASSWORD/para buscar el identificador_generado_sistema que se va a utilizar en el paso 9 .
    ASMCMD> cd +DATA/<OCI_DB_UNIQUE_NAME>/PASSWORD/ 
    ASMCMD> ls -lt
  7. Salga de ASMCMD y del usuario de grid:
    ASMCMD> exit
    [grid@oci_node1 ~]$ exit
  8. Cambiar alusuario de Oracle :
    [opc@oci_node1 ~]$ sudo su - oracle
  9. Ejecute la secuencia de comandos oraenv, que define la variable de entorno $ ORACLE_HOME.
    . oraenv
  10. Modifique el archivo de contraseñas del cluster a ASM:
    [oracle@oci_node1 ~]$ srvctl modify database -d <oci_db_unique_name> -pwfile +DATA/<OCI_DB_UNIQUE_NAME>/PASSWORD/pwd<oci_db_unique_name><system_generated_id>
    [oracle@oci_node1 ~]$ rm $ORACLE_HOME/dbs/orapw<oci_node1_oracle_sid>
Activar Oracle Flashback

Debe activar Oracle Flashback.

  1. Utilice SSH para conectarse al servidor de la base de datos en espera (base de datos destino).
  2. Inicie sesión como propietario del software de base de datos oracle.
    sudo su - oracle
  3. Inicie sesión en la instancia de base de datos como un usuario que tenga el privilegio de administrador de SYSOPER. Por ejemplo:
    sqlplus / as sysoper
    Enter password: password
  4. Active Oracle Flashback.
    ALTER DATABASE FLASHBACK ON;
  5. Conéctese como usuario con el privilegio de administrador de SYSDBA.
    CONNECT / AS SYSDBA
  6. Defina el destino de retención de flashback.
    ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=120;
Mover el archivo spfile a Oracle Automatic Storage Management

Debe mover el archivo spfile a Oracle Automatic Storage Management.

  1. Utilice SSH para conectarse al servidor de la base de datos en espera (base de datos destino).
  2. Inicie sesión en la instancia de base de datos como un usuario que tenga el privilegio de administrador de SYSOPER.
  3. Cree y mueva el archivo spfile a Oracle Automatic Storage Management.
    1. Cree el pfile.
      create pfile='/tmp/init<sid>.ora' from spfile;
    2. Salga de SQL*Plus:
      SQL> exit
    3. Edite el pfile:
      vi /tmp/init<sid>.ora
    4. Suprima la siguiente línea del archivo:
      *.instance_name=<sid_for_node1>
    5. Agregue las siguientes líneas para cada nodo:
      <sid_for_node1>.instance_name='<sid_for_node1>'
      <sid_for_node2>.instance_name='<sid_for_node2>'
    6. Inicie sesión en SQL*Plus como usuario administrador. Por ejemplo:
      sqlplus sys / as sysdba
      Password: password
    7. Cerrar Base de Datos
      shutdown immediate
    8. Reinicie la base de datos en modo MOUNT utilizando el archivo initdb_name.ora que acaba de crear.
      startup mount pfile='/tmp/init<sid>.ora';
    9. Cree el archivo spfile.
      create spfile='+DATA' from pfile='/tmp/init<sid>.ora';
  4. Salga de SQL*Plus.
  5. Como usuario grid, busque el archivo spfile en Oracle Automatic Storage Management mediante el comando asmcmd.
    asmcmd
    ASMCMD> cd +DATA/target_db_unique_name/PARAMETERFILE/
    ASMCMD> ls -lt
    Aparecerá una salida similar a la siguiente:
    Type           Redund  Striped  Time             Sys  Name
    PARAMETERFILE  UNPROT  COARSE   APR 09 16:00:00  Y    spfile.262.973010033
    Anote el nombre de ASM (spfile.262.973010033), que necesitará en la siguiente tarea.
Cambiar el archivo .ora de inittarget_db_name para hacer referencia al archivo spfile

Puede modificar el archivo init<sid>.ora para que haga referencia al archivo spfile.

  1. Utilice SSH para conectarse al servidor de la base de datos en espera (base de datos destino).
  2. Inicie sesión como propietario del software de base de datos oracle.
    su - oracle
  3. Ejecute el script oraenv para definir la variable de entorno $ORACLE_HOME.
    . oraenv
  4. Vaya al directorio $ORACLE_HOME/dbs.
    cd $ORACLE_HOME/dbs
  5. Asegúrese de que el archivo init<sid>.ora está en este directorio.
    ls *.ora
  6. Cambie el archivo inittarget_db_name.ora para que haga referencia al archivo spfile. Por ejemplo:
    mv spfiletarget_db_name.ora spfiletarget_db_name.ora.stby
    mv init<sid>.ora init<sid>.ora.stby
    echo ''SPFILE='+DATA/target_db_unique_name/PARAMETERFILE/spfile.262.973010033'' > init<sid>.ora
    cat init<sid>inittarget_db_name.ora--To check the file
    En esta salida, spfile.262.973010033 es el nombre del archivo que generó al mover elarchivo spfile a Oracle Automatic Storage Management en la tarea anterior.
    Aparecerá una salida similar a la siguiente:
    SPFILE='+DATA/target_db_unique_name/PARAMETERFILE/spfile.262.973010033'
Modificar e Iniciar la Base de Datos en Espera en Modo MONTADA

Puede utilizar srvctl para modificar e iniciar la base de datos en espera (la base de datos destino).

  1. Utilice SSH para conectarse al servidor de la base de datos en espera (base de datos destino).
  2. Inicie sesión como propietario del software de base de datos oracle.
    su - oracle
  3. Ejecute la secuencia de comandos oraenv, que define la variable de entorno $ ORACLE_HOME.
    . oraenv
  4. Utilice srvctl para modificar e iniciar la base de datos en espera (base de datos destino) en modo MOUNT. Por ejemplo:
    srvctl modify database -db target_db_unique_name -role /
    PHYSICAL_STANDBY -s "READ ONLY"  -spfile /
    +DATA/target_db_unique_name/PARAMETERFILE/spfile.262.973010033
    
    srvctl config database -db target_db_unique_name
  5. Inicie sesión en la instancia de base de datos como un usuario que tenga el privilegio de administrador de SYSOPER.
    sqlplus / as sysoper
  6. Cierre la base de datos,
    SQL*Plus
    SHUTDOWN IMMEDIATE
  7. iniciar la base de datos en el montaje
    STARTUP MOUNT
  8. modificar el parámetro cluster_database
    
    alter  system set cluster_database=True  sid='*' scope=spfile;
  9. Cerrar Base de Datos
    SHUTDOWN IMMEDIATE
  10. Salga de SQL*Plus.
    EXIT
  11. Inicie la base de datos en modo MOUNT mediante srvctl.
    srvctl start database -db target_db_unique_name -o mount
  12. Inicie sesión en la instancia de base de datos como un usuario que tenga el privilegio de administrador de SYSDBA.
    sqlplus / as sysdba
  13. Consulte la vista dinámica V$DATABASE para asegurarse de que la base de datos está en modo MOUNT.
    SELECT NAME, OPEN_MODE FROM V$DATABASE;
    #Output similar al siguiente:
    NAME              OPEN_MODE
    --------------    ---------
    source_db_name    MOUNTED
Definir los parámetros de conversión de nombre de archivo log y base de datos en la base de datos primaria

Debe definir los parámetros de conversión para la base de datos y el nombre de archivo log en la base de datos primaria (base de datos origen).

  1. Utilice SSH para conectarse al servidor de la base de datos primaria (base de datos origen).
  2. Cambiar al usuario de Oracle:
    sudo su - oracle
  3. Inicie sesión en la instancia de base de datos como un usuario que tenga el privilegio de administrador de SYSDBA. Por ejemplo:
    sqlplus / as sysdba
    Enter password: password
  4. Compruebe el parámetro CONVERT.
    SHOW PARAMETER CONVERT
    Aparecerá una salida similar a la siguiente:
    NAME                         TYPE        VALUE
    ------------------------------------ ----------- ------
    db_file_name_convert                 string
    log_file_name_convert                string
    pdb_file_name_convert                string
    La columna VALUE debe estar vacía (nula). Si existe un valor, tome nota de este valor una vez finalizada la migración. Una vez finalizada la migración, estos valores se establecen como nulos.
  5. Utilice la información de esta salida para definir elparámetro DB_FILE_NAME_CONVERT .

    Nota:

    Tenga en cuenta que, en este paso, SOURCE_DB_NAME debe estar en mayúsculas.
    ALTER SYSTEM SET DB_FILE_NAME_CONVERT='+DATA','/u02/app/oracle/oradata/SOURCE_DB_NAME/'' SID='*' SCOPE=SPFILE;
  6. Defina el parámetro LOG_FILE_NAME_CONVERT. Por ejemplo:
    ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='+RECO','/u04/app/oracle/redo/' SID='*' SCOPE=SPFILE;
  7. Reinicie la base de datos.
    srvctl stop database -db source_db_name
    srvctl start database -db source_db_name
Definir los parámetros de conversión de nombre de archivo log y base de datos en la base de datos en espera

Debe definir los parámetros de conversión para la base de datos y el nombre de archivo log en la base de datos en espera (base de datos destino).

  1. Utilice SSH para conectarse al servidor de la base de datos en espera (base de datos destino).
  2. Cambiar al usuario de Oracle:
    sudo su - oracle
  3. Inicie sesión en la instancia de base de datos como un usuario que tenga el privilegio de administrador de SYSDBA. Por ejemplo:
    sqlplus / as sysdba
    Enter password: password
  4. Compruebe el parámetro CONVERT.
    SHOW PARAMETER CONVERT
    Aparecerá una salida similar a la siguiente:
     NAME                        TYPE        VALUE
    ------------------------------------ ----------- ------
    db_file_name_convert                 string
    log_file_name_convert                string
    pdb_file_name_convert                string
    La columna VALUE debe estar vacía (nula). Si existe un valor, tome nota de este valor una vez finalizada la migración. Una vez finalizada la migración, estos valores se establecen como nulos.
  5. Utilice la información de esta salida para definir el parámetro DB_FILE_NAME_CONVERT. Por ejemplo:

    Nota:

    Tenga en cuenta que, en este paso, SOURCE_DB_NAME debe estar en mayúsculas.
    ALTER SYSTEM SET DB_FILE_NAME_CONVERT='/u02/app/oracle/oradata/SOURCE_DB_NAME/','+DATA' SID='*' SCOPE=SPFILE;
  6. Defina el parámetro LOG_FILE_NAME_CONVERT. Por ejemplo:
    ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='/u04/app/oracle/redo/','+RECO'
    SID='*' SCOPE=SPFILE;
  7. Reinicie la base de datos.
    srvctl stop database -db target_db_unique_name
    srvctl start database -db target_db_unique_name -o mount

Configurar Base de Datos con Oracle Data Guard Broker

Puede utilizar la utilidad dbmgrl para configurar la base de datos primaria (la base de datos origen) o la base de datos en espera (la base de datos destino) con Oracle Data Guard Broker.

  1. Utilice SSH para conectarse a la base de datos primaria (base de datos origen) o al servidor de la base de datos en espera (base de datos destino).
  2. Inicie la utilidad de la línea de comandos dgmgrl:
    dgmgrl
  3. Conéctese como usuario SYS desde el sistema de base de datos primaria o en espera. Por ejemplo, para conectarse a una base de datos primaria cuyonombre TNS es OCIC-ORCL:
    connect sys@ocic-orcl
    Enter password: password
  4. Con la utilidad dbmgrl, cree la configuración y la identidad de Oracle Data Guard para las bases de datos primaria y en espera. Por ejemplo:
    create configuration configuration_name as primary database is source_db_unique_name connect identifier is OCIC-ORCL; -- Uses the source TNS name
     
    add database target_db_unique_name as connect identifier is OCI-ORCL; --Uses the target TNS name
  5. Active la configuración.
    enable configuration
  6. Mostrar la configuración de Oracle Data Guard en la base de datos en espera.
    show configuration
    Aparecerá una salida similar a la siguiente:
    Configuration - configuration_name
      Protection Mode: MaxPerformance
      Members:
      source_db_unique_name           - Primary database
        target_db_unique_name         - Physical standby database
    
    Fast-Start Failover: DISABLED
    
    Configuration Status:
    SUCCESS   (status updated 12 seconds ago)

Validar Oracle Data Guard Broker en la Base de Datos Primaria y la Base de Datos en Espera

Puede utilizar SQL*Plus para validar Oracle Data Guard Broker en la base de datos primaria (la base de datos origen) y la base de datos en espera (la base de datos destino).

Validar Oracle Data Guard Broker en la Base de Datos Primaria

Puede utilizar SQL*Plus para validar Oracle Data Guard Broker en la base de datos primaria (base de datos origen).

  1. Utilice SSH para conectarse al servidor de la base de datos primaria (base de datos origen).
  2. Conéctese como un usuario que tenga el privilegio de administrador de SYSDBA. Por ejemplo, para una base de datos primaria cuyo nombre TNS es OCIC-ORCL:
    connect sys@ocic-orcl as sysdba
    Enter password: password
  3. Consultar la vista dinámica de V$DATABASE.
    SELECT FORCE_LOGGING, FLASHBACK_ON, OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, DATAGUARD_BROKER, PROTECTION_MODE FROM V$DATABASE;
    
  4. Aparecerá una salida similar a la siguiente:
    
    FORCE_LOGGING                           FLASHBACK_ON       OPEN_MODE
    --------------------------------------- ------------------ -----------
    DATABASE_ROLE    SWITCHOVER_STATUS    DATAGUAR PROTECTION_MODE
    ---------------- -------------------- -------- --------------------
    YES                                     YES                READ WRITE
    PRIMARY          TO STANDBY           ENABLED  MAXIMUM PERFORMANCE
    En la salida, DATABASE_ROLE debe ser PRIMARY y OPEN_MODE debe ser READ WRITE.

Validar Oracle Data Guard Broker en la Base de Datos en Espera

Puede utilizar SQL*Plus para validar Oracle Data Guard Broker en la base de datos en espera (la base de datos destino).

  1. Utilice SSH para conectarse al servidor de la base de datos en espera (base de datos destino).
  2. Conéctese como un usuario que tenga el privilegio de administrador de SYSDBA.
  3. Consultar la vista dinámica de V$DATABASE.
    SELECT FORCE_LOGGING, FLASHBACK_ON,
    OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS,
    DATAGUARD_BROKER, PROTECTION_MODE
    FROM V$DATABASE;
    Aparecerá una salida similar a la siguiente:
    FORCE_LOGGING                           FLASHBACK_ON       OPEN_MODE
    --------------------------------------- ------------------ -----------
    DATABASE_ROLE    SWITCHOVER_STATUS    DATAGUAR PROTECTION_MODE
    ---------------- -------------------- -------- --------------------
    YES                                     YES                MOUNTED
    PHYSICAL STANDBY NOT ALLOWED          ENABLED  MAXIMUM PERFORMANCE
    La salida debe mostrar DATABASE_ROLE como PHYSICAL STANDBY y OPEN_MODE como MOUNTED.
  4. Verifique que los procesos de Oracle Data Guard se han iniciado en la base de datos en espera.
    SELECT PROCESS,PID,DELAY_MINS FROM V$MANAGED_STANDBY;
    Aparecerá una salida similar a la siguiente:
    PROCESS   PID                      DELAY_MINS
    --------- ------------------------ ----------
    ARCH      9207                              0
    ARCH      9212                              0
    ARCH      9216                              0
    ARCH      9220                              0
    RFS       1065                              0
    RFS       1148                              0
    RFS       1092                              0
    MRP0      972                               0
    RFS       1208                              0
    La salida debe indicar que los procesos se están ejecutando con un retraso determinado o sin retraso. Si DELAY_MINS para MRP0, las bases de datos se sincronizan.
  5. Compruebe el parámetro LOG_ARCHIVE_DEST.
    SHOW PARAMETER LOG_ARCHIVE_DEST_
    Aparecerá una salida similar a la siguiente:
    NAME                         TYPE      VALUE
    ---------------------------- --------- -----------------------------
    log_archive_dest_1           string       
                                           location=USE_DB_RECOVERY_FILE_
                                           DEST, valid_for=(ALL_LOGFILES,
                                           ALL_ROLES)
    log_archive_dest_10          string
    log_archive_dest_11          string
    log_archive_dest_12          string
    log_archive_dest_13          string
    log_archive_dest_14          string
    log_archive_dest_15          string
    ...
    log_archive_dest_2           string    service="oci-orcl", ASYNC
                                           NOAF FIRM delay=0 optional
                                           compression=disable
                                           max_failure=0 max_connections
                                           =1 reopen=300 db_unique_name=
                                           "source_db_unique_name"
                                           net_timeout=30, valid_for=
                                           (online_logfile,all_roles)
    ...
    
    La salida debe ser similar a la salida de log_archive_dest_2, con el servicio que apunta a la base de datos en espera (base de datos destino), que en este ejemplo es oci-orcl.
  6. Compruebe el parámetro LOG_ARCHIVE_CONFIG.
    SHOW PARAMETER LOG_ARCHIVE_CONFIG#
    Aparecerá una salida similar a la siguiente:
    
    NAME                         TYPE      VALUE
    ---------------------------- --------- -----------------------------------------------------------
    log_archive_config           string    dg_config=(source_db_unique_name,target_db_unique_name)
    
  7. Compruebe el parámetro FAL_SERVER.
    SHOW PARAMETER FAL_SERVER
    Aparecerá una salida similar a la siguiente:
    
    NAME                        TYPE      VALUE
    --------------------------- --------- ----------
    fal_server                  string    <tns_entry_of_primary>  
  8. Compruebe el parámetro LOG_ARCHIVE_FORMAT.
    SHOW PARAMETER LOG_ARCHIVE_FORMAT
    Aparecerá una salida similar a la siguiente:
    
    NAME                        TYPE      VALUE
    --------------------------- --------- --------------
    log_archive_format          string    %t_%s_%r.dbf

Complete la validación en la base de datos primaria

Puede utilizar dgmrgl para completar la validación del broker de Oracle Data Guard en la base de datos primaria (la base de datos origen).

  1. Utilice SSH para conectarse al servidor de la base de datos primaria (base de datos origen).
  2. Repita los pasos de 5 a 8 en el tema Validar Oracle Data Guard Broker en la base de datos en espera en la base de datos primaria (base de datos origen).
  3. Inicie la utilidad de la línea de comandos dgmgrl:
    dgmgrl
  4. Conéctese como usuario SYS desde el sistema de base de datos primaria o en espera. Por ejemplo, para conectarse a una base de datos primaria cuyo nombre TNS es OCIC-ORCL:
    connect sys@primary_db_tnsnames_name
    Enter password: password
  5. Compruebe la configuración de Oracle Data Guard.
    show configuration verbose
    Aparecerá una salida similar a la siguiente:
    Configuration - configuration_name
     
      Protection Mode: MaxPerformance
      Members:
      source_db_unique_name           - Primary database
        target_db_unique_name         - Physical standby database
     
      Properties:
        FastStartFailoverThreshold      = '30'
        OperationTimeout                = '30'
        TraceLevel                      = 'USER'
        FastStartFailoverLagLimit       = '30'
        CommunicationTimeout            = '180'
        ObserverReconnect               = '0'
        FastStartFailoverAutoReinstate  = 'TRUE'
        FastStartFailoverPmyShutdown    = 'TRUE'
        BystandersFollowRoleChange      = 'ALL'
        ObserverOverride                = 'FALSE'
        ExternalDestination1            = ''
        ExternalDestination2            = ''
        PrimaryLostWriteAction          = 'CONTINUE'
     
    Fast-Start Failover: DISABLED
  6. Compruebe el estado en la base de datos en espera (la base de datos destino). Por ejemplo:
    show database verbose target_db_unique_name
    Después de completar estos pasos, debe probar que la configuración de Oracle Data Guard funciona como se espera, mediante operaciones de switchover en ambas direcciones.

Realizar la migración

Para terminar la migración, debe realizar una operación de switchover desde la base de datos primaria (base de datos origen) a la base de datos en espera (base de datos destino).

  1. Utilice SSH para conectarse al servidor de la base de datos primaria (base de datos origen).
  2. Inicie la utilidad de la línea de comandos dgmgrl.
    dgmgrl 
  3. Conecte como usuario SYS desde el sistema de base de datos primaria o en espera. Por ejemplo, para conectarse a una base de datos primaria cuyo nombre TNS es OCIC-ORCL:.
    connect sys@ocic-orcl
    Enter password: password
  4. Compruebe la configuración.
    show configuration verbose
  5. En la salida detallada de la configuración, compruebe que el valor de Estado de la Base de Datos indica SUCCESS.
  6. Compruebe la configuración de la base de datos primaria (base de datos origen).
    show database verbose source_db_unique_name
    La salida detallada de la base de datos debería mostrar que el rol es primario y que el valor de StaticConnectIdentifier es el mismo que DGConnectIdentifier.
  7. Realice una operación de switchover en la base de datos en espera (la base de datos destino).
    switchover to target_db_unique_name
    La salida debe indicar que la operación de switchover se está produciendo entre las dos bases de datos.
  8. Ejecute show configuration para verificar que no haya errores ni advertencias:
    show configuration;

Pasos Posteriores a la Migración

Después de completar la migración de una base de datos Oracle desde un servidor de Oracle Cloud Infrastructure Compute Classic a un servidor de Oracle Cloud Infrastructure que utiliza un sistema de base de datos de máquina virtual, debe validar la migración y, a continuación, eliminar la configuración de la base de datos primaria (la base de datos de origen).

Probar la Configuración de Oracle Data Guard en la Base de Datos en Espera

En esta etapa, la base de datos de destino es ahora la base de datos primaria. La base de datos origen es ahora la base de datos en espera.

Puede probar la conexión de Oracle Data Guard en la base de datos destino realizando una operación de switchover con la base de datos origen. Esta operación de switchover volverá a realizar la base de datos destino con el rol en espera. La finalidad de esta prueba es probar que puede volver a la configuración original en caso de que la base de datos destino no sea funcional.

  1. Utilice SSH para conectarse al servidor de la base de datos en espera (base de datos destino).
  2. Inicie la utilidad dgmgrl. Por ejemplo:
    dgmgrl sys@target_db
    Enter password: password
  3. Realice una operación de switchover en la base de datos origen, que realizará la base de datos destino con el rol en espera.
    switchover to source_db_unique_name;
    La salida debe indicar que la operación de switchover se está produciendo entre las dos bases de datos.
  4. (Opcional) Para evitar los cambios en la nueva base de datos en espera hasta que se determine que la nueva base de datos primaria es completamente funcional, desactive temporalmente la función Redo Apply.
    edit database source_db_unique_name set state = 'APPLY-OFF';
    Si realiza otra operación de switchover para que la base de datos destino sea ahora la base de datos en espera, puede realizar una operación APPLY-OFF para evitar que se actualice la base de datos origen. Esto permite que la base de datos destino se ponga en servicio y mantiene la base de datos origen como una copia de seguridad point-in-time en caso de un fallo lógico en la nueva configuración.
  5. (Opcional) Para reiniciar la función de aplicación:
    edit database source_db_unique_name set state = 'APPLY-ON';
  6. Salga de dgmgrl.
    exit
  7. Realice una operación de switchover en la base de datos destino, que realizará la base de datos origen en el rol en espera.
    switchover to target_db_unique_name;
    La salida debe indicar que la operación de switchover se está produciendo entre las dos bases de datos.
  8. Pruebe la conexión a la nueva base de datos primaria. Por ejemplo, después de exportar el nombre único del destino, conéctese como usuario SYS y seleccione un espacio de tabla cifrado. En este ejemplo, la tabla HR.EMPLOYEES está cifrada.
    exit
  9. Pruebe la conexión a la nueva base de datos primaria. Por ejemplo, después de exportar el nombre único del destino, conéctese como usuario SYS y seleccione un espacio de tabla cifrado. En este ejemplo, la tabla HR.EMPLOYEES está cifrada.
    export ORACLE_UNQNAME=target_db_unique_name
     
    sqlplus sys@target_TNS_name
    Password: password
     
    SQL> ALTER SESSION SET CONTAINER = PDB1;
    SQL> SELECT * FROM HR.EMPLOYEES;
     
    SQL> EXIT

Limpiar Base de Datos en Espera

Después de terminar y probar la migración, puede eliminar la configuración de Oracle Data Guard de la base de datos en espera (la base de datos destino). No es necesario eliminar la base de datos origen original. En esta etapa, la base de datos en espera es la nueva base de datos origen.

  1. Utilice SSH para conectarse al servidor de la base de datos en espera (base de datos destino) y conectarse a Oracle Data Guard dgmgrl utility.
  2. Compruebe la configuración.
    show configuration
  3. Si la configuración no muestra Protection Mode: MaxPerformance, defina Oracle Data Guard para utilizar el modo de protección MaxPerformance.
    edit configuration set protection mode as maxperformance
  4. Desactive y, a continuación, elimine la configuración.
    edit database source_db_unique_name set state = 'APPLY-OFF';
     
    disable configuration;
     
    remove configuration;
     
    exit
  5. Conéctese a la instancia de base de datos como un usuario que tenga el privilegio de administrador de SYSDBA. Por ejemplo:
    sqlplus / as sysdba
  6. Compruebe los parámetros de DG_BROKER_CONFIG_FILE.
    SHOW PARAMETER DB_BROKER_CONFIG_FILE
    La salida debe mostrar los datos asociados y los archivos de recuperación de esta configuración, normalmente denominados dg_broker_config_file1 y dg_broker_config_file2.
  7. Inicie otra ventana de terminal e inicie sesión en asmcmd como usuario de cuadrícula.
  8. Elimine los archivos de configuración de Oracle Data Guard que aparecen al marcar los parámetros de DG_BROKER_CONFIG_FILE.
  9. Vuelva a la ventana que está ejecutando SQL*Plus.
  10. Ejecute las siguientes sentencias de ALTER SYSTEM:
    ALTER SYSTEM SET DG_BROKER_START=FALSE SID='*' SCOPE=BOTH;
    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE1='' SID='*' SCOPE=SPFILE;
    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE2='' SID='*' SCOPE=SPFILE;
    ALTER SYSTEM RESET LOG_ARCHIVE_CONFIG SID='*' SCOPE=SPFILE;
  11. Compruebe los siguientes parámetros:
    SHOW PARAMETER DB_FILE_NAME_CONVERT
    SHOW PARAMETER LOG_FILE_NAME_CONVERT
    SHOW PARAMETER LOG_ARCHIVE_DEST
    SHOW PARAMETER LOG_ARCHIVE_DEST_STATE
    SHOW PARAMETER STANDBY_ARCHIVE_DEST
    SHOW PARAMETER FAL
  12. Si se establece cualquiera de los parámetros anteriores, restablezca los parámetros para utilizar valores en blanco. Por ejemplo, para STANDBY_ARCHIVE_DEST :
    ALTER SYSTEM SET STANDBY_ARCHIVE_DEST='' SID='*' SCOPE=SPFILE;
  13. Reinicie la base de datos.
    SHUTDOWN IMMEDIATE
    STARTUP
  14. Borrar los logs en espera de la base de datos primaria (la base de datos origen).
    1. Busque los números de grupo de los redo logs de la base de datos en espera que están en la nueva base de datos primaria (que antes era la base de datos destino).
      SELECT GROUP# FROM V$STANDBY_LOG;Output similar to the following appears:    GROUP#
      ----------
               5
               6
               7
               8
               9
    2. Elimine los logs en espera. Por ejemplo:
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 5;
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 6;
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 7;
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 8;
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 9;
  15. (Opcional) Cambie los parámetros DB_BLOCK_CHECKSUM y DB_BLOCK_CHECKING.
    Los valores por defecto son DB_BLOCK_CHECKSUM=TYPICAL y DB_BLOCK_CHECKING=FALSE.
  16. Salga de SQL*Plus.
    EXIT