Thank you for trying TunerFish 1.0! Please take a moment to read these brief instructions.
Installation - There is deliberately not an installation kit. (If you need an installation kit to get it to work, TunerFish probably is not for you.) Just put TunerFish.exe anywhere.
UnInstallation - Just delete the TunerFish.exe file. If you're one of those people that has to erase every trace of a program from your machine when you uninstall, then you'll have to delete the afore-mentioned TunerFish.exe file, delete the _TunerFish.log file, remove the HKEY_CURRENT_USER\Software\Definitive Solutions\TunerFish tree in the Registry, delete any '*.tun' files you created, and then delete this file.
Overview - TunerFish lets you automate the process of trying Oracle hints to optimize SQL statements. You do this by creating many 'Versions' of your statement, each with a different hint. These Versions appear in the grid at the top of the screen, while each Version's SQL and explain plan appear on tabs at the bottom of the screen. Beyond hinting, TunerFish makes it easy to try different variations of your statement by allowing you to 'clone' a Version from an existing one, and modifying as you desire. You can even name the versions to suit you. Each statement (and all of its Versions, and their statistics) can be saved to a file in the standard Windows way.
TunerFish is designed to allow you to easily generate hundreds or thousands of Versions, and then run them overnight. This allows you to check their statistics the next morning.
Getting Started - Here are the steps you need to take to set up TunerFish the first time you use it:
(1). The first time you run the program, it will ask for the information to connect to the database. If you only ever connect to one database, using one user-id, you can optionally choose to always connect using that info - that way you won't have to ever key it in again.
(2). Once the program connects to the database, go to the 'File, Preferences' menu item, and configure the font used, the 'plan table' name you wish to use, and the 'explain plan' statement you want. These all have reasonable defaults, so you can skip this step if you wish.
(3). Now, enter the SELECT statment you wish to tune into the 'SQL Editor' window (the one with the comment that says, '-- Enter your SELECT statement here, then choose the 'Tune, Wizard' menu item').
(4). Choose the 'Tune, Wizard' menu item or toolbar icon (or Shift-F12 function key) to start the Tuning Wizard. The Wizard will step you through the tuning process, which is described below.
The Tuning Process - Here are the steps the Wizard walks you through. Note that each of these steps can be run individually via menu/toolbar choices:
(1). First, TunerFish generates different versions of your query by selecting which hints you want to try.
(2). Second, TunerFish retrieves Oracle's Cost Based Optimizer's estimated cost for each generated version.
(3). Third, TunerFish executes each version, to gather execution time statistics.
Extra For Experts - Some miscellaneous features that may not be obvious:
o In the 'File, Preferences' dialog, you can choose to eliminate Versions that have the same 'explain plan' (since they would be executed the same by Oracle).
o You can right-click in the 'SQL Editor' window and use the context menu to format your SQL statement.
o Very limited 'UnDo' is available via the 'Edit' menu.
o The versions in the grid can be sorted by clicking on the column header. Also, Versions can be renamed by double-clicking on their name. You can create a new version based on an existing version via the 'Version, Clone' menu item.
Disclaimer - TunerFish is free, and may be freely distributed as long as (a) you don't modify it, (b) you don't charge for it, and (c) you don't claim it as your own work.
Users of TunerFish must accept this disclaimer of warranty: TunerFish is supplied "as is". The author disclaims all warranties, expressed or implied, including, without limitation, the warranties of merchantability and of fitness for any purpose. The author assumes no liability for damages, direct or consequential, which may result from the use of TunerFish.