Quickstart

  1. Upload one or more baseline files — SQL/PL-SQL source, a DBMS_XPLAN execution plan export, an AWR/TKPROF report, or an Oracle dump — into the baseline panel.
  2. Upload the matching current files from the run you're investigating into the current panel. Multiple files of the same type are paired by filename, then by position.
  3. Click Analyze. OraTune parses both sides, computes the diff and plan comparison, and runs the findings engine — plus your configured AI provider, if one is set.
  4. Review the four result tabs — Code Diff, Execution Plans, Findings, and Recommendations. See Reading your results for what each one shows.
  5. Export the report from File > Export Report. It saves a single self-contained HTML file with the findings, plan comparison, diff statistics, and recommendations.

Supported file types

CategoryExtensionsWhat OraTune reads
SQL and PL/SQL source.sql, .pls, .pks, .pkb, .prc, .fnc, .trgStatement type, referenced object names, hints (/*+ ... */), and index names referenced in those hints; diffed line-by-line and structurally between baseline and current.
Performance and diagnostic reports.txt, .lst, .html, .htm, .xmlAWR text or HTML reports and TKPROF listings — DB time, elapsed time, wait events, and top SQL. .xml files are DBMS_XPLAN execution-plan exports.
Data Pump dump.dmp (binary magic bytes)OraTune extracts readable strings and structured fields — schema, table, and index names, the source Oracle version, character set, and embedded SQL fragments. It does not import or restore the dump.
ADR trace / diagnostic dump.dmp (rename a .trc file before uploading; detected by SESSION ID, ORA-, or DUMP FILE markers)ORA- errors, wait events, elapsed time, and embedded execution plans extracted from the trace text.
SQL*Plus spool.dmp (text fallback when no other format matches)SQL statements, SET TIMING elapsed values, row counts, and AUTOTRACE statistics extracted from the spooled session text.
SQLT / SQLTXPLAIN.dmp (detected by SQLTXPLAIN or TOOL: SQLT markers)Optimizer parameters, table and index statistics, clustering factors, histograms, and bind variables extracted from the SQLT output.

Reading your results

When analysis finishes, the results land in four tabs, each covering a different facet of the comparison.

OraTune Execution Plans tab: baseline cost 42 against current cost 8910, with a full table scan flagged in the current plan.
The Execution Plans tab — a full-scan regression flagged, not buried.

Severity levels

Every finding carries one severity. The app also colour-codes them; the label is the source of truth.

SeverityMeaning
CRITICALSevere regression; act immediately.
HIGHSignificant regression; address promptly.
MEDIUMModerate issue; investigate and plan a fix.
LOWMinor issue; low urgency.
INFOInformational; no action needed.

Exported report

File > Export Report writes a single self-contained HTML file — all findings, the plan-comparison summary, code-diff statistics, and recommendations — with no external CSS or JavaScript. It is portable enough to attach to a change ticket.

Batch analysis

Batch analysis compares many file pairs in one run. Switch to the Batch tab, set a baseline folder and a current folder, and click Run Batch.

OraTune Batch Analysis view: a table of matched file pairs, each with its highest-severity finding.
Batch results — one row per matched pair.

Live database mode

Live DB mode connects OraTune to a running instance for real-time diagnostics. Click Connect in the Live DB tab and enter connection details.

Least-privilege connection

Grant only what the tabs you use require.

FeatureRequired privileges
Top SQL (AWR)SELECT on DBA_HIST_SQLSTAT, DBA_HIST_SNAPSHOT, DBA_HIST_SQLTEXT
Top SQL (V$SQL fallback)SELECT on V$SQL
AWR TrendsSELECT on DBA_HIST_SQLSTAT, DBA_HIST_SNAPSHOT, V$DATABASE
Explain PlanCREATE ANY TABLE or access to PLAN_TABLE; EXECUTE on DBMS_XPLAN
Index AdvisorSELECT on DBA_INDEXES, DBA_INDEX_USAGE, DBA_HIST_SQL_PLAN, DBA_HIST_SQLSTAT, DBA_TABLES, V$DATABASE
Stats HealthSELECT on DBA_TAB_STATISTICS, DBA_TABLES, DBA_TAB_PARTITIONS, SYS.AUX_STATS$
Plan BaselinesSELECT on DBA_SQL_PLAN_BASELINES; EXECUTE on DBMS_SPM
SchedulerSELECT on DBA_SCHEDULER_JOBS, DBA_SCHEDULER_JOB_RUN_DETAILS, DBA_SCHEDULER_PROGRAMS, DBA_SCHEDULER_SCHEDULES; EXECUTE on DBMS_SCHEDULER

