Chunking Tables 1: Genesis

When I helped answer a question from Jonathan Lewis on OTN, little did I know that I would become a participant in a presentation and white paper by Bryn Llewellyn on "Transforming one table to another: SQL or PL/SQL?" Jonathan wanted help in finishing up an efficient SQL solution for dividing a table into 12 "equal chunks", each "chunk" being a rowid range that covers the same number of blocks (give or take 1). It turned (more...)

Multisessioning with Python

I'll admit that I pretty constantly have at least one window either open into SQL*Plus or at the command line ready to run a deployment script through it. But there's time when it is worth taking a step beyond.

One problem with the architecture of most SQL clients is they connect to a database, send off a SQL statement and do nothing until the database responds back with an answer. That's a great model when (more...)

Zur Semantik der Statistik “table scans (long tables)”

Der aktuelle Beitrag im Scratchpad von Jonathan Lewis hat ein wenig an seine alten Quiz-Night Artikel angeschlossen und mir eine Erwähnung eingetragen:
Martin Preiss (see comments) has been working hard to investigate this, and managed to produce a couple more variations in statistics for 'the same' problem.
Ganz so hart war die Arbeit nicht, aber überraschend war das Ergebnis für mich allemal. Interessant ist zunächst, dass sich zwar Angaben für die Statistiken "table scans (short (more...)

Erforderliche Leseoperationen bei der Anlage eines Primary Keys

Ein recht überraschendes Verhalten bei der Constraint-Aktivierung spricht Jonathan Lewis in einem aktuellen Artikel an: wenn man einen mehrspaltigen Primary Key auf einer Tabelle anlegt, auf der zuvor für die betroffenen Spalten noch keine NOT NULL Constraints existierten, dann muss Oracle für jede einzelne Spalte einen Full Table Scan durchführen, um zu prüfen, dass die Spalten tatsächlich keine NULL-Werte enthalten. Anschließend ist ein weiterer Full Table Scan erforderlich, um die Daten für die Index-Anlage zu (more...)

Are You Certifiable? 1st #DataVault 2.0 Bootcamp of the Year

A quick note for all the folks out there that have been contemplating diving deep into Dan Linstedt’s Data Vault 2.0 System of Business Intelligence. Dan will be teaching a Data Vault 2.o Bootcamp in February! You can sign up here. You’ve read the articles, read the blog posts (mine included), attended the talks at […]

Extended Statistics und Join Cardinality

Vor ein paar Wochen hat Jonathan Lewis einen recht wichtigen Hinweis für den Einsatz von Extended Statistics (also Statistiken für eine Spaltengruppe, die vorhandene Korrelationseffekte bestimmbar machen - und intern über eine virtuelle Spalte abgebildet sind) zur Korrektur von abwegigen Schätzungen bei (equality) Joins über mehrere Spalten geliefert: um hier brauchbare Kardinalitäten zu bekommen, muss man die Extended Statistics auf beiden Seiten des Joins anlegen. Legt man sie nur auf einer Seite an, so ändert (more...)

Joining Temporal Tables 4: ranges

If you have temporal tables with date ranges, and you are sure those date ranges cannot overlap, then you can join them using the technique in my previous post - with a few important changes!

Indizes und Inittrans

Zur Ablenkung hat Richard Foote zuletzt einen Artikel abgeschlossen, in dem er sich mit der Rolle des inittrans-Attributs für Tabellen und Indizes auseinandersetzt. Grundsätzlich bestimmt dieses Attribut, wie viele Transaktions-Slots initial in der ITL (= Interested Transaction List) eines Tabellen-, Index- oder Cluster-Blocks bereitgestellt werden - und jede Operation, die eine Änderung an einem Block durchführen will, muss sich in einen solchen Slot eintragen. Für Tabellen-Blocks kann das Fehlen eines solchen Slots zu hängenden Transaktionen (more...)

2015 Blog Review

Time for my look back on 2015 and what I might aim for in the coming orbit around the sun. The highlighted word is dedicated to the #flatearth people I've been conversing with on Twitter recently. Wow.

