Submitted by dmann on Tue, 11/22/2011 - 17:34
Had an odd one come across my desk today. I have seen Bind variables used in the WHERE clause thousands of times. I have seen Binds in the SELECT lists hundreds of times. I have seen it used in the HAVING clause zero times... until today when it turns out it was causing a performance issue.
With the Bind variable in the HAVING clause we were seeing an execution plan with lots of Full Table Scans and 12+ second runtimes. When editing the query and using a literal in the HAVING clause we saw 100ms or less performance and very efficient Execution Plans.
Submitted by dmann on Mon, 11/14/2011 - 15:23
If you are using SQL Developer 2.x you can reduce your startup time by about 20% by disabling any unneeded extensions. I was able to reduce my startup time from 11 seconds to 8 seconds by turning off all extensions (none of which I really needed anyway).
Submitted by dmann on Mon, 11/14/2011 - 13:11
Seems like Golden Gate is following me around. I used their tools in 2005 to replicate from OLTP databases to a central reporting database for my previous employer. Now that Oracle bought them the buzz in my current company is to leave Oracle's multiple and complicated incarnations of replication technologies in the dust and try moving forward with GG. Fine with me, I like the product, not a fan of the licensing as I think Oracle has been on the lagging side of vendor supplied replication tools, but hey what do I know, I just arrange zeroes and ones for a living.
Submitted by dmann on Fri, 10/28/2011 - 00:11
I'm starting work on some DB tuning utilities written in Java. I am running the utilities on my local machine against remote servers and I needed a way to hold some data locally. The volume of data I plan on storing is more than I would feel comfortable keeping in local properties or XML files and I didn't want to deal with setting up an Oracle XE instance just to service my lightweight utilities so I checked into a bunch of embedded databases. Embedded databases are databases that I can wrap into my application.
Submitted by dmann on Fri, 10/14/2011 - 17:18
I started a new project for a utility I started writing. It has some basic functionality now but will probably increase in utility int he future.
It is a Perl script that extracts the SQL statements from an Oracle 10046 trace file. This is useful if you need to re-run SQL that was captured during a trace. It also helps reduce the amount of junk you have to slog through if you are interested in
trc2sql.pl - Extract SQL Statements From Oracle 10046 Trace File
Submitted by dmann on Thu, 10/13/2011 - 13:35
When working on a SQL Tuning issue I often kick off a SQL Tuning Advisor job on the SQL while I gather info about statistics and other things I like to check when tuning. After I get an idea of where performance might be suffering I use the SQL Tuning Advisor results for a second opion.
Unfortunately more often than not the SQL Tuning Advisor reports it can dramatically improve the performance of a SQL Statement by using a SQL Profile to force a different plan.
Submitted by dmann on Tue, 10/11/2011 - 23:33
I have been trying to chase down the same SQL being submitted against the same 10.2.0.4 Solaris database from different query tools used in our organization. I have been striking out when trying to match up with SQL IDs.
I connected with 5 different tools (including SQLPLUS on 2 platforms) and submitted the following 4 lines of SQL:
Submitted by dmann on Fri, 10/07/2011 - 11:45
I want to get the information about when a table is queried in oracle. Is there any log in oracle which shows the queries. I was looking around v$sqlarea and v$sqltext but, the system admin does not allow me to reach those tables. - Dursan @ Stack Overflow
Submitted by dmann on Mon, 10/03/2011 - 14:53
Ever had a customer asking about the growth of a table? Or suspect an execution plan change might be because of an influx of data into a table?
Well you are in luck (maybe!).
Oracle 10g and 11g have a months worth of historical statistics stored by default. Before stats are gathered for a table their current values are written off into SYS.WRI$OPTSTAT_TAB_HISTORY table.
Submitted by dmann on Tue, 09/27/2011 - 12:54
"The TPC-DS benchmark models the decision support system of a retail product supplier, including queries and data maintenance. Although the underlying business model of TPC-DS is a retail product supplier, the database schema, data population, queries, data maintenance model and implementation rules have been designed to be broadly representative of modern decision support systems."