SQL Developer has averaged about a single major release a year. We’ve also always had an Early Adopter or open beta where we would debut new features, and you could provide feedback.

I think this worked – quite well even.

Get ready to take a quantum leap forward!

But that’s over.

Starting later this year, you’ll see us put our product (SQLDev, Data Modeler, SQLcl, ORDS) release updates every quarter. This allows us to keep up with the frequent release cycles we see in our Oracle Public Cloud services.

It also means you don’t have to wait as long for things like bug fixes and feature tweaks.

It also ALSO means we’re going to change how we number the versions.

Version 4.2 was the last version 4. Going forward, releases will be numbered by the Year.Quarter.Week of the release date.

This might feel weird, for awhile. But it’ll be OK.

It’ll be nice to know just how FAR out of date you are with your software 😉

More frequent updates means more iterative approach to building features. We like to go fast here, and now we can theoretically go even faster now. We still reserve the right to do an EA for ‘big stuff’ – but don’t expect an EA each quarter, that just won’t be happening.

So what’s next?

17.2 Things

12c Sharding Support.

A very simple setup, but you get the idea.

You’ll get an overview of your sharding directors, regions, groups, spaces, and of course, shards.

You’ll be able to dive into the instance viewer for these individual databases, or get into our new Data Guard console.

Data Guard.

Lots of info to share…

We’ll have a lot more to say about these new features when the release happens – there’s a lot more going on than just what you see in the screenshots.

Bug fixes – the things annoying you in v4.2 are annoying us too: the connection drop/reconnect stuff is on our ‘kill list’, tweaks to formatter behavior, fixing the data grid typing/input transposed characters stuff, copying/pasting stuff off the tree, etc.

And, the preferences search just got a huge upgrade. Should be much easier to find options using the search.

The search will find EVERYTHING that has that word on the preference label or description!

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.