Like many people, part of the reason for doing these sorts of things really what every person should do semi-regularly -> write down your aspirations. I remember being taught goal setting from a young age and I think (more...)

Do Not Follow…Leave a Trail!

Do not follow where the path may lead… Go instead where the is no path and leave a trail — Ralph Waldo Emerson Good advice in general. I am very happy to be working for Snowflake Computing (@snowflakedb) and our CEO Bob Muglia (@bob_muglia) where we are forging the path for Elastic Data Warehousing (#ElasticDW) […]

Löschung von Spalten

Mir ist durchaus klar, dass sich ein großer Teil meiner Beiträge hier auf die (verkürzende und manchmal sinnentstellende) Paraphrase der Artikel von Jonathan Lewis beschränkt. Aber an einführenden Sätzen wie den folgenden aus dem Artikel Dropping Columns, den der Herr Lewis gerade bei AllThingsOracle veröffentlicht hat, komme ich einfach nicht vorbei:
One of the bugs that came up on 9th Jan was described as: “Bug 18700681 : DROP COLUMNS USING ALTER TABLE VERY SLOW”. (more...)

Better Data Modeling: Customizing Oracle Sql Developer Data Modeler (#SQLDevModeler) to Support Custom Data Types

On a recent customer call (for Snowflake), the data architects were asking if Snowflake provided a data model diagramming tool to design and generate data warehouse tables or to view a data model of an existing Snowflake data warehouse. Or if we knew of any that would work with Snowflake. Well, we do not provide one of […]

Goodbye Spaceboy

"Sometimes I feel
The need to move on
So I pack a bag
And move on"

Can't believe Bowie has taken that final train.

David Bowie's music has been part of my life pretty much since I started listening to pop music seriously. Lodger was the first Bowie album I listened to all the way through. It's probably his most under-appreciated album. It's funny to think that back then in 1979 Bowie was dismissed as (more...)

Snowflake SQL: Making Schema-on-Read a Reality (Part 2)

n this post I will show you how to access an array of data within the JSON document and how we handle nested arrays. Then finally I will give you an example of doing an aggregation using data in the JSON structure and how simple it is to filter your query results by referring to values within an array.

#DataWarrior 2015 in review

Happy New Year again everybody! Shoutout to Jeff Smith for again being the #1 real person that I actually know who referred people to my blog via his blog. If you don’t already, please add ThatJeffsSmith to your reading list. The stats helper monkeys prepared a 2015 annual report for me. Here’s an excerpt: Madison […]

How an Oracle error can send you the wrong way…

ANSI Join Syntax vs. Oracle Join Syntax

Neben einem aktuellen Beispiel liefert Jonathan Lewis in seinem Blog eine sehr schöne Erklärung für die Tatsache, dass die ANSI Join Syntax gegenüber der Oracle Join Syntax noch immer im Nachteil ist:
In almost all cases the SQL you write using the ANSI standard syntax is tranformed into a statement using Oracle’s original syntax before being optimised – and there are still odd cases where the translation is not ideal. This can result in poor (more...)

Outer Join Beschränkungen in 12c

Einige interessante Beobachtungen zum Thema "Outer Joins in traditioneller Syntax  (aka Oracle-Join-Syntax) " - also mit Verwendung des + Operators statt des OUTER JOIN Schlüsselworts (aka ANSI-Join-Syntax) hat Philipp Salvisberg vor kurzem in seinem Blog zusammengestellt. Demnach sind die relevanten inhaltlichen Einschränkungen, die den + Operator in älteren Releases betrafen, in alle verschwunden: insbesondere "ORA-01417: a table may be outer joined to at most one other table" und "ORA-01719: outer join operator (more...)

Happy 2016!

Filed under: Uncategorized Tagged: Happy New Year

Apex Developer Toolbar Options

One of the things that used to bug me about the Apex developer toolbar was that it sometimes obscured the content I was trying to test at the bottom of the page; you could turn it off but then next thing you want to access it you have to jump through the hoops to turn it back on again.

I just noticed it now has some new display options which solves this problem perfectly: