Fundamentos de Replay Database de Oracle 12c

February 17

La característica Database Replay 12c Oracle evolucionado como una solución para la necesidad de ser capaces de hacer las pruebas de aplicaciones realistas. Antes de Database Replay, si quería probar cualquier tipo de cambios con el rendimiento o carga de trabajo, había que comprar una herramienta de terceros o hacer grandes cantidades de codificación para fingir una carga de trabajo.

En la mayoría de los casos, ninguno de los métodos era verdaderamente representativa de la carga de trabajo real. Además, de realizar cambios en un entorno de producción sin probarlos puede ser riesgoso.

Database Replay es una herramienta más en su cobertizo para cubrir todas las bases.

En esencia, Database Replay le permite grabar su carga de trabajo en tiempo real y luego reproducirlo. Además, usted podría jugar contra

  • Otra base de datos
  • Una versión diferente de Oracle
  • Un sistema operativo diferente

Database Replay captura la carga de trabajo por debajo del nivel de SQL. La carga de trabajo se almacena en archivos binarios. A continuación, puede transferir estos archivos a un entorno de prueba, ejecutar la carga de trabajo, analizar problemas, solucionar problemas y probar de nuevo. La misma carga de trabajo es repetible. En conjunción con una herramienta como Flashback Database, puede probar repetidamente cambios en rápida sucesión. Ayuda a reducir las posibilidades de que algo de ruptura cuando se cambian los entornos.

Database Replay proporciona un mecanismo para ayudar a este tipo de situaciones:

  • Pruebas
  • Los cambios de configuración
  • Actualizaciones
  • Descensos
  • Cambios en las aplicaciones
  • Depuración
  • Cambios de almacenamiento, red y de interconexión
  • Cambios de la plataforma
  • Cambios OS
  • La conversión al Real Application Clusters (RAC)

Cómo utilizar Database Replay en Oracle 12c

Aquí es cómo utilizar Database Replay:

  1. Conéctese a SQL * Plus como un usuario con el privilegio SYSDBA.

    Oracle requiere un directorio en el que escribir los archivos de reproducción.

  2. Crear un directorio a una ubicación en el sistema operativo con un montón de espacio:

    <Crear o sustituir directorio capture_dir como
    '/ U01 / app / oracle / admin / devcdb / captura ";>

    Usted ve esto:

    Directorio creado.

  3. Inicie una captura:

    <Dbms_workload_capture.start_capture exec ('CAPTURE_DEMO', 'CAPTURE_DIR');>

    En este ejemplo se utiliza el nombre CAPTURE_DEMO.

    Lo ideal sería que se reinicie la base de datos antes de la captura comienza de manera que pueda evitar la captura de las transacciones en el medio. Por supuesto, hacerlo no es siempre una opción cuando se trata de un sistema de producción.

    Usted ve esto:

    PL / SQL terminado con éxito.

  4. Ejecute su carga de trabajo.

    Si se trata de un comportamiento muy normal aplicación, se deja correr por la cantidad de tiempo que desea.

  5. Cuando la carga de trabajo se ha completado o su destino ha pasado el tiempo, detener el proceso de captura:

    <Dbms_workload_capture.finish_capture ejecutivo;>

    Usted ve esto:

    PL / SQL terminado con éxito.

De acuerdo con la documentación de Oracle, la captura de una carga de trabajo puede añadir hasta un 4,5 por ciento de la carga de procesamiento en el sistema, así como 64K de sobrecarga de memoria para cada sesión. Masoveros, si el espacio se agota en el directorio de la captura, la captura se detendrá. Todos los datos capturados hasta ese momento aún serán útiles.

La idea es que usted va a utilizar su captura a "reproducir" la carga de trabajo. En nuestra experiencia, la carga de trabajo por lo general se repite contra una base de datos diferente, tal como un entorno de prueba. Sin embargo, este no es siempre el caso.

