RMAN DUPLICATE desde una base de datos activa

En este tema se explica cómo migrar toda una base de datos de contenedores (CDB) activa o una base de datos no CDB a Oracle Cloud Infrastructure mediante la duplicación activa de RMAN. La base de datos que se vaya a migrar puede encontrarse en el entorno local o en Oracle Cloud Infrastructure Classic. Este tema no abarca la duplicación de una base de datos conectable ni la migración de una base de datos conectable o no CDB a una CDB en la nube.

En este tema se utilizan los siguientes términos:

  • Base de datos origen: base de datos activa que se va a migrar.
  • Base de datos destino: la nueva base de datos (duplicada desde la base de datos origen) de un sistema de base de datos en Oracle Cloud Infrastructure.
Nota

Requisitos previos

Para migrar la base de datos origen, necesitará:

  • El nombre de la base de datos origen, nombre único de la base de datos, puerto del listener, nombre del servicio, nivel de parche del directorio raíz de la base de datos y contraseña para SYS.
  • Una copia del directorio sqlpatch del directorio raíz de la base de datos origen. Esto es necesario para un rollback en caso de que el sistema de base de datos destino no incluya estos parches.
  • Si la base de datos origen está configurada con cifrado de datos transparente (TDE), necesitará una copia de seguridad de la cartera y la contraseña de cartera para permitir la duplicación de una base de datos con datos cifrados.

Al migrar una base de datos origen a una base de datos destino existente, Oracle recomienda aplicar el parche al entorno de origen en el mismo nivel de paquete de parches de bases de datos que el directorio raíz de la base de datos destino. Si el entorno de origen tiene un parche provisional (anteriormente conocido como parche" puntual") que incluye un componente de parche sqlpatch y falta el sqlpatch del entorno de destino (o se aplica un parche acumulativo diferente), se debe realizar un rollback del parche temporal en el entorno de origen antes de la migración, si es posible.

Consejo

Para comprobar los parches temporales instalados en la base de datos origen o destino, utilice el comando $ORACLE_HOME/OPatch/opatch lspatches. Para realizar un rollback de los cambios SQL en la base de datos destino, copie el script $ORACLE_HOME/sqlpatch/<patch#>/postdeinstall.sql del entorno de origen en el entorno de nube y ejecute el script postdeinstall.sql.

Para la base de datos destino, necesitará:

  • Un sistema de base de datos destino que admita la misma edición de base de datos que la edición de la base de datos origen. Al iniciar un sistema de base de datos, se crea en él una base de datos inicial. Si es necesario, puede eliminar esa base de datos y crear una nueva mediante la interfaz de línea de comandos dbcli. Para obtener más información sobre la creación de un sistema de base de datos, consulte Visión general de la creación de un sistema de base de datos. Para obtener más información sobre la creación de una base de datos con DBCLI, consulte Comandos de base de datos.
  • El nombre de la base de datos destino, nombre único de la base de datos, nombre del servicio auxiliar y nivel de parche del directorio raíz de la base de datos.
  • Un puerto TCP libre en la base de datos destino para configurar la instancia auxiliar.

Si necesita realizar un rollback de los parches temporales en el entorno de destino para que el nivel de parche coincida con el del entorno de origen, copie el directorio DB $ ORACLE_HOME/sqlpatch/<patch_number> de origen en el directorio raíz de la base de datos destino.

Migración de bases de datos origen que incluyen actualizaciones de juegos de parches (PSU)

En sistemas de base de datos de Oracle Cloud Infrastructure, el directorio raíz de base de datos incluye una instalación de parches de grupo proactivos de base de datos. Si la base de datos origen utiliza actualizaciones de juego de parches (PSU), siga las instrucciones de MOS Nota: 1962125.1 (Oracle Database: visión general de métodos de entrega de parches de base de datos) para migrar la base de datos a Oracle Cloud Infrastructure.

Verificación del entorno

