Migrar Base de Datos de Aplicación

Oracle Autonomous Transaction Processing elimina la necesidad de mantener, aplicar parches y optimizar el host y el software de la base de datos y, por lo tanto, sólo proporciona acceso al nivel de esquema de la base de datos. Por este motivo, las herramientas de migración disponibles para migrar una base de datos local al procesamiento de transacciones autónomas se basan en el pump de datos, una herramienta de migración a nivel de esquema incluida con Oracle Database.

Acerca de la migración de la base de datos de aplicaciones

El proceso de migración de base de datos consiste en crear un volcado de esquema de base de datos en la base de datos origen, cargarlo en el almacenamiento de objetos en Oracle Cloud Infrastructure (OCI), configurar la base de datos de procesamiento de transacciones autónomas para importarlo desde el almacenamiento de objetos e importar el volcado de esquema de base de datos desde Oracle Cloud Infrastructure Object Storage.

A continuación, se muestra una descripción general del proceso:

  1. Exporte los esquemas de base de datos a un archivo de volcado local.
  2. Mueva el archivo de volcado a Object Storage mediante la CLI de OCI.
  3. Obtener el OCID de la base de datos autónoma.
  4. Obtenga la cartera para acceder a la base de datos autónoma desde la base de datos origen (o algún host alternativo).
  5. Cree un túnel local en la base de datos autónoma para la configuración.
  6. Obtener un token de autenticación de OCI para que la base de datos autónoma acceda a Oracle Cloud Infrastructure Object Storage.
  7. Configure las credenciales de acceso a la base de datos autónoma.
  8. Importe el archivo de volcado de Oracle Cloud Infrastructure Object Storage en la base de datos autónoma.

Exportar Esquema y Datos de Base de Datos

Exporte el esquema y los datos de la base de datos a un único archivo de volcado.

  1. Cree una carpeta export para el archivo de volcado.
    Tenga en cuenta que estamos creando un solo volcado de archivos, que puede ser extremadamente grande en algunas circunstancias. Consulte otras opciones para utilizar el pump de datos para crear archivos de varias partes.
    EXPORT_DB_DIRNAME=export
    mkdir /home/oracle/${ DIRNAME}
    # drop directory if it exists
    echo "DROP DIRECTORY ${EXPORT_DB_DIRNAME};" | sqlplus system/PASSWORD@$HOST:PORT/SERVICE
    # create a directory object in the DB for export with datapump, pointing to the folder created above
    echo "CREATE DIRECTORY ${EXPORT_DB_DIRNAME} AS '/home/oracle/export/';" | sqlplus 
    system/PASSWORD@$HOST:PORT/SERVICE
    # export the schema 
    expdp system/PASSWORD@$HOST:PORT/SERVICE schemas=SCHEMA_NAME 
    DIRECTORY=${EXPORT_DB_DIRNAME}
  2. Mueva el archivo de volcado al cubo de Oracle Cloud Infrastructure Object Storage creado anteriormente mediante la interfaz de línea de comandos Oracle Cloud Infrastructure (OCI).
    oci os object put \
    -bn bucket-name \
    --file /home/oracle/export/expdat.dmp \
    --name expdat.dmp

Obtener OCID de Autonomous Database

Obtener OCID, IP de punto final privado y URL de punto final privado de la base de datos Oracle Autonomous Transaction Processing.

  1. En la consola de Oracle Cloud Infrastructure, seleccione Oracle Database y, a continuación, Procesamiento de transacciones autónomas.
  2. Seleccione el compartimento de la lista Compartimentos de la parte izquierda de la página.
    El compartimento es donde desplegó los recursos.
  3. Haga clic en la base de datos que aprovisionó anteriormente para acceder a los detalles.
  4. Copie OCID, IP de punto final privado y URL de punto final privado (nombre de host) y guárdelos en un bloc de notas para más adelante.

Obtener Archivo de Cartera de Base de Datos

Obtenga el archivo de cartera de base de datos Oracle Autonomous Transaction Processing y actualice la ubicación definiendo el directorio para que apunte a la ubicación de cartera en el archivo sqlnet.ora.

  1. Utilice la interfaz de línea de comandos de Oracle Cloud Infrastructure (OCI) para obtener el archivo de cartera de la base de datos Procesamiento de Transacciones Autónoma mediante OCID y contraseña.
    oci db autonomous-database generate-wallet --autonomous-database-
    id your ATP OCID --file wallet.zip --password your-password
  2. Descomprimir la cartera.
    unzip wallet.zip
  3. Edite el archivo sqlnet.ora y sustituya el valor del directorio para que coincida con la ubicación de los archivos de cartera descomprimidos.
    WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = 
    (DIRECTORY="/home/oracle/ ")))
    SSL_SERVER_DN_MATCH=yes
  4. Defina la variable de entorno TNS_ADMIN para que coincida con la carpeta en la que se descomprimió la cartera.
    export TNS_ADMIN=$(pwd)

Creación de un túnel local en Autonomous Database mediante un host de base