Si el entorno de base de datos es uno donde pueden producirse largas ventanas de mantenimiento (por ejemplo, durante un fin de semana), puede que te encuentres haciendo estas cosas:

  • Habilitación Flashback Database
  • Crear un punto de restauración en la mañana del viernes
  • A partir de una captura de la carga de trabajo durante cuatro horas desde las 8 am hasta el mediodía
  • La restricción del sistema y crear otro punto de restauración después de que los empleados van a casa el viernes por la noche
  • Restauración de la base de datos para el punto de restauración viernes por la mañana
  • Implementación de bases de datos o aplicaciones cambios
  • Reproducción de la carga de trabajo para poner a prueba los cambios
  • Parpadea de nuevo la carga de trabajo para la noche del viernes
  • Implementación de bases de datos o aplicaciones cambios surtan efecto cuando los trabajadores regresan lunes por la mañana

Cómo reproducir la carga de trabajo en Oracle 12c

Siga estos pasos para volver a reproducir la carga de trabajo:

  1. Cree un directorio para los archivos de captura de repetición:

    <Crear o sustituir directorio capture_dir como
    '/ U01 / app / oracle / admin / devcdb / captura ";>

    Usted ve esto:

    Directorio creado.

    Este ejemplo supone la repetición tiene lugar en otra base de datos. Si está en la misma base de datos, no hay necesidad de crear un directorio y mover los archivos de captura porque ya estarán en la ubicación correcta.

  2. Mueva los archivos del directorio de captura en el sistema de origen al directorio en el sistema de repetición.
  3. Comience el proceso de reproducción en la base de datos:

    <Dbms_workload_replay.process_capture exec ('CAPTURE_DIR');>

    Usted ve esto:

    PL / SQL terminado con éxito.

  4. Iniciar una sesión de repetición llamada REPLAY_DEMO:

    <Dbms_workload_replay.initialize_replay exec
    ('REPLAY_DEMO_4', 'CAPTURE_DIR');>

    Usted ve esto:

    PL / SQL terminado con éxito.

  5. Dile a Oracle para preparar los archivos de reproducción:

    <Dbms_workload_replay.prepare_replay ejecutivo;>

    Usted ve esto:

    PL / SQL terminado con éxito.

    Iniciar clientes de reproducción, que son procesos que se ejecutan y gestionan la carga de trabajo. Estos procesos se inician desde la línea de comandos del sistema operativo.

  6. El ejemplo siguiente inicia un cliente de repetición con Oracle como la contraseña:

    <Sistema wrc / oracle>

    Usted ve esto:

    Carga de trabajo Replay Cliente: Suelte 12.1.0.1.0 - Producción el Vie 16 de agosto 2013 22:24:44
    Derechos de autor (c) 1982, 2013, Oracle y / o sus filiales. Reservados todos los derechos.
    Espere a que la reproducción para empezar (22:24:44)

  7. Dile a la base de datos para iniciar la reproducción:

    <Dbms_workload_replay.start_replay ejecutivo;>

    Usted ve esto:

    PL / SQL terminado con éxito.

  8. Comprobar el estado, mientras que la repetición se ejecuta:

    <select id, nombre, estado, duration_secs
    desde dba_workload_replays;>

    Básicamente, usted está consultando la tabla DBA_WORKLOAD_REPLAYS. Usted ve esto (o algo parecido):

ID DURATION_SECS NOMBRE ESTADO
---------- -------------------- ----------- --------- ----
10 REPLAY_DEMO EN CURSO 369

Cuando todo está hecho, usted debe limpiar los metadatos de repetición.

  1. Captura de información de identificación en el sistema de origen:

    <Select id, nombre
    desde dba_workload_captures;>

    Usted puede ver algo como esto:

    NOMBRE ID
    ---------- -----------------------------------
    4 CAPTURE_DEMO

  2. Borre la información de la captura:

    <Dbms_workload_capture.delete_capture_info exec (4);>

    Usted ve esto:

    PL / SQL terminado con éxito.

  3. Encuentra el id de reproducción en el sistema de repetición:

    <Select id, nombre
    desde dba_workload_replays;>

    Usted puede ver algo como esto:

    NOMBRE ID
    ---------- -----------------------------------
    10 REPLAY_DEMO

  4. Borre la información de repetición:

<Dbms_workload_capture.delete_replay_info exec (10);>