Every tab needs only SELECT on the views it queries. Plan Baselines and Scheduler additionally require EXECUTE on DBMS_SPM or DBMS_SCHEDULER — those grants let OraTune alter, drop, or run jobs from inside the app, so restrict them to a connection you trust with that control.

Estimated vs actual plans

The Explain Plan tab runs one of two ways. Estimated runs EXPLAIN PLAN and reads it back with DBMS_XPLAN.DISPLAY — the statement is not executed. Actual runs the statement with a gather_plan_statistics hint and reads real row counts with DISPLAY_CURSOR. Because Actual mode executes the statement, do not run it against a query that performs DML. Bind variables (:name) are set to NULL so the statement plans without values.

Stats Health checks

The Stats Health tab runs five checks against optimizer statistics — stale, missing (NUM_ROWS null), locked, un-analysed partitions, and system statistics. Each result carries a severity and can be filtered by schema.

For what every Live DB tab does, see Features.

OraTune Explain Plan view: an execution plan tree with cost, rows, and bytes per operation.
The Explain Plan tab, in estimated mode.

ORA- error reference

OraTune bundles an offline reference for 225+ ORA- error codes — no internet connection needed.

AI recommendations

The Recommendations tab works with no configuration: a deterministic offline rules engine ships findings with Oracle-specific remediation on its own.

Tips

Troubleshooting

SymptomLikely causeResolution
ORA-01017 on connectWrong username or passwordVerify credentials; check the Oracle authentication mode.
ORA-12541 on connectListener not running, or wrong host/portCheck the TNS listener; verify host, port, and service name.
Explain Plan gives ORA-00905Statement is not DMLOnly SELECT, INSERT, UPDATE, DELETE, and MERGE work with EXPLAIN PLAN.
Explain Plan (Actual) gives ORA-01008Non-standard bind syntaxOraTune replaces :binds with NULL automatically; check for unusual bind syntax.
Top SQL shows 0 rows (AWR path)No SELECT on DBA_HIST_* views, or no AWR data in rangeGrant the DBA_HIST privileges or widen the time range; the V$SQL fallback is used automatically.
Stats Health shows all criticalNo SELECT on DBA_TAB_STATISTICSGRANT SELECT ON DBA_TAB_STATISTICS TO <user>
Plan Baselines emptyNo baselines in DBA_SQL_PLAN_BASELINES, or no accessCheck OPTIMIZER_USE_SQL_PLAN_BASELINES; verify the SELECT privilege.
Recommendations show offline contentNo API key configured, or the provider call failedAdd a key in Tools > Settings; check the error detail in the recommendation panel.
Application crashes on startupPyQt6-Charts DLL path issue on WindowsEnsure PyQt6-Charts is installed; OraTune adds the Qt bin directory to the DLL search path at launch.

Still stuck? Contact us.

FAQ

Does my SQL leave my machine?

No, not by default. OraTune's offline rules engine runs entirely on your machine. If you enable an AI provider (Claude, ChatGPT, Azure OpenAI, or GitHub Copilot) in Settings, a summary of the analysis — findings, plan-comparison metrics, SQL diff statistics, and relevant excerpts from AWR/TKPROF/dump data — is sent to that provider's API to generate recommendations.

Which Oracle versions are supported?

OraTune connects via python-oracledb, defaulting to thin mode (no Oracle Client required). If Oracle Client libraries are installed, OraTune switches to thick mode automatically, which respects server-side sqlnet.ora settings and extends support to older Oracle versions that thin mode does not cover.

Data Pump dumps are binary — what can OraTune read?

OraTune detects a Data Pump file by its binary magic bytes and extracts readable strings and structured fields from it — schema, table, and index names, the source Oracle version, character set, and embedded SQL fragments — rather than importing the dump. For readable DDL/SQL instead of a binary extract, generate a SQL file from the dump with Oracle's own impdp ... SQLFILE= option and upload that file to OraTune as a SQL source file.

Where are my API keys stored?

In Windows Credential Manager, under the service name OraTune, one entry per provider. Keys are never written to the settings file; if no secure credential store is available on the machine, OraTune leaves the key unset rather than falling back to a plaintext file.