• New podcast episode! Testing and breaking things

    New podcast episode! Testing and breaking things

    I’m a developer. I wrote code, compile code, and ….. then I throw it over the fence to the testers and it is not my problem right? No Or with the modern trend of automated testing, it is often easy to fall into the trap of relying solely on automation, especially when emotionally as developers… Read more

  • We killed sequence contention!

    We killed sequence contention!

    A few months back I gave a talk on the importance of good physical design if you need to meet extreme levels of performance in your Oracle database. Topics included index selection, block contention, partitioning and also the issue of sequence contention. Sequence caching By default sequences are cached in the Oracle database in order… Read more

  • Blockchain tables … the usage model

    Blockchain tables … the usage model

    When you hear the word “blockchain” we typically think of the properties associated with tamper-proof information, with terminology such as “immutability”, “cryptographic digests”, “cryptographic signatures” and so forth. Thus when it comes to blockchain tables in the database, it follows that we need a mechanism to store that additional metadata with the rows that are… Read more

  • Time zones, blockchain and stopping hackers

    Time zones, blockchain and stopping hackers

    I posted a few months ago about the availability of blockchain tables in 19c, and a fundamental mantra with anything associated with blockchain is the guarantee that data cannot be tampered with. Thus when blockchain tables first became available, the questions were naturally asked were along the lines of: “Can a DBA or SYSDBA mess… Read more

  • UTL_CALL_STACK lends a helping hand to DBMS_UTILITY

    UTL_CALL_STACK lends a helping hand to DBMS_UTILITY

    Oracle dinosaurs whoops I mean “experienced professionals” know that for decades we have used the DBMS_UTILITY package to obtain the current call stack within a PL/SQL program being executed. Here is a simple example showing that when we are deeply nested in PL/SQL package territory, we can get the current call stack. SQL> create or… Read more

  • Drop all baselines

    Drop all baselines

    Just a quick tip today on doing a “reset” on your optimizer environment. SQL Plan Baselines are an awesome tool to ensure plan stability in your database, and generally, when you are upgrading from one release to the next, they are the perfect tool to make sure that you don’t get any performance regressions because… Read more

  • 19.11 Database Release Update

    19.11 Database Release Update

    I tweeted about a particular bug fix that interests me for 19.11, namely a critical fix for Flashback Data Archive in high volume transactional systems. Unfortunately this bug is not listed in the official Bugs Fixed section of the release notes, but if you see your shared pool being polluted with lots of SQL statements… Read more

  • Keeping OPatch updated with a simple SQL query

    Keeping OPatch updated with a simple SQL query

    I tweeted out this pic yesterday which suggested that by running a SQL query, I could magically keep my OPatch version up to date. This is indeed true, but in reality, I wanted to post this as another example of how you can leverage the features of external tables to perform non-database style operations from… Read more

  • New Podcast Episode! Lets talk about SQL Tuning

    New Podcast Episode! Lets talk about SQL Tuning

    There is a million books, blogs, presentations etc about SQL Tuning. But it’s time for a different perspective. SQL Tuning is probably the biggest topic in database technology, and it is little surprise why. There is nothing sexier than diving into the heart of the application code, making a few changes and then basking in… Read more

  • CURSOR_SHARING and ORDER BY

    CURSOR_SHARING and ORDER BY

    AskTom regular Rajeshwaran Jeyabal posted an interesting comment a few days ago about the use of CURSOR_SHARING when it comes to the ORDER BY clause. He pointed out the following snippet from the Oracle documentation: Note: If a statement uses an ORDER BY clause, then the database does not perform literal replacement in the clause… Read more

  • More analysis, less assassination

    More analysis, less assassination

    Your pre-reading warning: I’m quoting some tweets in this post, tweets that definitely contain some NSFW language. The success of tech often relies on criticism. Many a proposed tech solution that would have wreaked havoc in a production system is saved from that disaster as a consequence of focussed critical analysis and comment. But here’s… Read more

  • PL/SQL performance in 19c

    PL/SQL performance in 19c

    I gave a talk at Kscope21 yesterday about common mistakes that we make during the database development cycle. To kick things off, I mentioned a customer I assisted many years ago because they had misinterpreted the mechanism to do assignments in PL/SQL. They had observed that to get the value of a SEQUENCE, they had… Read more