Pregunta

Estoy transferencia de datos de una base a otra a través de vínculos de base de datos (usando INSERT INTO SELECT ...).

Quiero saber si los datos transferidos a través del enlace que está comprimido o puede ser comprimido para evitar el exceso de uso de la red.Tengo muy poco ancho de banda, y creo que sería de ayuda si no está ya hecho.

¿Fue útil?

Solución

Hay algunos DE-duplicación pero no hay compresión grave.

Hay una función UTL_COMPRESS, pero sería difícil lograr que eso descomprima en el destino (tal vez un gatillo, o en lugar de la vista, pero es clunky).

expdp puede usar un enlace de la base de datos ( Network_Link ) y, en 11g, compresión pero que requiere la Opción de compresión avanzada para tener licencia . < / p>

Por último, hay extracto convencional, cremallera, transferencia, descomposición, carga

en 11gr2 Puede usar tablas externas con un preprocesador para descomprimir , por lo que podría semi-automática esa opción final.

Otros consejos

Como @Gary dice, no de forma nativa, pero es posible conseguir la compresión mediante un túnel SSH, suponiendo que se tiene de la línea de comandos de acceso de todos modos.El SSH hombre de la página de notas que la compresión puede ralentizar las cosas en una red rápida, pero que el comercio puede ser vale la pena si usted está gravemente ancho de banda restringido;y puede que tenga que experimentar con CompressionLevel en ssh_config para obtener los mejores resultados para su situación.

Por ejemplo, si el vínculo existente se define para conectarse a remote_server puerto 1521:

create database link direct connect to usr identified by pwd
using 'DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=remote_server)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=remote_service)))'

Usted puede crear un túnel SSH con una conexión de puerto local, con algo como:

ssh -C -N -L1522:localhost:1521 remote_server

Y entonces usted puede tener una DB enlace que apunta hacia el lado local del túnel:

create database link direct connect to usr identified by pwd
using 'DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1522))
(CONNECT_DATA=(SERVICE_NAME=remote_service)))'

Así que usted acaba de cambiar el host y el puerto.Si el vínculo existente es el uso de un tnsnames de entrada, a continuación, sólo puede modificar ese lugar, a punto de localhost:1522 en lugar de remote_server:1521.

Por supuesto, usted tiene que asegurarse de que la conexión SSH es cada vez que uso la base de datos del enlace.Si es usted conseguirá un ORA-12541: TNS:no listener error, ya que nada se estará escuchando en el puerto local 1522.

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