2023-12-18

Autonomous Transactions

Introduction Autonomous transactions became available in the Oracle Database 8i Release 1 (8.1.5). 25 years ago. Before then the feature was used only internally, for example, when requesting a new value from a sequence. I mean, if Oracle is using autonomous transactions internally and they’ve made them public, then the usage can […]
2023-11-26

Installing MLE Modules in the Oracle Database

Introduction In my previous blog post, I’ve shown how you can deploy an npm module from a URL and a custom ESM module from a local file into a remote Oracle Database 23c using JavaScript and SQLcl. This works well. However, for two MLE modules, I had to write 22 lines of […]
2023-11-12

MLE TypeScript & JavaScript Modules

Introduction The Oracle Database 23c supports MLE JavaScript modules. MLE modules are standard ECMAScript 2022 modules. The easiest way to develop such modules is outside the database. This allows us to take advantage of the extensive JavaScript ecosystem and develop MLE modules in TypeScript instead of JavaScript. In this blog post, I […]
2023-10-11

Sharing SQL Developer Connections #JoelKallmanDay

1. The Problem I created a Docker image and a container for the Oracle Database 19c (19.19) for Linux ARM. The container contains ORDS, APEX and various sample schemas. Finally, an Oracle database that runs pretty fast on my Apple Silicon machine. Then I built a cold database clone by creating a […]
2023-04-16

Oracle Database 23c on a Mac with an M-Series Chip

ARM Docker Images Now Available With the release of version 23.5 of Oracle Database 23ai, ARM builds are now available for Docker images. On the official Oracle Container Registry: And on Docker Hub provided by Gerald Venzl: This makes it very easy to use the Oracle Database on a Mac with an […]
2023-03-05

IslandSQL Episode 4: Expressions

Introduction In the last episode, we extended the IslandSQL grammar covering the complete lock table statement. However, the support for expressions was very limited. It was not possible to use a date literal or to_date function to determine a partition to be locked. Time to fix that. In this episode, we will have […]
2023-02-19

IslandSQL Episode 3: Lock Table

Introduction In the last episode, we extended the IslandSQL grammar to cover all DML statements as a single lexer token. Now it’s time to handle the complete grammar for one DML statement. The simplest one is lock table. A good reason to start with it and lay the foundation for the other DML […]
2023-02-07

IslandSQL Episode 2: All DML Statements

Introduction In the last episode, we build the initial version of IslandSQL. An Island grammar for SQL scripts covering select statements. In this blog post, we extend the grammar to handle the remaining DML statements. The full source code is available on GitHub and the binaries on Maven Central. Lexer Changes The […]
2023-02-04

IslandSQL Episode 1: Select Statement

Introduction An island grammar focuses only on a small part of a grammar. The island represents the small, interesting part and the sea the rest. In this blog post, I explain the components of an island grammar for SQL scripts named IslandSQL. In the first iteration, we focus on the select statement. Everything […]