editor / browser
   explain plan
   object space
   object DDL
   external apps
   trace config
   cursor cache

Ask Tom
Oracle WTF


Oracle database development tool

Features :
  • schema browser
  • SQL syntax highlighting
  • sqlplus-style command parsing
  • configurable external editor (F2 key)
  • configurable external query results viewer (F3 key)
  • explain plan facility (DBMS_XPLAN display included)
  • configurable statement tracing, any metric in V$SESSTAT can be measured
  • segment space analyzer utlizing the DBMS_SPACE package
  • database object DDL generator via the DBMS_METADATA package
  • DBMS_SCHEDULER interface
  • Advanced Queue interface

SQL statements can loaded for analysis from :

  • runtime cursor cache (V$SQL)
  • statspack snapshots
  • Oracle10g AWR snapshots
  • active sessions
  • local files


23 July 2007
v2.14 is out

A bunch of annoyances were addressed in this release, especially database instance connect time.  The 'find' populator was bogging it down in a big way.  Even for an empty schema there are usually over 1000 items to load with all the ALL_, USER_, and DBA_ catalog tables in 10g, just to fill in a GtkEntryCompletion widget.  Although I hate to use the non-blocking OCI interface on the background service context (read: polling), hopefully it's the right concession.  Note that changing the current schema with the Schema: combobox will also repopulate the finder.

OCI learning experiences this time around: when it comes to the non-blocking mode setting for a server handle in OCI, it doesn't matter what value you pass, it's an alternating toggle. Hey OCI: thanks for the (static) memories. Couldn't you at least buy me dinner first?

This release also includes client-side statement caching for the queries executed underneath the covers for the user interface. You all are going to minimize your latching in this way.  Both of you. Mini-saga on the OCI forum here for the truly under-employed.


 - list of snapshot subscribers for materialized view log nodes in the browser.  Incidentally, I hate the IO on these things.

 - option to save query results as an HTML table

 - new icon for locally partitioned bitmap indexes: locally partitioned bitmap index   There can actually be no other type of bitmap index on a partitioned table.  Why this is so is a decent interview question.  

03 May 2007
GTKO 2 on the way

gtko2 browserr

02 April 2007
v1.84 is out

* Query-based bind comboboxes in SQL editor

When the toolbar bind button is clicked, a combobox will be created for bind variables in the query textview that are anchored with '&', the values of which are populated by a 'define' line for the name of the bind variable. 
 dynamic bind image

When the toolbar bind button is clicked, a combobox is created at the '&tsname' location and it is populated with tablespace names. The chosen tablespace name will then be bound to the query when executed. 

* More table types in the browser table treeview

Icons for mviews and mview logs and enhanced info on click/double click.


* Removed schema browser Table/Segments tab; unnecessary now that the segment size is obtained by double-clicking on a segment in the table list. 
* Added sample SQL directory and some queries to the distribution; src_dir/sql 

10 January 2007
v1.80 is out

* Expandable tables in the schema browser  
Double-clicking on a table will expand the table's :
  - indexes (shown red when unusable)
    - index partitions and subpartitions
  - table partitions
    - table partitions and subpartitions
  - LOB segments

Selecting an index will show its columns and, for function-based indexes, the FBI expression in the column list to the right. Double-clicking on and index will show expand any index partitions.

Selecting a table partition will show the partition column-level statistics in the column list to the right. Double-clicking on the partition will expand any subpartitions.

gtko subtable image

* Enhanced command parsing
The SQL command parser will now almost completely tolerate sqlplus keywords and commands such as SET and PROMPT. Although nothing is done with the commands (yet) this allows just about any file that runs in sqlplus to be run in GTKO.  Writing this sucked - if anyone wants to crib, there's a function to get statements in statement.c.  It's called 'get_statements()'.

* Integer columns
Fixed a problem associated with using integer column types in GtkTreeView - NULL values show up as zero.  So instead of using GTK's G_TYPE_INT column types in the interface, every column type is character, which can show NULL, and an integer based sort function is applied to have numbers sort correctly (which is the reason int's were used in the first place).

* Server timestamp
The time on the server is displayed in the lower right corner.  Only one server round trip is performed at connect.

* New preferences dialog

03 Oct 2006
v1.72 is out

* Execute SQL block
Ctrl-B now executes the SQL 'block' that the cursor is in.  A block is any section of text surrounded by blank lines.  In summary, Ctrl-E executes the entire SQL editor buffer, Ctrl-L executes the line that the cursor is on, and Ctrl-B executes the block.

 * Inline bind variable enhancements
The SQL editor inline bind variable entry widgets are now applied based on statement offset in text view (as opposed to the character offset zero in the textview).  Binds are by name and not position in OCI.  

* TCP Keepalives

Added keepalive dialog under the Run menu.  Allows for pinging a host at a regular interval, useful to keep a VPN connection alive.

 * Explain plan crash
Fixed missing final va_list NULL in a g_strconcat in explain plan, which was causing a crash.

01 Oct 2006
v1.70 is out

* External editor and result viewer
Support for external query editor and external result viewers has been added. In Edit->Preferences an external app can be set to use for the SQL editor and for viewing results (as .csv). 
With linux kernel 2.6.13 or greater, inotify (file modification tracking) can be used to sync external editor changes to the GTKO textbuffer as they occur. Without inotify, changes made in the external editor are only synchronized back to the GTKO editor when the external editor exits. 
To configure inotify you need: 
- linux, kernel 2.16.3 or greater 
- support for inotify enabled in the kernel (in the Filesystems section) 
- run GTKO configure script with the --with-inotify switch 
* More query result output options
Query result output options have been enhanced. Now you can send output to the screen, log to a file, or neither (if you just want to test the raw select time). 
Previously the only way to get results to a file was to send them to the results treeview and then save, which was highly impractical (sometimes impossible) for large result sets. 
* Enhanched tracing
Separate query trace facility with optional logging to a trace file. Tracing is now in a separate tab next to the query output view and has options for: 
- picking stats to measure from the V$SESSTAT Oracle table 
- logging stats to a trace file, optionally with the query and the execution plan 
* Broken connection handling
automatically set interface to disconnected state for Oracle errors that indicate broken connection; ora-3113 for exammple

01 Oct 2006
v1.60 is out

The big addition in this release is compile-time support for the GtkSourceView widget as the SQL editor. Configure looks for GtkSourceView >= 1.6 and uses it instead of GtkTextView if it's found. GtkSourceView requires GTK >= 2.8, libgnomeprintui, and libxml2, but a full Gnome install is still not required. The option is in configure for now because I don't want to force an upgrade to 2.8. But I will say it's a super-cool widget well worth trying out. It's got built in undo and redo and the plan for the next GTKO release is printing support. Do plan on using quite a bit more resident memory though. 
* GtkStatusIcon
GtkStatusIcon (GTK >= 2.10) is implemented in this release. You'll get a grayed out database icon in your window manager system tray on GTKO startup which turns red during executes with the first 256 chars of the executing query as the tooltip. When executing a long running job this will keep you from having to constantly switch virtual desktops to see if it's completed. 
* Parse error offset enhanced
Parse error highlighting in the SQL editor has been dialed in a bit in terms of word starts and ends and the textview is auto-scrolled to the error line. 
* F9 execute
F9 executes in the expected fashion - selected text or, if there is no selection, all the SQL statements in the editor textview. 
Required libraries:
- GTK+  >= 2.6 (development version)
- Oracle 9 or 10 client

Optional libraries:
- GtkSourceView >= 1.6

configure options:
Compile with debug output

Compile with linux inotify file tracking support

Use GtkSourceView for the SQL editor widget

Compile for win32 platform