Realice los siguientes pasos antes de comenzar la migración:

  1. Asegúrese de que se puede acceder al sistema de base de datos origen desde el sistema de base de datos destino. Debe poder hacerse un SSH entre los dos hosts.
  2. En el host de destino, utilice la herramienta TNSPING para asegurarse de que el puerto del listener del host de origen funciona. Por ejemplo:

    
    tnsping <source_host>:1521
  3. En el host de destino, utilice Conexión sencilla para verificar la conexión a la base de datos origen:

    <host>:<port>/<service_name>

    Por ejemplo:

    
    sqlplus system@129.145.0.164:1521/proddb 

    Asegúrese de que la cadena de conexión no supera los 64 caracteres.

  4. Copie los archivos sqlpatch necesarios (para el rollback) desde el directorio raíz de la base de datos origen a la base de datos destino.
  5. Asegúrese de que se ha creado al menos un archive log en la base de datos origen; de lo contrario, la duplicación de RMAN fallará y mostrará un error.
  6. Si la base de datos origen utiliza carteras, realice una copia de seguridad basada en contraseña de la cartera y cópiela en la ubicación estándar del sistema de base de datos:

    /opt/oracle/dcs/commonstore/wallets/tde/<db_unique_name>/
  7. Asegúrese de que los parámetros de compatibilidad de la base de datos origen estén ajustados, como mínimo, a:

    • 18.0.0.0.0 para una base de datos 18.1.0.0
    • 12.1.0.2.0 para una base de datos 12.1.0.2 o 12.2.0.1
    • 11.2.0.4.0 para una base de datos 11.2.0.4

Configuración del almacenamiento en el sistema de base de datos

  1. SSH en el sistema de base de datos.

    ssh -i <private_key_path> opc@<db_system_ip_address> 
  2. Inicie sesión como opc y, a continuación, sudo en el usuario raíz. Utilice sudo su - con un guión para invocar el perfil del usuario raíz que definirá la RUTA en el directorio dbcli (/opt/oracle/dcs/bin).

    
    login as: opc
    			
    [opc@dbsys ~]$ sudo su - 
  3. Utilice los comandos dbstorage para configurar directorios para el almacenamiento DATA, RECO y REDO. En el siguiente ejemplo, se crean 10 GB de almacenamiento ACFS para la base de datos tdetest.

    [root@dbsys ~]# dbcli create-dbstorage --dbname tdetest --dataSize 10 --dbstorage ACFS 
    Nota

    Al migrar una base de datos de la versión 11.2, se debe especificar el almacenamiento ACFS.

  4. Utilice el comando indicado en Comandos dbstorage para mostrar el identificador de almacenamiento. Necesitará el identificador para el siguiente paso.

    [root@dbsys ~]# dbcli list-dbstorages
    ID                                       Type   DBUnique Name        Status
    ---------------------------------------- ------ -------------------- ----------
    9dcdfb8e-e589-4d5f-861a-e5ba981616ed     Acfs   tdetest              Configured
  5. Utilice el comando indicado en Comandos dbstorage con el identificador de almacenamiento del paso anterior para visualizar las ubicaciones DATA, RECO y REDO.

    [root@dbsys ~]# dbcli describe-dbstorage --id 9dcdfb8e-e589-4d5f-861a-e5ba981616ed
    DBStorage details
    ----------------------------------------------------------------
                         ID: 9dcdfb8e-e589-4d5f-861a-e5ba981616ed
                    DB Name: tdetest
              DBUnique Name: tdetest
             DB Resource ID:
               Storage Type: Acfs
              DATA Location: /u02/app/oracle/oradata/tdetest
              RECO Location: /u03/app/oracle/fast_recovery_area/
              REDO Location: /u03/app/oracle/redo/
                      State: ResourceState(status=Configured)
                    Created: August 24, 2016 5:25:38 PM UTC
                UpdatedTime: August 24, 2016 5:25:53 PM UTC

    Anote las ubicaciones. Posteriormente los utilizará para definir los parámetros db_create_file_dest, db_create_online_log_dest y db_recovery_file_dest para la base de datos.

