So go download it.

I’m at the beach this week, not working. Mostly.

I’ll be talking about our newest addition to the family, pretty much non-stop, starting next week and stopping when version.NEXT is released. You have plenty to look forward to πŸ™‚

SQL Developer version 4.0 - lots of yummy goodness inside :)
SQL Developer version 4.0 – lots of yummy goodness inside πŸ™‚

For now, just a few points:

  1. We’re not distributing the JDK on Windows 32 bit distributions anymore
  2. We now require Java 1.7 JDK by default
  3. Windows installs will attempt to auto-find the JDK for you on the first run – if you’re in 64-bit mode, run the 64.exe in the bin directory and we’ll look for the 64bit JDK – once it’d defined, you can run the main dir exe again
  4. We’re shipping an 11.2.0.3 JDBC driver now, so you’ll need an 11.2.0.3 client to use OCI/thick connections – this will SOON change to 12cR1 driver/client requirement
  5. All 3rd party extensions are currently disabled – our framework has changed such that they will need to be updated to be compatible with the new version – more to follow early next week
  6. This is the first EA release for 4.0 – there will be more as you help us fine tune and tweak the new features and identify bugs
  7. Don’t be shy with your feedback, you won’t hurt our feelings

Now, back to the beach πŸ™‚

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.

297 Comments

  1. I am having issues loading developer, I keep getting the “Cannot find a Java SE SDK installed at path:..” error.

  2. Paul Stuart Reply

    Hi Jeff,

    Here’s an example of what i’m running :

    VARIABLE sql_id_var VARCHAR2(64);
    VARIABLE sql_child_number_var NUMBER;
    VARIABLE sql_exec_var NUMBER;

    — here’s our target statement :
    select count(*) from gv$session;

    begin
    SELECT PREV_SQL_ID, PREV_EXEC_ID, PREV_CHILD_NUMBER INTO :sql_id_var, :sql_exec_var, :sql_child_number_var
    FROM v$session V
    inner join v$sql S on S.sql_id = V.prev_sql_id
    WHERE SID = (SELECT dbms_debug_jdwp.current_session_id from dual )
    AND serial# = (select dbms_debug_jdwp.current_session_serial from dual)
    and parsing_schema_name = user ;
    end;
    /

    Now, i’ve noticed that in a sense you’re right. If I select all of the above code in one block and then hit F5 – it works. However, if I run each statement separately it doesn’t. It then picks up the sql developer select that we were discussing earlier.

    That is a change from sql developer 3, cause with 3 you could run each statement
    interactively, and still get the right result. But anyway.

    It’s worth being aware of though, cause people often run things one at a time. Take this other example :

    select count(*) from gv$session;
    select * from table( dbms_xplan.display_cursor(NULL, NULL, format => ‘ADVANCED’ ) );

    In this situation, display_cursor should show you the LAST sql executed.

    And, as with the earlier example, if you select both and hit F5 you get the expected result, which is the explain plan for the first statement. If you run one at a time however, you get the explain plan for gypnfv5nzurb0, which is our :
    select child_number from v$sql where sql_id = :1 order by…

    Let me know what you think.

    Paul Stuart

    • selecting everything and running at once – that was going to be my suggestion. even for running an xplan request via earlier versions has the same issue you’re referring to – the parent thread (connection) is being used to run things for the IDE vs JUST what you’re running.

  3. Paul Stuart Reply

    Hi Jeff. Yes, I thought it might be something like that.

    The problem now, is that any time you run some sql interactively from SQL developer,
    the PREV* fields from V$SESSION are effectively gone. I have code that was
    using those fields to find, well, the previous sql id. Now that’s not possible.

    Is it possible to enable or disable this feature?

    regards

    Paul Stuart

    • If the query is in your worksheet, just use the explain plan drop-down, it will show the SQLID of the query at the cursor. Does this give you what you want?

    • Paul Stuart

      Hi Jeff,

      Well, not really. Because what I was doing was selecting the
      results of these queries into sqlplus variables.

      I understand the desire to enhance the gui and make sql developer
      a better development environment.

      But there is also a sense in which SQL developer is the main platform
      for executing sql, sqlplus and PL/SQL code. Isn’t it?
      SQLplus for windows is dead, and I personally hate using the
      commandline sqlplus for windows too. I like to use SQL Developer
      for all my work. I’m sure you agree.

      I’m not going to go on about this, but as the main windows client
      for Oracle, doesn’t SQL Developer have a duty to reliably run the
      same sql and pl/sql that sqlplus does? Because if not SQL developer, then who?

      regards

      Paul Stuart

    • We run a superset of what SQL*Plus does – that and then some. The ‘and then some’ lets you have fun things like code assistance and such.

      Would you mind sharing your query? And maybe share what you’re using these for? It will help me build a business case for making a change or tweak in how this feature is currently working (or not in your case.)

    • Paul, one more question, how are you executing your sql? If you’re using F5, I’m thinking this should work – that should ONLY be running your SQL and it’s intent is to mimic SQL*Plus behavior as close as possible.

  4. Paul Stuart Reply

    Hello,

    I’m using the latest (12.84) build of 4.0.

    Has anyone else noticed that the PREV_SQL_ID column of V$SESSION now
    always shows ‘gypnfv5nzurb0’. This sql is :

    select child_number from v$sql
    where sql_id = :1
    order by child_number

    The PREV_EXEC_ID field keeps increasing too, so it’s obviously something
    being run in the background of SQL Developer. I’ve tried settting SERVEROUTPUT
    to ON and OFF, but that doesn’t seem to affect it.

    And yes, it did work in previous versions of SQL Developer. The PREV_SQLID
    column generally shows the last SQL that you executed.

    Paul S

  5. Hi.

    Even though I set a break point at a package body, the debugger won’t break at the specified line at all. (I used debug not execute)

    It worked well in version 3.2.20.09 and our oracle server version is 10.2.x.

    • If I set host to my local IP address after being prompted, It works.
      Without that option enabled in preference, I can not make it work.
      The error messages are as follows:

      ALTER SESSION SET PLSQL_DEBUG=TRUE
      CALL DBMS_DEBUG_JDWP.CONNECT_TCP( ‘127.0.0.1’, ‘1400’ )
      ORA-30683: failure establishing connection to debugger
      ORA-12541: TNS:no listener
      ORA-06512: at “SYS.DBMS_DEBUG_JDWP”, line 68
      ORA-06512: at line 1

    • That’s as designed. The database is making a connection back to your computer. If you put localhost in, it will only work if the database and sql developer are running from the same machine.

    • It used to work in previous version without that option enabled.
      Do I have to see the host input dialog every time I try to debug?

  6. hello there, i’ve a problem:

    Illegal character in path at index 53: file:/C:/Users/usuario/AppData/Roaming/SQL Developer/UserSnippets.xml

    Any suggestions?

    Thank you

  7. Hi there!
    1. DB object finder does not work when OSD is installed on Fedora Linux or any distro.
    2. (Sql worksheet) scripts with more than 1,000 lines freeze the editor to the point it become useless.

    • 1. How so? What happens when you try it? It’s the same code on any OS, so Fedora shouldn’t come into play
      2. Can you get EA2 – came out late yesterday. This was a known bug and should be fixed

    • Thank you
      This happens on Fedora 18, when I select DB obj finder, I choose all schemas, table, type the table name, click Go and nothing happens, even I check all sources check box. The screen only shows a blink but nothing else appears as a result.

  8. I have same problem with start SQL Developer 4 on Fedora 19 and Oracle JDK 7u40.
    SQL Developer and Oracle JDK installed from RPM.

  9. Hello there, I am having issues running SQL Dev 4 on Fedora 19…I installed open jdk7 but when I launch the program, the loading screen shows up but program crashes somehow and doesnt boot. When I run it from terminal as su, I get the following:

    Oracle SQL Developer
    Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.

    Sep 09, 2013 9:53:46 AM javax.ide.extension.spi.DefaultElementContext resolveResource
    SEVERE: jar:/file:/opt/sqldeveloper/sqldeveloper/extensions/oracle.sqldeveloper.migration.application.jar!/META-INF/extension.xml:16: Resource not found: ‘${SCRATCH_COMMAND_ICON}’.

    LOAD TIME : 164#
    # A fatal error has been detected by the Java Runtime Environment:
    #
    # SIGSEGV (0xb) at pc=0x0000003b09c62e00, pid=2070, tid=140424423397120
    #
    # JRE version: 7.0_25-b15
    # Java VM: Java HotSpot(TM) 64-Bit Server VM (23.25-b01 mixed mode linux-amd64 compressed oops)
    # Problematic frame:
    # C 0x0000003b09c62e00
    [error occurred during error reporting (printing problematic frame), id 0xb]

    # Failed to write core dump. Core dumps have been disabled. To enable core dumping, try “ulimit -c unlimited” before starting Java again
    #
    [thread 140424509183744 also had an error]
    # An error report file with more information is saved as:
    # [thread 140424509183744 also had an error]
    #
    # If you would like to submit a bug report, please visit:
    # http://bugreport.sun.com/bugreport/crash.jsp
    #
    /opt/sqldeveloper/sqldeveloper/bin/../../ide/bin/launcher.sh: line 611: 2070 Aborted (core dumped) ${JAVA} “${APP_VM_OPTS[@]}” ${APP_ENV_VARS} -classpath ${APP_CLASSPATH} ${APP_MAIN_CLASS} “${APP_APP_OPTS[@]}”

    Thereafter my fedora shows a message saying “A problem in the jdk-1.7.0_25-fcs package has been detected”

    Any ideas how I can fix this

    • It sounds like your java install is borked. Do you have SQL Developer 3.2 installed, if so, does it also ‘not work?’

      Can you try re-installing Java 7?

    • Nelson. I was having the same issue as others, that only sudo would make SQLDeveloper to work. After running a strace on SQLDeveloper with and without sudo, I compared the output of both and identified that the one failing was due to being unable to find some awt libraries. So I started removing environment variables and found out that the culprit is GNOME_DESKTOP_SESSION_ID. Just unset that variable and SQLDeveloper will work fine, at least works fine for me :).

    • Thanks. That helped me, too. I had to unset two variables:

      unset GNOME_DESKTOP_SESSION_ID
      unset DBUS_SESSION_BUS_ADDRESS

      I just added that to the launcher script, and that fixed my problem.

    • Merci. Worked for me. Added the following:

      unset GNOME_DESKTOP_SESSION_ID
      unset DBUS_SESSION_BUS_ADDRESS

      Then started sqldeveloper from the command line using sudo as follows:

      sudo sqldeveloper

  10. The PL/SQL debugger does not work.
    no ideas why not… I click on the debug icon and an empty pl/sql calling block is openintg.
    The content can not be stored nor retrieves by the file open function.
    Can you give me please an advice wht is missing in the config or the documentation

    • Blank every time for that particular piece of code or for EVERY single pl/sql object you try? Our parser is blowing up on something obviously – and we’ve been fixing these bugs as we’ve been going along.

      Can you share an example program where you’re seeing this behavior?

  11. James Macdonald Reply

    Hi Jeff, thank you in advance

    UIDefaults.getUI() failed: no ComponentUI class for: oracle.ide.controls.StatusBarControl$JDevStatusBar[,0,0,0×0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize=,preferredSize=]java.lang.Error
    at javax.swing.UIDefaults.getUIError(UIDefaults.java:729)
    at javax.swing.MultiUIDefaults.getUIError(MultiUIDefaults.java:130)
    at javax.swing.UIDefaults.getUI(UIDefaults.java:759)
    at javax.swing.UIManager.getUI(UIManager.java:1002)
    at oracle.bali.ewt.statusBar.StatusBar.updateUI(StatusBar.java:480)
    at oracle.bali.ewt.statusBar.StatusBar.(StatusBar.java:104)
    at oracle.ide.controls.StatusBarControl$JDevStatusBar.(StatusBarControl.java:264)
    at oracle.ide.controls.StatusBarControl.(StatusBarControl.java:48)
    at com.oracle.jdeveloper.nbwindowsystem.NbMainWindow$11.(NbMainWindow.java:1076)
    at com.oracle.jdeveloper.nbwindowsystem.NbMainWindow.createStatusBar(NbMainWindow.java:1076)
    at oracle.ide.IdeMainWindow.getStatusBar(IdeMainWindow.java:624)
    at com.oracle.jdeveloper.nbwindowsystem.NbMainWindow.getStatusBarStatic(NbMainWindow.java:228)
    at com.oracle.jdeveloper.nbwindowsystem.NbStatusBar.getStatusLineElement(NbStatusBar.java:23)
    at org.netbeans.core.windows.view.ui.MainWindow$4.run(MainWindow.java:365)
    at org.netbeans.core.windows.view.ui.MainWindow.getStatusLineElements(MainWindow.java:377)
    at org.netbeans.core.windows.view.ui.MainWindow.decoratePanel(MainWindow.java:331)
    at org.netbeans.core.windows.view.ui.MainWindow.initializeComponents(MainWindow.java:248)
    at org.netbeans.core.windows.view.DefaultView.showWindowSystem(DefaultView.java:563)
    at org.netbeans.core.windows.view.DefaultView.windowSystemVisibilityChanged(DefaultView.java:542)
    at org.netbeans.core.windows.view.DefaultView.changeGUI(DefaultView.java:187)
    at org.netbeans.core.windows.ViewRequestor.dispatchRequest(ViewRequestor.java:275)
    at org.netbeans.core.windows.ViewRequestor.processVisibilityRequest(ViewRequestor.java:264)
    at org.netbeans.core.windows.ViewRequestor.postVisibilityRequest(ViewRequestor.java:201)
    at org.netbeans.core.windows.ViewRequestor.scheduleRequest(ViewRequestor.java:121)
    at org.netbeans.core.windows.Central.setVisible(Central.java:140)
    at org.netbeans.core.windows.WindowManagerImpl.setVisible(WindowManagerImpl.java:926)
    at org.netbeans.core.windows.WindowSystemImpl.show(WindowSystemImpl.java:105)
    at org.netbeans.core.GuiRunLevel$InitWinSys.run(GuiRunLevel.java:246)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
    at java.awt.EventQueue.access$000(EventQueue.java:101)
    at java.awt.EventQueue$3.run(EventQueue.java:666)
    at java.awt.EventQueue$3.run(EventQueue.java:664)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

  12. James Macdonald Reply

    Hi,

    I have downloaded and started using SQL Developer 4.0, but when opening it the loading bar hangs at the 3rd and a section. Any suggestions? I am using the latest JDK, previously I used sql developer 3.2

    Thank you

    • Start the tool using the EXE in your bin directory – that will give you a cmd console window with logging info. When SQL Dev hangs at startup, send a ctrl+break/pause and grab that info and post it here.

  13. Hi Jeff,

    using “Remote Debug”, every time I connect with our program to the database in debug mode a dialogue “Choose default run target” appears which I have to “Cancel”.
    Then when debugging is stopped through SQL developer’s “Terminate” button or through kill of our program an IdeConnection…jpr remains in the “Processes” view and cannot be removed anymore.

    Regards,

    Harald

    • No, I didn’t.
      Now I read it and it does not help, unfortunately.
      Remote Debugging with SQL Developer 4.0 works well.
      Problems arise if you want to change plsql package code and recompile it as once starting remote debugging, these debug sessions stay open until infinity and there is no way to get rid of them anymore. This prevents recompilation. The only way to get out of this is to restart SQL Developer.
      Any other ideas?

    • I’m confused. Why would you make changes to your program and compile it whilst debugging? End your debug session and THEN compile it. I imagine this behavior is the same in previous versions?

    • Exactly that IS the problem. I want to end the debug session and can’t do it.
      All debug sessions except the first one don’t stop in my environment and the red squared stop button is gray out for these debug sessions, then.
      And no, with 3.2 I had no problems.

    • Can you confirm for me that you’re able to end a ‘local’ debug session successfully? Thanks for your patience here.

      Also, this works as expected in v3.2.2, or the issues are localized to version 4? And by that I mean, can you try again with 3.2 now just to make sure? When you say you ‘had’ no problems, I don’t know how long it’s been since you’ve tried and want to make sure nothing in your env has changed other than SQL Developer.

    • Hi Jeff,

      I can confirm ‘local’ debugging works well.

      And this works as expected in 3.2.20.09.
      Currently I use them side by side. 4.0 for its support of svn 1.7 and 3.2, well, for debugging.
      I can send you some screenshots if that helps. Just tell me where I should send them.

    • Now, in my tries is something different as the red stop button is not greyed out anymore. Instead I can press the button (without result) and get two kinds of error messages:
      Error during handleEvent on action ‘Terminate’ (id=259).
      None of the attached controllers handled the action.
      – oracle.ide.controller.IdeAction$ControllerDelegatingController@c7e040a5[oracle.ideimpl.controller.MetaClassController@c7e040a5[oracle.ideimpl.runner.RunManagerController]].
      and
      Error during handleEvent on action ‘IdeConnections%23PEGAPLAN+at+tslpxm2_ldap.jpr’ (id=1247).
      None of the attached controllers handled the action.
      – oracle.ide.controller.IdeAction$ControllerDelegatingController@5fabbbcf[oracle.ideimpl.runner.TerminateRunProcessButtons@5fabbbcf].

  14. Jonathan Trumbull Reply

    Hi,

    I currently use 3.2.10.09 with the SVN plug-in and in testing out 4.0, I am unable to connect to the repository using the same parameters. The issue is likely that we are using SVN Bridge to connect to a TFS 2010 repository. Any chance you could support this configuration or is this too much of a stretch?

    Thanks!

    • Ummmm, yeah. I didn’t even know this was possible. So if I understand, you’re faking SVN and you’re actually versioning your files in TFS?

    • Jonathan Trumbull

      Hard to believe, but yes that is what it is. We use TFS because the bulk of the work is in MS tools but the database is Oracle. We prefer to keep the db model in the same repository as the code for obvious reasons. It actually works pretty well and we would be sad to see it stop working. This is the link to the TFS/SVN component:

      http://svnbridge.codeplex.com/

      If this is something you can’t support, we hope that you guys test against the new git capabilities in TFS 2013 because that will also be an option for us when released.

      Thanks!

  15. In the AppData there is a large (30Mb) all-resources.dat file. Wondering what that is, doesn’t seem like it was present in 3.2.2. My guess is its part of the new Framework, all attempts at googling returns reference to NetBeans…

    The real question is, can I move it? AppData is synced by my companies (minute) backup and 30Mb is too much for it to handle.

    • If you move it, it will just get recreated at startup. It’s a cache file for the netbeans framework. It’s not a critical file, so if it’s not being backed-up, it’s not a big deal. Your IT folks can black-list if that would help?

  16. Hello
    When I run a script F5, I have no screen output.
    And I get the message: SEVERE 141 0 oracle.ide.controller.IdeAction error during handleEvent action on ‘Run Script’ (id = 186).
    None of the attached controllers handled the action ..
    java version “1.7.0_25”
    Java (TM) SE Runtime Environment (build 1.7.0_25-b17)
    Java HotSpot (TM) 64-Bit Server VM (build 23:25-b01, mixed mode)

    Oracle IDE 4.0.0.12.27
    Java Platform (TM) 1.7.0_05
    Versioning Support 4.0.0.12.27

    • Hmmm, does the same script work in version 3.2.2.20 – or is this ALL scripts?

      Can you run in debug mode and get the full log?

    • Natividade

      Hello Any script has the same behavior and worked in previous versions. Even a select sysdate from dual does not have output.

  17. Are we going to see a 4.0 download for “other” platforms like 3.2 has available anytime? I run Ubuntu desktop, an RPM isn’t really useful to me…

    • Just grab the Windows ZIP downlaod (I believe that should work just fine) – but yes, you’ll see the other platforms added. And PROBABLY a Windows w/64 bit JDK. Stay tuned.

    • Duh. Yep, that works fine. Up and running on Ubuntu 12.1. Thanks.

    • Has above bug been fixed for not displaying CLOB data. I am facing slowness when I am trying to fetch rows containing CLOB data. As soon as i selectively chose other columns, output is coming fast.

  18. Hello Jeff,

    Can you run this query as such in sql developer 3.2.20.09 and 4.0.0.12. (just do ctrl+enter NOT F5)

    you can see the output in 3.2 but not in 4.0

    select table_name,column_name,
    dbms_xmlgen.getXMLType( ‘select count(‘||column_name||’) from ‘||table_name )
    from user_tab_cols
    where table_name in (‘EMP’,’DEPT’)
    and column_name =’DEPTNO’

    • Yup, we know XML is busted in 4.0. It’s the biggest priority bug we have to address before we can release the product officially. Stay tuned…

  19. Omar Fernandez Reply

    I am using sqldeveloper EA1 version, but has an error, because when I connect to a database the IDE displays a dialog box with the error, but then I never see the connections available, I would like to know is when it leaves the final version or next EA2 for download?

    • We’re readying EA2, but

      >>but has an error, because when I connect to a database the IDE displays a dialog box with the error
      What’s the error? We can’t fix the problem if we don’t know about it πŸ™‚

    • Omar Fernandez

      can you give me an email to send you a screenshoot with the error?

  20. Everything running extremely good in the new version but it seems order of magnitude slower with large SQL queries. Every now and then I need to run a bunch of queries that are 6-7K lines long (each); it takes forever between I paste such a query into the SQL worksheet window and I can execute the query (“forever” = some 40 seconds, more or less). In 3.2 it was some 2 or 3 seconds.

    Any ideas?

    • Disabling semantic analysis info tips helped a bit (thanks!) but the response is still some 15 seconds (as opposed to v 3.2 – less than a second, just checked a moment ago).

      Any other bells and whistles to disable, to gain some responsiveness?

    • I’m seeing this too (in fact, it’s what brought me here).

      Big queries (1000+ lines) make the editor incredibly slow, to the point that it’s unusable. Typing is slow. Find+Replace is so slow it looks like it hangs SQL Developer (but actually doesn’t).

      Oh, and I’ve disabled all the option in the “Completion Insight” section. It helps, but it’s unbearably slow.

  21. I’m testing it on my Fedora 19, looks fine for now. Please extend the linux support, the RPM package is the only way to install it.

    • Hi Adrian,
      I’ve noticed that you are using fedora 19 – I’ve installed sqldeveloper 4 + Oracle JDK 1.7 and I’m not able to run it without sudo.

      Did you manage to start sqldeveloper without sudo?
      Thanks,
      Boris

    • Hi Boris,
      I’m using OpenJDK 1.8 and it works directly from the kde menu. I had to run from the console the first time and update the /opt/sqldeveloper/sqldeveloper/bin/sqldeveloper.conf file adding an option to use with a JDK. But I never used sudo. Just for install the rpm.
      Maybe is a permissions issue on your OracleJDK.

    • Hi Adrian,
      Thank you for the reply. I’ve hoped that you were using Oracle JDK… Strange… I’ve tried every possible IDE (Netbeans, Idea, Eclipse…) with my installation of JDK and worked perfectly. I have issues only with Sqldeveloper 4 EA1 and JDeveloper 12c…
      Anyway, thank’s again for the reply.

    • Magic! Thanks Natividade, i have no idea why, but ‘unset GNOME_DESKTOP_SESSION_ID’ did the magic πŸ™‚

Write A Comment