Version 18.1 of SQL Developer is now available.

Go download that here.

So much to talk about, so many blogs πŸ™‚

Most importantly, there are a TON of bug fixes in this release. Many of them reported on twitter, blog posts, and our forums. So thanks again for all that feedback.

Today I want to talk about the first thing you’ll see, our new ‘Welcome Page.’

It used to look like this –

Back in the time before time, we walked uphill, both ways!

Then it went to this –

Still just a fancy list of links.

Make it better AND more helpful

The #1 thing folks struggle with when starting with Oracle Database and SQL Developer – making a connection. We have docs, I’ve written blogs, we got videos, but what if we could make the tool a bit easier? So we did that.

We’ll –

  • Show you the TNSNames file we find
  • Or let you load your own TNS
  • Show you databases you’ve connected to previously
  • Help you GET a database

Looks a little bit like this.

We found a TNS file – what’s in it?

We look for TNS files in the same place your other Oracle tools look. If we find one, we show you where we found it. And show you what’s in it. AND you can hover over an entry to see how that Alias or Entry is defined.

And if you CLICK on it, we’ll add that connection to your list, in a folder called, TNS.

But what if we CAN’T find your TNS? Or what if you have a one-off copy of a file you’d like to use to define a connection? No problem.

Click, nav, click, OK

This will get loaded up in memory for defining connections – but WON’T become your new TNS file. For that to happen, you need to put it in the ight place(s).

Ta-da.

Recent

Your last 5 or so connections will get tracked in the Recent panel. Clicking on these entries will OPEN those connections. I’ve found myself using this, a LOT.

Your list will be more exciting than mine. You’ll see these AFTER you start SQLDev the next time after making any connections.

But I Don’t Have a Database πŸ™

So get one. Here are a few to choose from.

Other Things

Yeah, we have lots of links. Places to follow us online for news and such.

We even have some pictures showing you what SQL Developer can actually do.

But.

No Like?

This is our first go at the connections bits. Let us know what you think, and we can tweak for v18.2 or 18.3 or … you could close the page and not use it again.

Set it and forget it.

But try leaving it on for at least a few days, and see if you don’t like that ‘Recent’ feature.

Yes, this is a JavaFX powered screen. Yes, that DOES normally suck up some GPU power..but we found a way to avoid that, so you can have your good looks and performance too!

Oh and if you do leave it on, when there’s a new version available, the banner up top will let you know!

Author

I'm a Distinguished Product Manager at Oracle. My mission is to help you and your company be more efficient with our database tools.

