10
votes

Compression de connexion Oracle?

J'ai une application qui utilise JDBC pour se connecter à Oracle 11G. Malheureusement, la machine mon application s'exécute sur et la machine Oracle est connectée via une connexion de bande passante quelque peu faible. Je n'ai pas reniflé la connexion, mais je suis à peu près sûr que la diffusion de données sur la connexion n'est pas comprimée. Pour ma candidature, je suis plus préoccupé par la bande passante que la latence.

Y a-t-il un moyen de dire au pilote JDBC et à Oracle de compresser les données suivant la connexion? Google propose beaucoup de réponses pour la compression des fichiers de données, mais je n'ai rien trouvé sur la compression du protocole réseau.

J'utilise le conducteur mince d'Oracle, mais si cela n'est supporté que par le pilote OCI, je pourrais passer à cela. Merci pour toute suggestion!


0 commentaires

6 Réponses :


11
votes

Je ne connais pas les détails sur les pilotes minces et OCI d'Oracle. Mais vous pouvez utiliser ssh tunnels pour atteindre Compression .

  1. Donc, dans votre machine Oracle, vous configurez un démon SSH. Si votre serveur Oracle fonctionne sous RedHat Linux, vous avez terminé
  2. sur votre ordinateur client (celui qui héberge votre application qui se connecte via JDBC) Configurez une connexion SSH, permettant un tunnel comprimé. Vous pouvez utiliser la ligne de commande ssh ou Puty (si vous êtes sous Windows ) faire ça.

    Configurez la connexion à quelque chose comme ceci: xxx

    puis, dans votre application, utilisez localhost: 1521 comme adresse d'oracle.


6 commentaires

Non, une connexion VPN sera certainement pas travail. Il y a une quantité limitée de la bande passante - l'ajout de la surcharge VPN va s'assurer que les données réelles moins sont stockées par paquet.


Bien que ce soit une possibilité, j'espère voir si le pilote Oracle a cette intégré, pour le garder simple.


Ce n'est pas un VPN. C'est juste un tunnel. Et il sera travail. Si vous utilisez un tunnel comprimé et que vous essayez de transmettre peut être compressé (comme d'énormes quantités de texte ou XML), il sera compressé.


@Jeev Je sais qu'il sera plus facile de simplement avoir un drapeau dans le conducteur ou un paramètre dans l'URL, mais c'est tout ce que je sais. :-) Peut-être qu'il y a quelque chose sur la documentation des paramètres de connexion URL ...


Ssh est un tunnel crypté ( en.wikipedia.org/wiki/tunneling_protocol ) en faisant un défacto VPN. Cela dit, cela pourrait bien fonctionner si le ratio de compression est suffisamment bon pour surmonter la surcharge VPN / tunnel.


Sans aucun compte distant permettant un transfert de port SSH, le tunneling via SSH ne sera pas possible. Donc, au cas où vous aurez juste la connexion Oracle, ce n'est pas une option.



5
votes

Dans mon expérience, une latence élevée nuit aux performances en utilisant les pilotes Oracle JDBC beaucoup plus que la bande passante basse. (au moins dans l'application que je travaille). Vous dites que vous n'êtes pas inquiet pour la latence, mais pourriez-vous donner une estimation sur la latence de votre environnement à basse bande passante?

Quelle est la taille des données que vous envoyez? Y a-t-il des colonnes blob? Y a-t-il d'autres technologies impliquées, comme un pool de connexion ou un hibernation? Il y a beaucoup de facteurs potentiels, non seulement si vos données sont compressées.

Avez-vous fait une émulation WAN pour essayer d'isoler ce qui se dégrade votre performance la plus? Wanem est assez facile à configurer.

J'ai passé des semaines sur ce problème, et 100-200 ms la latence nous a beaucoup mal de plus qu'une limitation de la bande passante de 1 mbit. J'espère que vous êtes dans un bateau différent - compression un problème plus facile à résoudre.


2 commentaires

64 octets Pings ne prennent que 4Ms pour être ack-ed, donc ce n'est pas si mauvais. Pas de blob, mais beaucoup d'activité d'insertion. Aucune mise en commun de la connexion, c'est une seule connexion. La dotation en personnel est une petite lumière pour les vacances. Je ne peux donc pas entrer dans des diagnostics profonds WAN pour le moment. Cela semblait être la prochaine chose évidente à regarder. Mais merci pour le pointeur de Wanem, je vais regarder dans ça!


Si ce n'est que 4 ms, je vais dire que vous avez raison dans cette latence devrait jouer un rôle très minimal.



5
votes

Pour répondre directement à la question, les pilotes (minces ou OCI) n'ont pas de tel mécanisme de compression. Et puisque les données envoyées sont probablement dans un format binaire génial, je ne suis pas sûr que cela compresse bien sur SSL. Un autre mécanisme d'amélioration des performances du réseau devra être employé.


1 commentaires

L'utilisation de la compression avec des tunnels SSH avec JDBC peut réduire la latence



4
votes

juste une mise à jour.

Les connexions Oracle JDBC en 12.2 ont maintenant une fonctionnalité de compression comme indiquée dans cet article: http://www.oracle.com/techNetwork/topics/jdbc-faq-090281.html#0000_00


0 commentaires

2
votes

se référer à Guide de développeur Oracle JDBC pour permettre la compression réseau. Notez qu'il s'agit d'une fonctionnalité Oracle12c version 2.


0 commentaires

0
votes

Étant donné que la question et les réponses sont obsolètes ou des liens brisés, d'ajout de méthode pour permettre la compression de connexion.

Server de la base de données:

Vérifiez avec votre DBA pour configurer Fichier: $ db_home \ Network \ admin \ sqlnet.ora

Ajouter ci-dessous lignes: xxx

la valeur par défaut de sqlnet.cression_leveld au serveur est (faible) . Cela peut fonctionner correctement si vous utilisez le pilote OCI, mais si vous utilisez le pilote recommandé, il doit être spécifiquement configuré sur (élevé) .

CODE JAVA côté client: xxx

Notez que, si vous activez la compression élevée, l'utilisation de la CPU peut augmenter sur le client et en particulier sur le serveur de base de données. Sauf si la latence du réseau n'est vraiment un problème, c'est un choix que vous devez faire.


0 commentaires