10. 05. 2020.

Customer experience on Oracle Db – One metric to rule them all

Over the years I’ve found that almost every enterprise monitoring software I’ve been working with so far (and there are a few dozen of them), put extensive load on targets under the monitoring. While one monitoring tool brings extensive hard parsing on its targets, another one calculates free space for each tablespace in a very […]

18. 03. 2020.

String aggregation – part II

Last time I’ve suggested two ways of how to perform string concatenation. Unfortunately, both approaches have serious drawbacks that you might experience. In this post I’ll explain one approach which is not Oracle version dependent, which corrects both shortcomings of previously described methods: size of concatenated string speed of data processing Part I you can […]

17. 03. 2020.

String aggregation – part I

Very often you’ll find delimited text to be more suitable format option instead of splitting text in many rows. Typical use cases for having delimited text includes preparation of data for further analysis, reporting, importing data into the spreadsheet etc. To demonstrate the concept, I’ll use my demo table TEST with 10 million rows. And […]

21. 02. 2020.

External C procedures – how to setup and performance boost you can expect

In this post I’ll explain what you need to do to setup external C procedure call with Oracle 18c. I’ll also show for a CPU intensive task, what performance boost you might expect. For those of you who remember how difficult it was to configure LISTENER and TNSNAMES to work with C external procedures, will […]

20. 01. 2020.

Configuring environment for debugging PL/SQL Stored procedures

Main objective of this post is to list some of the typical issues I’ve found when debugging PL/SQL stored procedures, functions and packages. There are many ways of how you can debug server side code, and here is the list of the most common ways I’ve found in practice: dbms_debug_jdwp dbms_debug dbms_output database tables used […]

15. 01. 2020.

Primary Key and duplicate rows – fast troubleshooting

Recently I had a case of duplicate rows in a table with Primary Key enabled. More common case is to catch CBO (Cost Based Optimizer) to return a wrong results, mainly due to sophisticated nature of CBO engine (CBO is the most complex part of the Oracle database), the complex SQLs you issue, and the […]

14. 01. 2020.

Oracle Multiversion Read Consistency and its impact on ETL

Imagine you need to create an ETL workflow that uses the Oracle database as one of its sources or even more common situation where you need to synchronize local table with table from the remote Oracle database via dblink. The most common scenario is to apply the following steps: I have a local table for […]

13. 01. 2020.

Descending Index type – performance and limitations

The main topic of this article is the DESC index type, which is often mixed-up with the Btree index type because of the great similarity they share when looking at the index creation syntax. “Raison d’etre” for having DESC index type is to avoid expensive sorting when you are sure you’ll always query and sort […]

10. 01. 2020.

Case for using unusable index

I work with Oracle more than I can remember, but every day I find something new. This time I’m asked to drop one index on the production system, which is the simplest task you can get, right? I new there had to be a problem with that, otherwise someone else would do it. In any […]

07. 01. 2020.

Oracle database links – performance impact

In this post I’m going to explain the most important drawbacks when using db links technology for purposes for which it is not design for. To be more precise, the case in which db links are used to massively exchange data between many separate databases will be explained. In the previous post you can find […]