Cree un túnel configurando la dirección IP pública del host bastion.

  1. Obtenga la IP pública del host bastion de la salida del terraform.
    Si el servidor Tomcat de Apache se desplegó en una subred pública, puede utilizar la IP pública del servidor Tomcat; de lo contrario, utilice la dirección IP pública del host bastion.
  2. Defina la IP de bastión para crear un túnel.
    export BASTION_IP=Public IP of the bastion
  3. Ejecute el comando para exportar el host de la base de datos mediante la dirección IP de punto final privado para la base de datos de procesamiento de transacciones autónomas y ssh al host de la base de datos.
    Este DB_HOST es la IP de punto final privado recopilada anteriormente.
    export DB_HOST=10.0.2.2
    ssh -4 -M -S socket -fnNT -L 1522:${DB_HOST}:1522 opc@${BASTION_IP} cat -
    Cuando se le solicite, introduzca para reconocer el nuevo host.
  4. Edite el archivo /etc/hosts para apuntar al host de punto final privado de la base de datos autónoma a 127.0.0.1 (localhost).
    Esto busca el host de punto final privado en el archivo tnsnames.ora.
    ATP_HOSTNAME=$(sed 's|.*(host=\([a-z0-9.-]*\)).*|\1|;' 
    tnsnames.ora | head -n1)
    sudo su -c "printf \"127.0.0.1  ${ATP_HOSTNAME}\n\"  >> 
    /etc/hosts"
  5. Verifique que el punto final es correcto.
    cat /etc/hosts
    La salida debe ser similar a la siguiente:
    127.0.0.1    localhost
    ::1    localhost ip6-localhost ip6-loopback
    fe00::0    ip6-localnet
    ff00::0    ip6-mcastprefix
    ff02::1    ip6-allnodes
    ff02::2    ip6-allrouters
    172.19.0.3    58aa534ef636
    127.0.0.1  jrhdeexg.adb.region

Generar Token de Autenticación

Genere un token que utilizar al mover los datos a Oracle Cloud Infrastructure Object Storage y a la base de datos Oracle Autonomous Transaction Processing. Sólo verá la cadena de token de autenticación al crearla, así que asegúrese de copiar el token de autenticación en una ubicación segura inmediatamente.
  1. Conéctese a la consola de Oracle Cloud Infrastructure
  2. Haga clic en el icono Usuario para abrir el menú Perfil y, a continuación, en Configuración de Usuario.
    Tome nota de su nombre de usuario completo (puede ser su correo electrónico o su correo electrónico prefijado con el servicio de inicio de sesión único que utiliza, si está activado).
  3. Haga clic en Autenticar tokens y, a continuación, en Generar token.
  4. Proporcione una descripción significativa para el token de autenticación y haga clic en Generar token.
  5. Copie el token y guárdelo para poder recuperarlo más tarde.
    El token solo se muestra una vez. Al cerrar el cuadro de diálogo, no podrá volver a ver el token en la consola.
  6. Haga clic en Cerrar.

Configurar la credencial en la nube en Autonomous Database

Agregue el nombre de usuario y la contraseña de token de autenticación de Oracle Cloud Infrastructure (OCI) como credenciales por defecto para la base de datos Oracle Autonomous Transaction Processing.

  1. Mediante SQLPLus Instant Client, conéctese a la base de datos remota de procesamiento de transacciones autónomas mediante el túnel creado anteriormente.
    sqlplus admin@atp_db_name_high
  2. En la petición de datos, introduzca la contraseña de administrador para la base de datos de procesamiento de transacciones autónomas.
    atp_admin_password configurado en el archivo terraform.tfvars.
  3. Asegúrese de que está conectado a una petición de datos de SQLPlus.
    SQL>
  4. Cree la credencial de OCI Cloud en la base de datos Autonomous Transaction Processing con el siguiente comando, con el nombre de usuario de OCI y la contraseña de OCI Auth Token.
    SET DEFINE OFF
    BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
        username => 'oci username',
        password => 'oci auth token'
    );
    END;
    /
  5. Defina sus credenciales como credencial por defecto.
    ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 
    'ADMIN.DEF_CRED_NAME';
  6. Salga de SQLPlus.
    SQL> exit

Importar el archivo de volcado en Autonomous Database

Utilice el pump de datos para importar el volcado de datos a la base de datos de procesamiento de transacciones autónomas.

  1. Defina las variables de entorno para la región (como us-ashburn-1), el espacio de nombres, el cubo, el nombre de archivo, el nombre de la base de datos de procesamiento de transacciones autónomas (como atpdb) y la contraseña de administrador de procesamiento de transacciones autónomas.
    export REGION=your-OCI-region
    export NAMESPACE=your namespace
    export BUCKET=atp-upload
    export FILENAME=expdat.dmp
    export ATP_DB_NAME=your ATP DB name
    export ATP_PASSWORD=atp_admin_password
  2. Ejecute el siguiente comando:
    impdp admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low 
    directory=data_pump_dir 
    dumpfile=default_credential:https://objectstorage.${REGION}.oracl
    ecloud.com/n/${NAMESPACE}/b/${BUCKET}/o/${FILENAME} parallel=16 
    exclude=cluster,db_link 

    El primer intento fallará con un error: ORA-01950: no privileges on tablespace 'DATA'. Vaya al paso siguiente para proporcionar una cuota al usuario creado a partir del esquema de base de datos.

  3. Otorgue al tablespace ilimitado del usuario.
    echo "GRANT UNLIMITED TABLESPACE TO USER;" | sqlplus 
    admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low
    Debería aparecer la siguiente salida:
    Grant Succeeded
  4. Borre las tablas creadas en el Paso 2 para permitir que los datos se creen en la próxima ejecución.
    echo "DROP TABLE TABLE_NAME;" | sqlplus 
    admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low
  5. Ejecute el siguiente comando para importar los datos ahora que el usuario tiene una cuota válida.
    impdp admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low 
    directory=data_pump_dir 
    dumpfile=default_credential:https://objectstorage.${REGION}.oracl
    ecloud.com/n/${NAMESPACE}/b/${BUCKET}/o/${FILENAME} parallel=16 
    exclude=cluster,db_link 
    Verá errores relacionados con el usuario ya existente. Esto es normal porque se crearon objetos al ejecutar el comando la primera vez en el paso 2.
Se migra la base de datos.