Cardinality and Pipelined Functions - Ugly!

Posted on Monday, August 4, 2008 at 10:27AM by Registered CommenterKarl Reitschuster in , | CommentsPost a Comment | EmailEmail

Dear reader,

pipelined functions are very comfortable to process incoming data and to return it as structured result set. For this reason they are frequently used in SQL; But be carefully if you join result sets from pipelined function with other tables.

The Oracle optimizer usually uses gathered table statistics to calculate the cardinality of a join operation; For a result set  originated in a pipeline function it has no statistics to evaluate and hence could try to get another path to the data. 

Following SQL retrieves internal employee GUID's from external Id's passed as comma delimited string.

Click to read more ...

When enough is enough? - how to estimate I/O Performance

Posted on Thursday, July 31, 2008 at 03:33PM by Registered CommenterKarl Reitschuster in | CommentsPost a Comment | EmailEmail

Hello reader,

Last week we faced performance problems also shown on the Oracle 10g Db-Console as 'SQL found consuming ...'; The users of the application mourned everything is going slow. Hm ...

The strange thing was that the same kind of SQL run without problems before. I started to monitor I/O with iostat on the Sun  Solaris Database Server. The Storage was based on SAN. The I/O rates were from 5m/s - 10m/s. The devices were about 95%-100% busy and this with an I/O rate with only about 10M/second? Usually 100m/s and more were possible.

Click to read more ...

Oracle 11g : A deeper granularity level to SQL performance metrics

Posted on Wednesday, April 2, 2008 at 07:35AM by Registered CommenterKarl Reitschuster in | CommentsPost a Comment | References3 References | EmailEmail

With Oracle 10g Oracle introduced a new key column spread over the dynamic performance views - the SQL_ID; The SQL_ID identified a SQL statement. The SQL_ID was needed to persist all performance metrics of a specific SQL statement in a repository. With Oracle 11g the granularity even gets deeper. With the new columns SQL_EXEC_ID and SQL_EXEX_START performance data could be collected of a specific execution of a specific SQL statement! What a quantum leap in monitoring!

Click to read more ...

Database Control 11g : Monitoring Parallel Execution

Posted on Tuesday, April 1, 2008 at 12:49PM by Registered CommenterKarl Reitschuster in | CommentsPost a Comment | EmailEmail

A really new step in real-time Oracle Performance Monitoring was the Database Control introduced with Oracle RDBMS 10.1; With Oracle 11.1 the concept was improved and more detailed metrics could be viewed via Database Control. The Performance page has now 4 Tabs : * Throughput * I/O * Parallel Execution * Services

Click to read more ...

IT starts with the data type

Posted on Thursday, March 6, 2008 at 06:39PM by Registered CommenterKarl Reitschuster in , | Comments2 Comments | References2 References | EmailEmail

Intro

Examples
* Mathematics with Account numbers
* Timestamp as order citeria, unique history sequence
* The ultimate is_number - function

Impact of choosing the wrong datatype

* Optimizer miss-assumptions
* Breakdown of data interfaces
* Loss of service

Conclusion

Click to read more ...

From Oracle space to Tech space

Posted on Sunday, February 24, 2008 at 04:22PM by Registered CommenterKarl Reitschuster in | CommentsPost a Comment | EmailEmail

My Blog changes now from Karl's Oracle Space to Karl's Tech Space.

In future i want to blog about High Performance Computing (for Dummies) ;-). A lot of CPU power is now available in the living room. We are able to participate into the development of next generation CPU design. Thus in future i blog about Oracle and Non-Oracle stuff.

Karl Reitschuster

 

IBM Informix Dynamic Server to Deliver Support for Mac OS X

Posted on Thursday, February 14, 2008 at 09:57AM by Registered CommenterKarl Reitschuster in , | CommentsPost a Comment | References5 References | EmailEmail

Informix has announced to add support for Mac OS X 10.2 Leopard; That's interesting because Oracle already did with the Oracle Server 10.1 release - but then stopped their commitment for the platform for unknown reason. But if Informix with a much lower number of installations is able to support a Mac OS X release why isn't Oracle?

The number of MAC OS X user is steadily growing - specially when Apple moved from Power to Intel Architecture; Interesting hardware (64bit) is available too : the Mac Pro and the Mac Xserve are capable to run Oracle effectively.

So - Oracle - why do you hesitate?

Karl Reitschuster 

 

Stream your data!

Posted on Tuesday, January 29, 2008 at 07:39AM by Registered CommenterKarl Reitschuster in , , | CommentsPost a Comment | EmailEmail

Supporting a CRM System with Interface data all Interface jobs log their activity into the Applications EVENTLOG table. It's interesting to know when the interface was started dependent on file delivery of other systems, how long it needs to process the incoming data and how many errors/warnings occurred during processing. The first blueprint to accomplish this I wrote the following SQL. It worked fine with about 50,000 rows. In production - we extended the maximum life cycle of eventlog rows to 90 days the SQL now needed about 280 seconds. The EVENTLOG table in production had about 450,000 rows.

Click to read more ...

Retrieving any Resultset from a weak REF cursor

Posted on Wednesday, December 19, 2007 at 08:12AM by Registered CommenterKarl Reitschuster in | CommentsPost a Comment | References2 References | EmailEmail

Hi reader, got a call by a colleague how to display a result set of any weak REF cursor via PL/SQL? What works great via OCI driven client drivers is hard to do with PL/SQL. If you process a REF Cursor in your program returned by a PL/SQL-Method you can access easily the result set of that cursor variable. Not so in PL/SQL. Too much cursor meta information is missing.

Click to read more ...

Newton, Einstein or the Limitations of Tuning

Posted on Tuesday, December 11, 2007 at 08:07AM by Registered CommenterKarl Reitschuster in | Comments4 Comments | EmailEmail

As you know some laws which Newton detected for example of the acceleration only were valid if the velocity was low. Einstein very well known for his Relativitätstheorie which was not a complete new model but a unification of some existing theories and models described the dependency from the natural Constant the speed of light for all moving objects.

So if you tune your SQL and the retrieve of data gets faster and faster you start to need a lot of energy - more then all power plants together to increase the speed of data retrieve ;-) So there are natural limits to SQL Tuning - isn't it?

cheers ;-)
Karl Reitschuster