2009-11-11 27 views
7

Me gustaría averiguar la mejor manera de archivar los datos que ya no se necesitan, para mejorar el rendimiento de la aplicación y también para ahorrar espacio en el disco. En su experiencia, ¿cuál es la mejor manera de implementar esto? ¿Qué tipo de herramientas puedo usar? ¿Es mejor desarrollar una aplicación interna específica para ese propósito?¿Cuál es la mejor forma de archivar datos en una base de datos Oracle?

+0

Hay muchas maneras de archivar fuera de Oracle. No es necesario desarrollar ninguna herramienta. ¿Qué tipo de hardware/presupuesto tienes? Tiene SANS instalado. ¿Necesitas tener tus datos de archivo, casi disponibles, o puedes guardarlos en un armario externo durante años? –

+0

¿Por qué crees que el archivo mejorará el rendimiento de la aplicación? Si va a archivar datos, debe pensar cómo accederá más tarde (si es necesario). Tenga en cuenta que los futuros cambios de esquema y las actualizaciones de la base de datos afectarán la capacidad de 'solo' recargarlo. –

+4

Creo que realmente necesitamos saber más acerca de sus necesidades aquí ... el volumen de datos, cuán complejo es el esquema y cuántas tablas necesita para archivar, si alguna vez necesita esos datos nuevamente y, de ser así, cuál sería el SLA para acceder a él ... –

Respuesta

-2

Exportaría los datos a un archivo delimitado por comas para que pueda exportarse a casi cualquier base de datos. Entonces, si cambias las versiones de Oracle o vas a algo más años después, puedes restaurarlo sin mucha preocupación.

Utilice la función de archivo de cola de SQL * Plus para hacer esto: http://cisnet.baruch.cuny.edu/holowczak/oracle/sqlplus/#savingoutput

+1

Esta es una operación legítima que está documentada en Oracle SQL. Hay una prueba en el enlace. –

+2

Para cualquier cosa que no sean pequeñas cantidades de datos, esta es una opción pobre. Tiene dificultades con tipos de datos complejos e incluso con columnas VARCHAR2 simples que pueden contener el delimitador. –

+0

También hay problemas de potencial con los clobs. – EvilTeach

0

La mejor manera de archivar datos antiguos en la base de datos Oracle es:

  1. definir una directiva de archivado y retención según la fecha o tamaño.
  2. Exportar datos archivables a una tabla externa (tablespace) basada en una política definida.
  3. Comprima la tabla externa y guárdela en un medio de almacenamiento más económico.
  4. Elimine los datos archivados de su base de datos activa utilizando SQL DELETE.
  5. Luego, para limpiar el espacio, ejecute los siguientes comandos: alter table T_XYZ enable row movement; alter table T_XYZ espacio de contracción;
  6. Si aún desea liberar algo de espacio de disco en el sistema operativo (ya que Oracle ahora habría reservado el espacio total que usaba anteriormente), entonces puede tener que cambiar el tamaño del archivo de datos: SQL> alte database database data '/home/oracle/database/../XYZ.dbf' redimensiona 1m;

Para más detalles, consulte: http://stage10.oaug.org/file/sroaug080229081203621527.pdf

+0

Re paso 4. si la eliminación es una preocupación de rendimiento, podría considerar extraer los datos actuales en una nueva tabla, soltar la tabla anterior y renombrar la nueva al nombre anterior – EvilTeach

1

Una forma de administrar el archivado:

  1. partición de las tablas en el intervalo de fechas, por ejemplo, particiones mensuales
  2. A medida que las particiones se vuelven obsoletas, p. después de 36 meses, esas particiones ahora se pueden mover a su almacén de datos, que podría ser otra base de datos de solo archivos de texto dependiendo de sus necesidades de acceso.
  3. Después de mover, las particiones obsoletas se pueden eliminar de su base de datos principal, por lo que siempre se mantienen (por ejemplo) 36 meses de datos actuales.
  4. Todo esto se puede automatizar usando una combinación de scripts SQL/Shell.
Cuestiones relacionadas