Frage

Ich übertrage Daten von einer Basis zu einer anderen über Datenbankverknüpfungen (mit INSERT INTO SELECT ...).

Ich möchte wissen, ob die über den Link übertragenen Daten komprimiert sind oder komprimiert werden können, um eine zu starke Netzwerknutzung zu vermeiden.Ich habe sehr wenig Bandbreite, und ich denke, das würde helfen, wenn es nicht schon getan ist.

War es hilfreich?

Lösung

Es gibt einige de-duplication , aber keine ernsthafte Kompression.

Es gibt eine UTL_Compress-Funktion, aber es wäre schwierig, das zum Dekomprimieren des Ziels (vielleicht einen Auslöser oder anstelle der Ansicht -, aber es ist klumpig) zu dekomprimieren.

expdp kann einen Datenbanklink verwenden ( network_link ) und in 11g, komprimieren aber das Erfordert das Erweiterte Komprimierungsoption, um lizenziert zu werden . < / p>

Schließlich gibt es herkömmliche Extrakte, Zip, Transfer, Unzip, Last

In 11GR2 können Sie externe Tabellen mit einem Präprozessor zum Entpacken , so dass Sie diese endgültige Option halb automatisieren können.

Andere Tipps

Wie @Gary sagt, nicht nativ, aber es ist möglich, Komprimierung über einen SSH-Tunnel zu erhalten, vorausgesetzt, Sie haben sowieso Befehlszeilenzugriff.Die SSH-Manpage stellt fest, dass die Komprimierung die Dinge in einem schnellen Netzwerk verlangsamen kann, aber dieser Kompromiss kann sich lohnen, wenn die Bandbreite stark eingeschränkt ist;und Sie müssen möglicherweise experimentieren mit CompressionLevel in ssh_config um die besten Ergebnisse für Ihre Situation zu erzielen.

Zum Beispiel, wenn Ihr vorhandener Link für die Verbindung definiert ist remote_server Port 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)))'

Sie können einen SSH-Tunnel über einen freien lokalen Port erstellen, mit etwas wie:

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

Und dann können Sie eine DB-Verbindung haben, die auf die lokale Seite des Tunnels zeigt:

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)))'

Sie ändern also einfach den Host und den Port.Wenn Ihr bestehender Link eine verwendet tnsnames eintrag dann können Sie das stattdessen einfach ändern, um darauf zu zeigen localhost:1522 statt remote_server:1521.

Natürlich müssen Sie sicherstellen, dass die SSH-Verbindung aktiv ist, wenn Sie die DB-Verbindung verwenden.Wenn es unten ist, bekommst du eine ORA-12541: TNS:no listener fehler, da auf Ihrem lokalen Port 1522 nichts überwacht wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top