63 Comments

  1. Steven Willmer Reply

    My Start Page is permanently showing “Waiting for Editor to initialize” …. endlessly, and it’s annoying. The “Loading Welcome page” process is for ever running – and I’d like to get rid of it.

    Could you please help!

    Thanks,

    • I’d rather find the reason why the page won’t load – that will help prevent others from running into the same problem.

      And then, once it’s working, it will be easy for you to tell it to not open again.

      Are you able to pull up the Instance Viewer from the DBA panel? It’s also a Java FX screen. If it’s working but not the Welcome Page or vice versa, we can rule in/out Java FX as the problem.

      Also, what OS and version of Java are you running?

    • Steven Willmer

      Hi Jeff,

      I’m running a Window 7 Enterprise OS and Java Version 1.8.0_181.

      I tried pulling the Instance Viewer from the DBA panel, but it’s giving the same error?

      Regards
      Steven

    • >>but it’s giving the same error?
      You mean, you get the ‘loading’ message, and it never comes up?

      Your Java – is that from the embedded home we ship with SQLDev, or is that one you installed?

    • Steven Willmer

      Yes, the Instance Viewer is just showing “Waiting for Editor to initialize” – same as the Welcome page – and never comes up.

      Sorry, the Java version in the Editor is: Java(TM) Platform 9.0.4
      Should be the same as the shipped version.

      (I also use ODI, and it’s version it is using ver 1.8.0_181)

      Thanks,

    • OK, it’s do this. Close SQLDev.

      GO into your AppUser folder for your OS user. In their, under Roaming Profiles is a sqldeveloper directory. And under that is a 18.whatever folder with a product.conf file. Edit that file, and point the java home to your 1.8u181 java home. Start SQLDev, let’s see if our magic spell has worked. And if it HAS – give it a day or 3 before you close that page – I think you might like the recent connections feature…

    • Steven Willmer

      Thanks Jeff!

      Took me while to figure out there are 2 directories, and the file is product.conf, but it’s working like a charm..:)

      I’ll leave it running now, it’s not as annoying anymore …

      Thanks!

    • Sorry for the PITA, and thanks for staying with me. And I updated my comment – sorry i put the wrong file name in there!

      So for 18.3, we’ll distribute Java 8 vs 9 – too many hiccups around this and JavaFx – and we’re working on getting support for Java 11 going for a future release.

  2. Jeff,

    18.1 looks much improved and performs better than versions I’ve used in the past!

    One question, if I open an unshared worksheet, is there a way to open a sql file from the filesystem into that sheet? I cannot seem to make that happen, even with drag and drop. It opens in a new worksheet, and is not an unshared workseet.

    Thanks

    Morgan

    • Right. I was looking to get it into the worksheet so as to then export the query results.

      Thanks

  3. Hey Jeff,

    Looks like some of the options around Application Express have gone away? Been looking for them all day and just aren’t there.
    Right click on APEX node -> should see at least “Import”, Right Click on application should show Import and Deploy. None of these show up.

    I kept an older installation of SQL Developer (4.1.5) around … so I fired that up. Upon connecting to the same database, and same user, I see the APEX options just fine.

    The docs (https://docs.oracle.com/database/sql-developer-18.1/RPTUG/RPTUG.pdf) say it should be where I’m looking.

  4. Hi Jeff,
    Our users are complaining about loosing connections to the database in just a few minutes and getting “Your database connection has been reset” in the latest versions of SQL Developer (including 18.1).
    SQL Developer version 4.0.3 is OK and does not reset connection.

    Is there any known issues with SQL Developer and enforced database encryption?

    Our database server tnsnames.ora:
    SQLNET.ENCRYPTION_SERVER=REQUIRED
    SQLNET.ENCRYPTION_TYPES_SERVER=(AES256,RC4_256,AES192,3DES168,AES128,RC4_128,3DES112)
    SQLNET.CRYPTO_CHECKSUM_SERVER=REQUIRED
    SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER=SHA1
    SQLNET.EXPIRE_TIME=1
    —-
    For example, if I establish connection to “user4707@qa11” and I execute a query “select count(*) from user_objects”, and then repeat the query again in a few minutes the connection is reset and see the following in the logging pane:

    SEVERE 426 116 oracle.jdevimpl.db.adapter.ReferenceWorker$PBEWorker Password decryption failed for connection u_proxy[u_odbc]@dev11

    This connection does not seem to be related to user4707@qa11.
    Thanks,
    Edward

    • No known issues.

      There are probably some big differences between 4 and 18 – the JDBC driver and the Oracle Thick Client. Which thick clients are you using in your 4.0.3 and 18.1 installs?

    • Jeff,
      In both cases 4.0.3 and 18.1 are using thin JDBC driver connection.
      Database 11.2.0.4.171017 with enforced network encryption
      Query: select count(*) from user_objects;

      It probably has something to do with SQLNET.EXPIRE_TIME=1
      Here are some cases I tested with 18.1:

      1) connecting using thin JDBC driver as shared connection (default).
      Trying the query after a few minutes:
      No results shown

      SQL Developer’s Logging Pannel:
      SEVERE 737 1 oracle.dbtools.raptor.backgroundTask.RaptorTaskManager$1 peer at sun.awt.windows.WInputMethod.openCandidateWindow(Native Method)
      SEVERE 736 357730 oracle.dbtools.raptor.backgroundTask.RaptorTaskManager$1 peer at sun.awt.windows.WInputMethod.openCandidateWindow(Native Method)

      alert.log:
      ORA-00600: internal error code, arguments: [16365], [0x7000102CC27FD18], [], [], [], [], [], [], [], [], [], []

      found dead shared server ‘S008’, pid = (39, 1)

      After another attempt to run the query “Reconnect” dialog appears.

      2) connecting using thin JDBC driver as dedicated connection ( I added :DEDICATED to the service name to enforce it)
      Trying the query after a few minutes:
      No results shown

      SQL Developer’s Logging Pannel:
      SEVERE 864 199975 oracle.dbtools.raptor.backgroundTask.RaptorTaskManager$1 peer at sun.awt.windows.WInputMethod.openCandidateWindow(Native Method)

      alert.log:
      No problems.

      After another attempt to run the query “Reconnect” dialog appears.

      3) connecting using 12.2.0.1 client and using OCI/thick driver as shared connection (default)
      Trying the query after a few minutes:
      Correct results shown.

      4) connecting using thin JDBC driver to a different database that does not have defined SQLNET.EXPIRE_TIME, but has enforced network encryption.
      Trying the query after a few minutes:
      Correct results shown.

      So it seems to be related to dead connection detection and thin driver that comes with SQL developer.
      I also got additional info that SQL Developer 4.2 is affected. Someone referenced
      https://community.oracle.com/message/14355285#14355285

      Thank you,
      Edward

    • jdbc thin doesn’t touch SQL*Net, thick DOES

      again, sounds like a jdbc driver issue – please log a SR with MOS

    • BTW

      alert.log:
      ORA-00600: internal error code, arguments: [16365], [0x7000102CC27FD18], [], [], [], [], [], [], [], [], [], []
      …
      found dead shared server β€˜S008’, pid = (39, 1)

      Don’t pass go – contact Oracle Support.

    • We had the same issue while upgrading SQL-D from 4.x to 17.x. And the same issue while upgrading ODI.
      See the Bug 27636730 (reported last year!). It only appeared when setting sqlnet.expire_time AND sqlnet.encryption_…=required

      You can try disabling one of them. We can only reproduce it with 11.2.0.4. The problem didn’t appear with 12.2.

      Again, the problem exists with ODI and SQL-D (but the SR for ODI got closed as duplicate of the SR for SQL-D) and it is known to Oracle since 2017.

    • Our dev’s 5 minute, quick reply…

      The database is configured to kill idle sessions at some point between 10 and 15 minutes. The user is trying to use SQLNET.EXPIRE_TIME as a keep-alive, expecting that every ten minutes the connection gets pinged and that prevents the connection from idling. That’s not what SQLNET.EXPIRE_TIME is for. It’s intended to allow detection and killing of dead connections so the server can correctly clean up the sessions. We can’t reproduce it because the 15 minute idle is not from the expire time, but from the idle_time being set on the profile used by the user.

      I suspect in thick and old versions of thin, the ping from the server to the client was enough to keep the session active. It isn’t anymore (which is probably an intentional change in thin, since that parameter is about detecting dead connections, not keeping sessions alive).

    • Piy,
      Thanks for the tip.

      Jeff,
      In our case application user does not have IDLE_TIME set at user profile.
      Setting SQLNET.EXPIRE_TIME is required by compliance and it is not used as a keep-alive,
      but rather to check if client is still alive.

      The sqlnet.expire_time parameter is used to set a time interval, in minutes, to determine how often a probe should be sent verifying that client/server connections are active. This protects the system from connections left open due to an abnormal client termination.

      It can also help cleaning sessions due to firewall timeout.
      https://docs.oracle.com/en/database/oracle/oracle-database/12.2/jjdbc/JDBC-troubleshooting.html#GUID-5ADA932F-B2BF-4E34-8995-435FD2EF1F92

      By the way,
      If I setup SQL Developer with 12.2 instant client and OCI/Thick drivers, then SQL Developer drops connection.
      If I setup SQL Developer with 12.2 client and OCI/Thick drivers, then SQL Developer keeps connection.

      Thanks,
      Edward

    • SEVERE 426 116 oracle.jdevimpl.db.adapter.ReferenceWorker$PBEWorker Password decryption failed for connection u_proxy[u_odbc]@dev11
      Something is going wrong or related to the password not being saved as we’d expect.

    • Jeff,
      Thank you for checking,
      I removed this entry and re-entered it one more time. No SEVERE logs since then.
      Regasrds,
      Edward

  5. In this version xmltype columns are not showing their value in the grid even though I’ve got Database -> Advanced -> Display Xml value in grid ticked. Also when I double click on an xml entry to view it the Edit Value box is empty.

    • Known bug, probably the ‘worst’ one we’ve uncovered for 18.1 at the moment. Best bet is to keep a copy of 17.4 handy if you’re going to be doing much with XML.

  6. Anil Nagireddy Reply

    Hi Jeff,

    What all database versions is it compatible with?

    Anil

  7. Hello Jeff!

    I just downloaded SQL Developer 18.1.
    Great work!

    When i select a database connection on the new welcome page, a folder (named TNS) is created in the connection list.
    I can move manual created connections into this folder and can move automatically created connections out of it, i even can rename that folder.
    How do i create such a folder manualy?
    I wished for this a long time, as i have some 200 connections that i would like to group in folders.

    As a workarround i tried to rename the TNS-folder to some other name.
    When using another connection from the welcome page, a new TNS-folder is created.
    In this way i could create some more folders.

    Thank you very much!

    • Oh, that easy!
      Never looked at the connections for this option – always wanted to create the folder and then move somethin into.

      Thank you very much!

      Any chance to create nested folders, too?

  8. Hi Jeff,

    I just downloaded and installed v18.1.0. If you navigate to Tools –> Prefs –> Completion Insight, I no longer see the “Change Case as you Type” option. Where did it go? How can I get it back?

    • It works for me, what does ‘java -version’ show when you run that from a terminal or cmd window?

      There’s also the standalone (20MB) dist of SQLcl available from OTN as well.

    • I installed java 8 jre. Before it seemed to be using the jre installed with sql developer. Anyway, it’s working great now.
      Thank you

  9. Any plans to fix using LDAP to resolve Oracle connection strings vs. using a TNS file?

  10. How do you get the welcome screen to show on starup? I ticked the do not show on my previous version of sql developer.

    Thanks

  11. Hi Jeff,

    18.1 appears to be missing code snippets (not templates)? has this been removed or have I just lost where it is now found.

    Regards

    Paul

  12. Kapil Kumar Reply

    I do not have a bug ID# but you check any table using a database link

    • My point in asking is if you don’t have a SR or BUG id, you can’t assume we know about the bug, that we’ve reproduced it in-house, and have a fix in the works.

      I’ll take a look on Monday.

  13. Delfino N. Reply

    Thank you for fixing this one, was very annoying.
    Now I don’t get it…I’m switching now to 18.1

    An error was encountered performing the requested operation:

    ORA-00904: “ALL_SHARD”: invalid identifier
    00904. 00000 – “%s: invalid identifier”
    *Cause:
    *Action:
    Vendor code 904

  14. Hi Jeff

    the F10 shortcut to view the execution plan doesn’t work.

    if i use right clic / code execution plan, for me the execution plan is not understandable.

  15. There is a bug in vr.17.4 that user cannot execute DESC command for the tables that are available on a remote server with a database link.

    Is that fixed?

  16. SQL developer amazing keep evolving, i am waiting for performance feature where sql developer will suggest many of the better execution plans for particular sql and choose best out of it based on execution time

    • The SQL Tuning Advisor feature from the database, that we have built into the worksheet, kind of already does that πŸ™‚

Reply To Paul Cancel Reply