Selección de un ORACLE_HOME

Decida qué ORACLE_HOME utilizará para la restauración de la base de datos y, a continuación, cambie a ese directorio raíz con los parámetros correctos de ORACLE_BASE, ORACLE_HOME y PATH.

Para obtener una lista de ORACLE_HOME existentes o para crear un nuevo ORACLE_HOME, utilice el comando Dbhome.

Copia de carteras de base de datos origen

Omita esta sección si la base de datos origen no está configurada con TDE.

  1. En el sistema de base de datos, conviértase en usuario oracle:

    sudo su - oracle
  2. Cree el siguiente directorio, si aún no existe:

    mkdir /opt/oracle/dcs/commonstore/wallets/tde/<db_unique_name>
  3. Copie el archivo ewallet.p12 de la base de datos origen al directorio creado en el paso anterior.

  4. En el host de destino, asegúrese de que $ORACLE_HOME/network/admin/sqlnet.ora contiene la siguiente línea:

    ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/opt/oracle/dcs/commonstore/wallets/tde/$ORACLE_UNQNAME)))

    Agregue la línea si no existe en el archivo. (Es posible que la línea no aparezca si se trata de un nuevo directorio raíz y aún no se ha creado ninguna base de datos en este host).

  5. Cree la cartera de conexión automática desde la cartera basada en contraseña para permitir la apertura automática de la cartera durante las operaciones de restauración y recuperación.

    Para la versión 12c, utilice el comando ADMINISTER KEY MANAGEMENT:

    $cat create_autologin_12.sh
    
    #!/bin/sh
    if [ $# -lt 2 ]; then
            echo "Usage: $0 <db_unique_name> <remote_wallet_location>"
            exit 1;
    fi
    
    mkdir /opt/oracle/dcs/commonstore/wallets/tde/$1
    cp $2/ewallet.p12* /opt/oracle/dcs/commonstore/wallets/tde/$1
    rm -f autokey.ora
    echo "db_name=$1"  > autokey.ora
    autokeystoreLog="autologinKeystore_`date +%Y%m%d_%H%M%S_%N`.log"
    echo "Enter Keystore Password:"
    read -s keystorePassword
    echo "Creating AutoLoginKeystore -> "
    sqlplus "/as sysdba"  <<EOF
    spool $autokeystoreLog
    set echo on
    startup nomount pfile=autokey.ora
    ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE
    FROM KEYSTORE '/opt/oracle/dcs/commonstore/wallets/tde/$1' -- Keystore location
    IDENTIFIED BY "$keystorePassword";
    shutdown immediate;
    EOF

    Para la versión 11g, utilice el comando orapki:

    orapki wallet create -wallet wallet_location -auto_login [-pwd <example-password>]

Configuración del listener estático

Configure el listener estático de la instancia auxiliar para la duplicación de RMAN.

  1. En el sistema de base de datos, cree $ORACLE_HOME/network/admin/listener.ora y agregue el siguiente contenido.

    LISTENER_aux_<db_unique_name>=
      (DESCRIPTION=
        (ADDRESS_LIST=
          (ADDRESS=(PROTOCOL=TCP)(HOST=<hostname> or <ip_address>)(PORT=<available_TCP_port>))
        )
       )
    SID_LIST_LISTENER_aux_<db_unique_name>=
      (SID_LIST=
        (SID_DESC= 
          (GLOBAL_DBNAME=<auxServiceName_with_domain>) 
           (ORACLE_HOME=<Oracle_home_for_target_database>) 
           (SID_NAME=<database_name>) 
           (ENVS="TNS_ADMIN=<path_to_tnsnames.ora>") 
           (ENVS="ORACLE_UNQNAME=<db_unique_name(in lower case)>"))
    )
  2. Asegúrese de que el puerto especificado en (PORT=<available_TCP_port>) está abierto en el iptables del sistema de base de datos y en la lista de seguridad de red en la nube del sistema de base de datos.

Uso del comando RMAN Duplicate para migrar la base de datos

  1. Defina las siguientes variables de entorno para las sesiones RMAN y SQL Plus de la base de datos:

    ORACLE_HOME=<path_of_Oracle_home_where_the database_is_to_be_restored> 
    ORACLE_SID=<database_name>
    ORACLE_UNQNAME=<db_unique_name(in lower case)>
    NLS_DATE_FORMAT="mm/dd/yyyy hh24:mi:ss"
  2. Inicie el listener:

    lsnrctl start listener_aux_<db_unique_name>
  3. Cree un archivo init.ora con los parámetros mínimos necesarios como se describe en Creación de un archivo de parámetros de inicialización e inicio de la instancia auxiliar y utilícelo para la instancia auxiliar.

  4. Inicie la instancia auxiliar en modo no montada:

    startup nomount
  5. Ejecute los siguientes comandos para duplicar la base de datos. Tenga en cuenta que el siguiente ejemplo utiliza variables para indicar los valores que se deben especificar:

    rman target sys/$sourceSysPassword@$sourceNode:$sourceListenerPort/$sourceDb auxiliary sys/$auxSysPassword@$targetNode:$targetListenerPort/$auxService<<EOF
    
    spool log to "`date +%Y%m%d_%H%M%S_%N`_duplicate_${targetDbUniqueName}_from_${sourceDb}.log"
    set echo on
    
    duplicate target database to $targetDb from active database
    password file
    spfile
     PARAMETER_VALUE_CONVERT $sourceDb $targetDb $sourceDbUniqueNameCaps $targetDbUniqueNameCaps
     set cluster_database='false'
     set db_name='$targetDb'
     set db_unique_name='$targetDbUniqueName'
     set db_create_file_dest='$dataLoc'
     set db_create_online_log_dest_1='$redoLoc'
     set db_recovery_file_dest='$recoLoc'
     set audit_file_dest = '$auditFileDest'
     reset control_files
    nofilenamecheck
    ;
    EOF

Preparación para registrar la base de datos

Antes de registrar la base de datos:

  1. Asegúrese de que el valor del parámetro COMPATIBLE de la base de datos es aceptable.

    Para una base de datos 11.2, el valor mínimo de compatibilidad es 11.2.0.4.

    Para una base de datos 12c, el valor mínimo de compatibilidad es 12.1.0.2.

    Si el valor es menor que el mínimo, la base de datos no se podrá registrar hasta que se actualice la compatibilidad de la base de datos.

  2. Utilice el siguiente comando para verificar que la base de datos se ha registrado con el listener local y el nombre de servicio.

    lsnrctl services
  3. Utilice el siguiente comando para verificar que el archivo de contraseñas se haya restaurado o creado para una base de datos nueva.

    ls -ltr $ORACLE_HOME/dbs/orapw<$ORACLE_SID>

    Si el archivo no existe, créelo con el comando orapwd.

    orapwd file=<$ORACLE_HOME/dbs/orapw<$ORACLE_SID>> password=<sys_password>
  4. Utilice el siguiente comando para verificar que la base de datos restaurada esté abierta en modo de lectura/escritura.

    select open_mode from v$database;

    El modo de lectura/escritura se necesita para registrar la base de datos más tarde. Cualquier PDB debe estar también en modo de lectura/escritura.

  5. En el directorio raíz oracle del host de la base de datos migrada, utilice el siguiente comando para verificar la conexión a SYS.

    conn sys/<example-password>@<service_name> as sysdba

    Esta conexión será necesaria para registrar la base de datos más adelante. Solucione cualquier problema de conexión antes de continuar.

  6. Copie la carpeta $ORACLE_HOME/sqlpatch de la base de datos origen en la base de datos destino. Esto permitirá al comando dbcli register-database realizar un rollback de los parches en conflicto.

    Nota

    Si va a migrar una base de datos de la versión 11.2, se necesitarán pasos adicionales después de registrar la base de datos. Para obtener más información, consulte Rollback de parches en una base de datos versión 11.2.

  7. Utilice el siguiente comando de SQL*Plus para asegurarse de que la base de datos está utilizando el spfile.

    SHOW PARAMETERS SPFILE 

Registro de la base de datos en el sistema de base de datos

El comando dbcli register-database registra la base de datos migrada al dcs-agent para que pueda gestionarse en la pila del dcs-agent. Consulte Comandos de base de datos para obtener más información.

Nota

El comando dbcli register-database no está disponible en los sistemas de base de datos RAC de 2 nodos.

Como usuario root, utilice el comando dbcli register-database para registrar la base de datos en el sistema de base de datos, por ejemplo:

[root@dbsys ~]# dbcli register-database --dbclass OLTP --dbshape odb1 --servicename crmdb.example.com --syspassword
Password for SYS:
{
  "jobId" : "317b430f-ad5f-42ae-bb07-13f053d266e2",
  "status" : "Created",
  "message" : null,
  "reports" : [ ],
  "createTimestamp" : "August 08, 2016 05:55:49 AM EDT",
  "description" : "Database service registration with db service name: crmdb.example.com",
  "updatedTime" : "August 08, 2016 05:55:49 AM EDT"
}

Migración de una base de datos versión 12.1 o posterior que incluye componentes de parches SQL

Para un sistema de base de datos de 1 nodo de la versión 12.1 o superior, el comando dbcli register-database automatiza la ejecución de datapatch. Antes de ejecutar el comando dbcli register-database, abra todas las PDB en modo de lectura/escritura. Si ya ha ejecutado el comando dbcli register-database y no ha abierto todas las PDB o no ha copiado el directorio $ ORACLE_HOME/sqlpatch desde el directorio raíz de la base de datos origen, vuelva a ejecutar manualmente la herramienta datapatch para configurar la parte SQL de los parches temporales existentes. Para ello, se puede ejecutar el comando $ORACLE_HOME/OPatch/opatch datapatch.

Consejo

Si la base de datos origen incluye el parche 23170620 y la base de datos destino se está ejecutando con el parche de octubre de 2017 o posterior, no es necesario copiar el directorio $ ORACLE_HOME/sqlpatch en la base de datos destino, ya que el contenido del parche ya está instalado en la base de datos destino.

Rollback de parches en una base de datos versión 11.2

Para las bases de datos de la versión 11.2, la aplicación sqlpatch no es automática, por lo que a cualquier parche provisional (anteriormente conocido como parche" puntual") aplicado a la base de datos origen que no forme parte del PSU instalado se le debe realizar un rollback de forma manual en la base de datos destino. Después de registrar la base de datos, ejecute el script catbundle.sql y, a continuación, el script postinstall.sql con el parche de PSU correspondiente (o el parche de superposición sobre el parche de PSU), como se describe a continuación.

Consejo

Algunos parches temporales pueden incluir archivos escritos en el directorio $ ORACLE_HOME/rdbms/admin y en el directorio $ ORACLE_HOME/sqlpatch. Oracle recomienda realizar un rollback de estos parches en la base de datos origen usando las instrucciones del archivo "read-me" del parche antes de migrar la base de datos al entorno OCI. Póngase en contacto con Oracle Support si necesita ayuda para realizar un rollback de estos parches.
  1. En el sistema de base de datos, utilice el comando dbcli list-dbhomes para buscar el número de parche PSU para el directorio raíz de base de datos versión 11.2. En la siguiente salida de comando de ejemplo, el número de parche PSU es el segundo número de la columna Versión de base de datos:

    [root@dbsys ~]# dbcli  list-dbhomes
    ID                                   Name               DB Version                             Home Location                             Status 
    ------------------------------------ -----------------  -------------------------------------  ----------------------------------------- ----------
    59d9bc6f-3880-4d4f-b5a6-c140f16f8c64 OraDB11204_home1	11.2.0.4.160719 (23054319, 23054359)   /u01/app/oracle/product/11.2.0.4/dbhome_1 Configured
     

    (El primer número de parche, 23054319 en el ejemplo anterior, es para el componente OCW del directorio raíz de la base de datos.)

  2. Busque el parche de superposición, si lo hay, mediante el comando lsinventory. En el siguiente ejemplo, el número de parche 24460960 es el parche de superposición sobre el parche de PSU 23054359.

    $ $ORACLE_HOME/OPatch/opatch lsinventory              
    ...
    Installed Top-level Products (1): 
    
    Oracle Database 11g                                                  11.2.0.4.0
    There are 1 products installed in this Oracle Home.
    
    
    Interim patches (5) :
    
    Patch  24460960     : applied on Fri Sep 02 15:28:17 UTC 2016
    Unique Patch ID:  20539912
       Created on 31 Aug 2016, 02:46:31 hrs PST8PDT
       Bugs fixed:
         23513711, 23065323, 21281607, 24006821, 23315889, 22551446, 21174504
       This patch overlays patches:
         23054359
       This patch needs patches:
         23054359
       as prerequisites
    
  3. Inicie SQL*Plus y ejecute el script catbundle.sql, por ejemplo:

    SQL> startup 
    SQL> connect / as sysdba
    SQL> @$ORACLE_HOME/rdbms/admin/catbundle.sql psu apply
    exit
    
  4. Aplique el archivo sqlpatch utilizando el número de parche de superposición del paso anterior, por ejemplo:

    SQL> connect / as sysdba
    SQL> @$ORACLE_HOME/sqlpatch/24460960/postinstall.sql 
    exit

Creación de una configuración de copia de seguridad (opcional)

Si desea gestionar la copia de seguridad de la base de datos con la interfaz de la línea de comandos dbcli, puede asociar una configuración de copia de seguridad nueva o existente a la base de datos migrada cuando la registre o después de registrarla. La configuración de copia de seguridad define el destino de la copia de seguridad y la ventana de recuperación para la base de datos. Como usuario root, utilice los siguientes Comandos backupconfig para crear, mostrar y visualizar configuraciones de copia de seguridad:

  • dbcli create-backupconfig
  • dbcli list-backupconfigs
  • dbcli describe-backupconfig

Lista de control posterior a la migración

Después de migrar y registrar la base de datos en el sistema de base de datos, utilice la siguiente lista de control para verificar los resultados de la migración y realizar cualquier personalización posterior a la migración.

  1. Asegúrese de que los archivos de base de datos se han restaurado al formato OMF.
  2. Asegúrese de que la base de datos aparezca en la salida del comando indicado en Comandos database.
  3. Compruebe las siguientes referencias externas en la base de datos y actualícelas si es necesario:
    • Tablas externas: si la base de datos origen utiliza tablas externas, realice una copia de seguridad de esos datos y mígrela al host de destino.
    • Directorios: personalice los directorios predeterminados para la base de datos migrada según sea necesario.
    • Enlaces de base de datos: asegúrese de que todas las entradas TNS necesarias están actualizadas en el archivo tnsnames.ora de ORACLE_HOME.
    • Correo electrónico y URL: asegúrese de que las direcciones de correo electrónico y las URL que se utilizan en la base de datos siguen siendo accesibles desde el sistema de base de datos.
    • Trabajos programados: revise los trabajos programados en la base de datos origen y programe trabajos similares según sea necesario en la base de datos migrada.
  4. Si ha asociado una configuración de copia de seguridad al registrar la base de datos, ejecute una prueba de nuevo con el comando indicado en Comandos backup.
  5. Verifique que se han aplicado parches a todas las PDB si la base de datos migrada contiene CDB y PDB.
  6. Valide el rendimiento de la base de datos mediante la Reproducción de base de datos y SQL Performance Analyzer para SQL. Para obtener más información, consulte la Database Testing Guide (Guía de pruebas de base de datos).