Global temporary tables (or private temporary tables, if you use Oracle 18c) are a practical feature to be used for SQL queries with multiple steps, for example complex reports in a data warehouse. If you want to use them, some details must be considered.
Complex SQL statements are hard to understand – not only for us, but for the query optimizer, too. Sometimes, it is a good idea to write a simpler SQL query to do the same work. Here a nice story about a performance improvement by rewriting the SQL statement.
Direct-Path INSERT is a very efficient way to load data into data warehouse tables. The load performance can even be improved with NOLOGGING on the target table. In Oracle 12c Release 2, this is even possible for Oracle Data Guard environments. But is it a good idea?
This year, I had the opportunity to present three sessions at the DOAG conference in Nuremberg – one on each conference day. Here a short summary of the sessions and links to the downloads.
With Oracle Database In-Memory, it is possible to populate individual columns of a table into the In-Memory Column Store. This is very useful for large tables, if only the frequently used columns should be populated to safe memory. The SQL syntax to define this seems to be straight-forward, but does not always work as expected.
Analytic Views, in combination with Attribute Dimensions and Hierarchies, are very useful for ad-hoc queries in a Star Schema. But how about the performance of this Oracle 12.2 feature? I wanted to know it and analyzed the execution plans of some simple queries.
In summer time, the nights are very short. For some Data Warehouses, this is the case all year round, but not because of late sunset and early sunrise. The night is not long enough to finish all the ETL jobs. Long-running load jobs that run for several hours are not a seldom situation. Here some tips how this can be avoided.