Copia de seguridad/restauración de la base de datos para pruebas de Oracle 10g utilizando sqlplus o rman

StackOverflow https://stackoverflow.com/questions/67666

Pregunta

Utilizando Oracle 10g con nuestro servidor de pruebas, cuál es la forma más eficiente/fácil de realizar una copia de seguridad y restaurar una base de datos en un punto estático, asumiendo que siempre desea volver al punto dado una vez que se ha creado una copia de seguridad.

Un caso de uso de muestra sería el siguiente

  1. instalar y configurar todo el software
  2. Modificar datos al punto de prueba base.
  3. hacer una copia de seguridad de alguna manera (esto es parte de la pregunta, cómo hacer esto)
  4. hacer pruebas
  5. volver al estado del paso 3 (restaurar al punto de copia de seguridad, esta es la otra mitad de la pregunta)

De manera óptima, esto se completaría mediante sqlplus o rman o algún otro método programable.

¿Fue útil?

Solución

No es necesario realizar una copia de seguridad en su tiempo base.Simplemente habilite la base de datos flashback, cree un punto de restauración garantizado, ejecute sus pruebas y retroceda al punto de restauración creado anteriormente.

Los pasos para esto serían:

  1. Inicie la instancia en modo de montaje.

    montaje de fuerza de arranque;

  2. Crea el punto de restauración.

    crear un punto de restauración before_test garantizar la base de datos flashback;

  3. Abra la base de datos.

    alterar la base de datos abierta;

  4. Ejecute sus pruebas.

  5. Apague y monte la instancia.

    apagado inmediato;montaje de inicio;

  6. Flashback al punto de restauración.

    base de datos flashback para restaurar el punto before_test;

  7. Abra la base de datos.

    alterar la base de datos abierta;

Otros consejos

Podrías usar una característica en Oracle llamada Escena retrospectiva lo que le permite crear un punto de restauración, al que puede volver fácilmente después de haber realizado las pruebas.

Citado del sitio,

La base de datos Flashback es como un 'botón de rebobinado' para su base de datos.Proporciona la recuperación de la base de datos en el tiempo sin requerir que se restablezca una copia de seguridad de la base de datos.Cuando elimina el tiempo que lleva restaurar una copia de seguridad de la base de datos de la cinta, la recuperación del punto de la base de datos en el tiempo es rápido.

Desde mi experiencia, importar/exportar es probablemente el camino a seguir.La exportación crea una instantánea lógica de su base de datos, por lo que no la encontrará útil para bases de datos grandes o requisitos de rendimiento exigentes.Sin embargo, funciona muy bien para tomar instantáneas y otras cosas para usar en varias máquinas.

Lo usé en un proyecto Rails para obtener una instantánea del producto que pudiéramos intercambiar entre desarrolladores para pruebas de integración e hicimos el trabajo dentro de los scripts de rake.Escribimos un pequeño script sqlplus que destruyó la base de datos y luego importamos el archivo de volcado en la parte superior.

Algunos artículos que quizás quieras consultar:Hoja de referencia de OraFAQ Wiki Oráculo

A Oracle aparentemente ya no le gusta imp/exp en favor de bomba de datos, cuando usábamos la bomba de datos necesitábamos cosas que no podíamos tener (es decir,privilegios SYSDBA que no podríamos obtener en un entorno compartido).Así que echa un vistazo, pero no te desanimes si la bomba de datos no es lo tuyo, los viejos imp/exp todavía están ahí :)

No puedo recomendar RMAN para este tipo de cosas porque RMAN requiere mucha configuración y necesitará configuración en la base de datos (también tiene su propia base de datos de catálogo para copias de seguridad, lo cual es un dolor de cabeza proverbial para una restauración completa).

Si está utilizando un sistema de archivos que admite instantáneas de copia en escritura, puede configurar la base de datos en el estado que desee.Luego apague todo y tome una instantánea del sistema de archivos.Luego, realice las pruebas y, cuando esté listo para empezar de nuevo, podrá revertir la instantánea.Esto podría ser más sencillo que otras opciones, suponiendo que tenga un sistema de archivos que admita instantáneas.

La solución @Michael Ridley es perfectamente programable y funcionará con cualquier versión de Oracle.

Esto es exactamente lo que hago, tengo un script que se ejecuta semanalmente para

  1. Revertir el sistema de archivos
  2. Aplicar registros de archivo de producción
  3. Tome una nueva instantánea de FS "Pre-Enmascaramiento de datos"
  4. Restablecer registros
  5. Aplicar enmascaramiento de datos de "preproducción".
  6. Tome una nueva instantánea "Post-Data-Masking" (permite revertir la publicación de datos enmascarados)
  7. Abrir base de datos

Esto nos permite mantener nuestras bases de datos de desarrollo cerca de nuestra base de datos de producción.

Para hacer esto utilizo ZFS.

Este método también se puede utilizar para sus aplicaciones, o incluso para todo su "entorno" (por ejemplo, puede "revertir" todo su entorno con un único comando (programado).

Sin embargo, si está ejecutando 10g, lo primero que probablemente querrá considerar es Flashback, ya que está integrado en la base de datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top