• Spaghetti code is Good code

    Spaghetti code is Good code

    I saw this post on Bluesky over the weekend. Now before you panic, this blog post isn’t going to have any political discussion about DOGE, Trump, Republicans, Democrats and the like. I’m just going to focus on the topic of the challenges of modernising any system which has been in place for decades. And the Read more

  • More Features just by Patching

    More Features just by Patching

    As colleagues Mike Dietrich and Daniel Overby Hansen have always stated – It’s important to keep your database patched and up to date. For many of us, the first thing that springs to mind when you read or hear statements like that are the “usual suspects” – patching and upgrading ensures that security holes are Read more

  • Global Temporary Tables and Dynamic Sampling

    Global Temporary Tables and Dynamic Sampling

    A common practice when using global temporary tables (GTT) is to simply rely on dynamic sampling to give the cost optimizer the relevant statistics when it comes to using a populated GTT in subsequent queries. Here’s a simple example of that in action. I’ll put 50 rows into a GTT and the subsequent query uses Read more

  • Vectors in Oracle Database 23ai FREE

    Vectors in Oracle Database 23ai FREE

    This is a long overdue post which arose initially from a discussion with Philipp Hartenfeller way back in August 2024. I made a note to blog about it, headed off to CloudWorld and of course promptly forgot about it 😃 When you are tinkering with the cool new vector features in 23ai FREE, you might Read more

  • International Women’s Day

    International Women’s Day

    Given the history of the Information Technology industry, I’m sure it is unsurprising for you when I say that the majority of people I have worked with have been male. However… when I look back with a slightly more detailed focus: My computer science teacher at high school…. a woman The person that lectured my Read more

  • Sequences in PL/SQL

    Sequences in PL/SQL

    Time to put another myth to bed. Way back in Oracle 9 (I think) when referencing a sequence from PL/SQL the requirement of getting a sequence value using a SELECT statement was lifted. Thus instead of coding SELECT MYSEQUENCE.NEXTVAL INTO MYVARIABLE FROM DUAL you could simply write MYVARIABLE := MYSEQUENCE.NEXTVAL ; However, it is important Read more

  • The APEX data dictionary

    The APEX data dictionary

    Anyone who has used APEX will know that in addition to the Builder UI, there is a comprehensive data dictionary for APEX-prefixed views to expose all the metadata associated with APEX applications and workspaces.   SQL> select view_name 2 from dba_views 3 where owner = ‘APEX_240200’ 4 and view_name like ‘APEX%’ 5 order by 1; Read more

  • Understanding REUSE STORAGE

    Understanding REUSE STORAGE

    I had a question from a customer recently about TRUNCATE versus TRUNCATE REUSE STORAGE. They pointed out that after a TRUNCATE REUSE STORAGE, the number of blocks for table dropped to zero which they were not expecting. Lets explain why zero blocks is expected, and does not imply that we ignored the REUSE STORAGE command. Read more

  • Creating rows from nothing – time for something better

    Creating rows from nothing – time for something better

    Nine(!) years ago I published one of the first videos on my YouTube channel about quickly generating rows from the database and not much has really changed since then when it comes generating rows. Most of us are now familiar with the CONNECT FROM trick using DUAL. But if like me, you are sick and Read more

  • JSON_OBJECT_T and the PGA

    JSON_OBJECT_T and the PGA

    Just a quick heads up for anyone using JSON_OBJECT_T in PL/SQL that was brought to my attention by an AskTOM member It looks like repeated use of JSON_OBJECT_T in an associative array can consume PGA until such point as you’ll hit errors. Here’s an example of a associative array of VARCHAR2 growing a large size Read more

  • More zero outage goodies

    More zero outage goodies

    Yesterday I published a video about how to un-partition a table without any outage using a two step process, because no native one-step command existed to do it. But (spoiler alert) I also posted in that same video, that a one-step command did in fact exist, but it was not documented yet. You’ll be pleased Read more

  • JDBC and the FetchSize – Part 2

    JDBC and the FetchSize – Part 2

    If you’re a user or follower of Hibernate, you probably saw Gavin King’s excellent post on the JDBC fetch size issue tackled from a Hibernate perspective. I posted some performance figures  on my original post, which demonstrated how you can dramatically improve the consumption rate of rows from the database with an appropriate fetch size. Read more