5 Replies Latest reply: Apr 10, 2011 3:47 PM by Aleksander Stopar RSS

    Speed up SQL developer over XDMCP?

    Aleksander Stopar

      Often I have to login to various unix/linux workstations over ssh or VPN, because of restrictions I can not log in the database directly - I have to log in the workstation first, and from there I have access to the database. There is SQL developer installed on each of them and I have to do various maintenance/development tasks using SQL developer. Now I have two options:

      - use VNC or similar alternatives (vino/vinagre) to connect to the workstations desktop (this implies there is an active logged in session running on the workstation, otherwise you can not connect this way)

      - use XWindows's XDMCP protocol and run SQL developer on remote machine and have it display its window on my computer. This way there is no need for an active session on the remote computer and even if there is one, I can work independently of other users on the remote workstation (no need for shared session).

      The latter option is much more user friendly, however, it has a drawback. SQL developer is unbearably slow over XDMCP. You can feel the lag when using it even over loopback network adapter, you can immagine how it feels over a slow internet connection. It is unusable.

      Is there any way to speed up SQL developer over XDMCP? It is a fine tool and getting beter with every release, but for doing any remote work over (not even "so" slow) network connections it really does not cut it - I have to resort to sql+ ( and suddenly I get the feeling it is 1990 again ;) )

      If you have ssh server installed on your linux machine, here is a quick test run to see how it feels using SQL devleloper over XDMCP (this is the fastest way of using ssh I know of: -C means compress traffic and -c arcfour128 is the fastest cryptographic function in ssh, and even this way there is noticeable lag in user interface):

      [alex@alex ~]$ ssh -X -Y -C -c arcfour128 localhost
      alex@localhost's password:
      Last login: Thu Mar 10 10:22:55 2011 from localhost
      [alex@alex ~]$ cd prg/oracle/sqldeveloperEA4/sqldeveloper/
      [alex@alex sqldeveloper]$ ./sqldeveloper.sh

      Is there any way to speed up SQL developer over XDMCP?

        • 1. Re: Speed up SQL developer over XDMCP?
          Hi there,

          I don't know the remedy for the XDMCP - but I have been using NX Nomachine client (on Ubuntu and Windows and Nokia N810) to connect to my server box at work (running NX Nomachine server on that box) from outside. The GUI drawing speed for sqldeveloper and dbsolo is quite satisfactory.

          I know this is a common issue with invoking many GUI intensive applications remotely and sending the graphics to the remote machine. We also use Exceed On Demand (EOD) at work, but that requires a commercial license. However, the NX Nomachine for a single box up to 2 connections is free. NX and EOD handles compressions both ends (client and server), therefore performance is pretty good.

          This is their homepage:

          hope this proves helpful
          R/ Zaf
          • 2. Re: Speed up SQL developer over XDMCP?
            Aleksander Stopar

            Zaferaktan, thank you for your suggestion about NX Nomachine. I could have a look at it, but using NX means installing software on those workstations, which is a potential problem - the admins of those machines have a very strict policy of what can be installed there.

            So I'm still looking for ways to improve the SQL developer's performance over XDMCP or some settings to speed up XDMCP protocol. As I see it, it is (mostly) an application issue, not protocol's, because other GUI intensive apps work just OK over XDMCP, for example I can use Opera browser remotely over XDMCP just fine with satisfactory performance over a slow link, whereas SQL developer is unusably slow over that same link.

            - Is there some parameter for java virtual machine to make it faster - i.e. less frequent redraws, lower the number of colours or something like that (I'm just throwing in ideas)?
            - Is there anything that can be done in the SQL developer (tweaking some settings)?
            - Any undocumented parameters?
            - Maybe the developers could do something (if it is not too radical and requires too much work) in the source code of SQL developer to make it more "remote access" friendly ?
            - some unix/linux guru has a tip for speeding up the XDMCP protocol ?

            • 3. Re: Speed up SQL developer over XDMCP?

              i found [http://forums.fedoraforum.org/archive/index.php/t-172431.html]
              for me it was a (small) improvement.

              • 4. Re: Speed up SQL developer over XDMCP?
                Aleksander Stopar
                Thanx for the info.

                I will try the suggested actions ASAP.

                Meanwhile, I found an detour around my problem. Since I have to connect to the specific intermediate workstation first (and from there to the database servers), I put a port forwarding ssh session on that workstation, which forwards specific ports to designated ports on various database servers, for exapmle, port 44444 to 1521 on DBS1, 44445 to 1521 on DBS2 etc. This way I can connect with SQL Developer to the intermediate workstation on specific port, which then connects me to the desired database. The obvious difference from XDMPC session is, that I need to have:
                - port forwarding active on intermediate workstation
                - localy installed SQL Developer

                This is an example of ssh statement running on intermediate workstation:

                ssh -L 44444:xxx.yyy.zzz.www:1521 -L 44445:xxx2.yyy2.zzz2.www2:1521 -L 44446:xxx3.yyy3.zzz3.www3:1526 user@ -g -N

                here xxx.yyy.zzz.www means IP address of your database server,, so 44444:xxx.yyy.zzz.www:1521 would be that connection to port 44444 on intermediate workstation would be forwarded to database server xxx.yyy.zzz.www to port 1521. user@ means your local user on intermediate linux workstation.

                In SQL developer I define a connection as IP_of_intermediate_wks:44444:service_name which connects (gets forwarded) to the xxx.yyy.zzz.www:1521:service_name

                This kind of connections works quite fast and SQL Developer running localy with remote database is normally usable.. However, this is not a replacement for XDMCP because not all thngs can work this way, for example; if you try to set up such a port forwarding for an database console session ( 55555:xxx.yyy.zzz.www:1158) you would get only a login screen, but after that the connection would fail because all addresses of dbconsole are hardcoded with 1158 port (which is not forwarded on the intermediate workstation).

                So running SQL Developer over XDMCP would still be a preffered method, since other things (browser) work fine over XDMCP and you don't have to have localy installed SQL Developer (which means you can use any linux workstation) .

                I will report how it goes with suggested modifications.


                Edited by: Aleksander Stopar on Apr 8, 2011 2:02 AM
                • 5. Re: Speed up SQL developer over XDMCP?
                  Aleksander Stopar

                  I have to say that I tried the following (as per suggestion):

                  1.) added to sqldeveloper.conf
                  AddVMOption -Dsun.java2d.pmoffscreen=false

                  2.) added to script that starts sqldeveloper (sqldeveloper.sh)
                  export J2D_PIXMAPS

                  and I have to say that the speed over XDMCP is better than I expected. It is no speed demon (a bit of lag when typing), but totaly usable (screen refreshes are fast enough, tree nodes expansions are quick, switching between the SQL Worksheets is fast, switching between the sql area and result grid and back is also quick. Overall I'm positively surprised and delighted. Now I can run SQL Developer over XDMCP!

                  Thanx for the tip!!!