26 Comments

  1. Hi Jeff,

    It takes more than 4 mins each time to load the tables in the left pane of the SQL devloper for a larger database. The SQL invokes a number of objects for larger database. Please find the SQL below for your reference.

    SELECT *
    FROM
    (
    SELECT o.OBJECT_NAME ,
    o.OBJECT_ID ,
    ” short_name ,
    DECODE(bitand(t.property, 32), 32, ‘YES’, ‘NO’) partitioned ,
    DECODE(bitand(t.property, 64), 64, ‘IOT’, DECODE(bitand(t.property, 512), 512, ‘IOT_OVERFLOW’, DECODE(bitand(t.flags, 536870912), 536870912, ‘IOT_MAPPING’, NULL))) iot_type,
    o.OWNER OBJECT_OWNER ,
    o.CREATED ,
    o.LAST_DDL_TIME ,
    O.GENERATED ,
    O.TEMPORARY ,
    CASE
    WHEN xt.obj# IS NULL
    THEN ‘N’
    ELSE ‘Y’
    END EXTERNAL
    FROM SYS.Dba_OBJECTS O ,
    sys.tab$ t ,
    sys.external_tab$ xt
    WHERE O.OWNER = :SCHEMA
    AND o.object_id = t.obj#(+)
    AND o.object_id = xt.obj#(+)
    AND O.OBJECT_TYPE = ‘TABLE’
    UNION ALL
    SELECT OBJECT_NAME ,
    OBJECT_ID ,
    syn.SYNONYM_NAME short_NAME ,
    DECODE(bitand(t.property, 32), 32, ‘YES’, ‘NO’) partitioned ,
    DECODE(bitand(t.property, 64), 64, ‘IOT’, DECODE(bitand(t.property, 512), 512, ‘IOT_OVERFLOW’, DECODE(bitand(t.flags, 536870912), 536870912, ‘IOT_MAPPING’, NULL))) iot_type,
    SYN.TABLE_OWNER OBJECT_OWNER ,
    o.CREATED ,
    o.LAST_DDL_TIME ,
    O.GENERATED ,
    O.TEMPORARY ,
    CASE
    WHEN xt.obj# IS NULL
    THEN ‘N’
    ELSE ‘Y’
    END EXTERNAL
    FROM SYS.Dba_OBJECTS O ,
    sys.user_synonyms syn,
    sys.tab$ t ,
    sys.external_tab$ xt
    WHERE syn.table_owner = o.owner
    AND syn.TABLE_NAME = o.object_NAME
    AND o.object_id = t.obj#
    AND o.object_id = xt.obj#(+)
    AND o.object_type = ‘TABLE’
    AND :INCLUDE_SYNS = 1
    )
    WHERE
    /**/
    OBJECT_NAME NOT IN
    (
    SELECT OBJECT_NAME FROM RECYCLEBIN
    )
    AND NOT object_name LIKE ‘BIN$%’

    Is there a way to optimize the SQL?

    Thanks.

    • That SQL has already been optimized. We test it against e-biz APPS instance with tens of thousands of objects. Can you ask your dba if data dictionary stats have been collected recently?

      You can also create a filter to limit the objects retrieved.

    • Hi Jeff,

      Thanks for your quick response. The database has millions of objects.

    • Hi Jeff,

      We also tried collecting dictionary stats and it didn’t make any difference.

      Thanks,

    • If you have tens of thousands of tables in a single schema, that’s always going to be a slow query.

      My advice would be to avoid the browser and use DB search or Ctrl click navigation to get to an object.

  2. Panagiotis Katsoulis Reply

    What happened to sql developer 17.2 download page?
    Installed the sqldeveloper-17.2.0.179.1623-no-jre.zip but the page rolled back to version 4.2 after a while…

    thanks

  3. Are you sure that in Q2 there is a week Zero (0) ? 🙂
    Year(17).Quarter(2).Week(1 ) –NOT 0)

    Andre

  4. I like the data guard monitoring/control window. Do we have a similar window for monitoring and managing pluggable databases? It’ll​ be nice to have the graphical data drums representing pdbs and or application containers that can dragged unto the window to create a pluggable database using a wizard.

    • We don’t have a container view that shows the PDB’s in it from a ‘monitoring’ perspective. You can look at individual instances with the Instance Viewer though.

  5. Hi Jeff, do you have plans of adding dark themes to sql developer? Also I would like to customize the data dictionary fields that are generated from SQL developer data modeler. Add more fields and provide the input into those additional fields from a data table

    • Mark Casazza

      Hi Jeff,

      I’m using the Twilight theme. I also have a template defined as:

      ssf = SELECT * FROM [(table)] where 1=1;

      When I get the whole command input the “table” portion is highlighted so I can replace it but when I try to type into the highlighted box, the background and text, goes light gray (actually, I think it’s white text on a light gray background) what do I have to change to be able to see what I’m typing?

      Thanks,
      Mark

    • You’ll want to customize the selected text fore and background color settings for that theme.

      Try this combo, Mark:

    • Mark Casazza

      Thanks Jeff, that pointed me in the right direction. It was actually the Tab-Navigable Field style that needed to be modified. It works perfect now.

  6. Hi Jeff!

    Any plans on releasing SDK?
    I still use SQL Developer for my everyday work, but it becomes harder and harder:
    – I have 1000+ DB connections, so I really need level-2 and level-3 folders and search within connections.
    – I need simple rule-configurable spell checker (“form->from”, “groupb y -> group by”, etc)
    – Some quick macros stuff, like formatting resultset to make it suitable to be paste into “in ( )” part or pasting to_date(‘current_dd_mm_yy’) into snippets
    I’d be glad to develop and publish all this stuff myself, but without any SDK/examples I have even no idea where to start.

    Thanks!

  7. Delfino N. Reply

    Looking forward the dataguard option, I have several reports that give me information about DG.

    thanks

Reply To Panagiotis Katsoulis Cancel Reply