Sign in

Martin Bach

@martindba.bsky.social
633 followers 271 following 418 posts

Product Manager @ Oracle. Ex @Enkitec. Technology enthusiast. Author, blogger, speaking at user groups. Former Ace Director, OCM. I work for Oracle but do not speak for them

PostsRepliesMedia
Martin Bach @martindba.bsky.social · 25/09/2026
💡 An unexpected use case for Oracle's VALUES clause: building SQL scripts! Instead of maintaining strings or repetitive UNION ALL queries, VALUES lets you create inline tables and turn them into SQL commands. A fun little SQL trick using GRANT statements: martincarstenbach.com/2026/09/25/g...
martincarstenbach.com
Generating SQL scripts using the VALUES clause
Oracle AI Database 26ai adds a table value constructor to SELECT, allowing VALUES to act as a small inline table in the FROM or WITH clause (📕 docs). This is useful when you want to work with a sho…
010
Reposted by Martin Bach
Mike Dietrich @mikedietrichde.com · 25/09/2026
Oracle Database 19c is supported on OL/RHEL 10 Many of you did wait for this - and since (I think) two weeks it is official. Oracle Database 19c is supported on OL/RHEL 10. Furthermore, I am going to show you how to find the certifications for Oracle AI Database 26ai since your search attempts may…
mikedietrichde.com
Oracle Database 19c is supported on OL/RHEL 10
Many of you did wait for this - and since (I think) two weeks it is official. Oracle Database 19c is supported on OL/RHEL 10. Furthermore, I am going to show you how to find the certifications for Oracle AI Database 26ai since your search attempts may lead to different results depending on the filters you use. How can you look up certification information?
076
Reposted by Martin Bach
Niels de Bruijn @nielsdb.bsky.social · 16/09/2026
𝗟𝗼𝘄-𝗖𝗼𝗱𝗲 𝗸𝗲𝗻𝗻𝗲𝗻 𝘄𝗶𝗿. 𝗔𝗯𝗲𝗿 𝘄𝗮𝘀 𝗽𝗮𝘀𝘀𝗶𝗲𝗿𝘁, 𝘄𝗲𝗻𝗻 𝗞𝗜 𝗱𝗮𝘇𝘂𝗸𝗼𝗺𝗺𝘁? Genau darum geht es beim German Low-Code Day in Hannover. Ich bin vor Ort und spreche am 24. September über das Thema „𝗩𝗼𝗻 𝗟𝗼𝘄-𝗖𝗼𝗱𝗲 𝘇𝘂 𝗟𝗼𝘄-𝗔𝗜-𝗖𝗼𝗱𝗲“ #orclapex
012
Martin Bach @martindba.bsky.social · 27/08/2026
I was today <n> years old when I finally noticed the much enhanced markdown editor in Visual Studio Code. This sure will come in handy!
A screenshot of VSCode showing the new (to me) enabled Markdown editor
030
Martin Bach @martindba.bsky.social · 07/08/2026
Life hack: I'm used to emacs-style navigation in my terminal, and finally got around to configuring iterm2 to use this. The change is very simple: - open preferences - click profiles - switch to keys/key bindings Select "natural text editing" from the "presets" drop-down, and you're at home again
110
Martin Bach @martindba.bsky.social · 05/08/2026
🚀 Blog post update! A recent conversation inspired me to refresh a post on deploying MLE/JavaScript with SQLcl & Liquibase. New coverage includes: ✨ SQL-format Liquibase changelogs 🛠️ SQLcl Projects for Database CI/CD Useful if you are on Oracle AI Database: martincarstenbach.com/2024/08/15/c...
martincarstenbach.com
Create MLE/JavaScript modules using Liquibase
Multilingual Engine, or MLE for short, allows developers to use the hugely popular JavaScript language to write server-side code since Oracle Database 23ai has been released for Linux/Intel and Lin…
020
Martin Bach @martindba.bsky.social · 01/07/2026
FreeSQL is the easiest way to get started with Oracle SQL, PL/SQL & JavaScript. All you need is a browser. 🖥️ It's also behind the new interactive "Run" buttons in the Oracle AI Database 26ai docs. Curious? More details 👇 martincarstenbach.com/2026/07/01/o...
martincarstenbach.com
Oracle AI Database 26ai docs have become interactive
Oracle AI Database 26ai documentation is becoming interactive ⌨️! Instead of copying SQL examples into your own environment (which you may have to set up…), you can now execute selected code …
010
Martin Bach @martindba.bsky.social · 26/06/2026
After introducing the modern AI development stack for data-centric apps it was time to put that stack to good use: analysing workloads captured in AWR reports. Does a coding agent understand them? Find out more 👉 martincarstenbach.com/2026/06/26/r... #AI #Oracle #Performance #AWR
martincarstenbach.com
Real productivity gains with AI: Automatic Workload Repository
After setting the scene in the previous articles detailing the various components of the Modern AI Development Stack with Oracle AI Database at the centre, let’s put this environment to good …
020
Martin Bach @martindba.bsky.social · 26/06/2026
Found another practical use case for AI: help me fix the discrepancy between inline code and regular text on my blog. Took me 2 minutes to fix what would otherwise meant a lot of internet searching 🎉
020
Martin Bach @martindba.bsky.social · 10/06/2026
Don’t let database startup delays break your CI pipeline. I wrote a short post how to use health checks in Docker and Podman to ensure database dependent calls don’t fail unnecessarily: martincarstenbach.com/2026/06/10/u...
martincarstenbach.com
Using Podman and Docker Health Checks to Prevent CI Pipeline Failures
I recently experimented with Continuous Integration (CI) pipelines in GitLab, and I needed a way to detect the availability of an Oracle AI Database 26ai Free instance running in Podman. Unless the…
010
Martin Bach @martindba.bsky.social · 26/05/2026
Hardcoding passwords into scripts always feels like a temporary solution… …right until it ends up in Git 😅 I wrote a short post on handling secrets more safely in SQLcl projects and completing admin tasks without creating a security nightmare: martincarstenbach.com/2026/05/25/c...
martincarstenbach.com
Handling Secrets Safely in SQLcl Projects Deployments
TL;DR: for security reasons you cannot possibly store sensitive information in Git. There have been too many occasions where API keys, passwords, or other configuration data has been exposed. Abuse…
052
Martin Bach @martindba.bsky.social · 06/05/2026
Kurze Frage für die deutschsprachige Bubble: kennt ihr Clever & Smart und/oder Spy vs Spy? Frage für einen Freund …
500
Martin Bach @martindba.bsky.social · 04/05/2026
Funny typos #42: $ gut pull It certainly feels like that sometimes 🤣 Maybe I should create a shell alias …
050
Martin Bach @martindba.bsky.social · 30/04/2026
Tell me you have been in IT for a long time without telling me you have been in IT for a long time: $ set -o vi Now I’m trying to find out how to enable Emacs key bindings in zsh…
140
Martin Bach @martindba.bsky.social · 15/04/2026
🚀 New post: JavaScript precision isn’t as safe as you might think 🤔 I break down how numeric precision loss happens in JavaScript, and how to avoid it. Especially for financial data and large numbers. The post applies to both node and MLE/JavaScript. 👇 martincarstenbach.com/2026/04/13/a...
martincarstenbach.com
Avoiding precision loss with MLE/JavaScript in Oracle AI Database 26ai
Oracle AI Database 26ai introduced Multilingual Engine (MLE), allowing you to run JavaScript inside the database. This feature bumps the number of languages available to write server-side code to 3…
000
Martin Bach @martindba.bsky.social · 10/04/2026
I just read that 90% of all organisations who responded to the DORA 2025 survey adopted platform engineering. Ninety percent 🤩 That’s a pretty significant number. I’d love to hear from you how you/the team adopted platform engineering, in particular wrt Oracle database.
122
Martin Bach @martindba.bsky.social · 18/03/2026
Do you use SQLcl in GitHub Actions? If so, you might like the latest update to gvenzl/setup-oracle-sqlcl. Release 1.3.0 allows you to pin a specific release to your pipeline. This is particularly useful for anyone using SQLcl Projects. Details 👇 martincarstenbach.com/2026/03/17/u...
martincarstenbach.com
Updated setup-oracle-sqlcl Action and why it matters for SQLcl projects
This is a short post announcing a small but important change in the way you install SQLcl in GitHub Actions. The latest release allows you to install a specific SQLcl release in addition to the lat…
021
Martin Bach @martindba.bsky.social · 05/03/2026
Using Codex to generate unit tests for Oracle REST Data Services gave me a real productivity boost 🤖 Curious? I recorded a short video 📽️ showing my approach, with running commentary: martincarstenbach.com/2026/03/05/r... Do you have an internal platform? Use CI/CD? Let me know in the comments 🙏
martincarstenbach.com
Real productivity gains with AI: coding unit tests for your ORDS endpoints. A walthrough
After the completion of my little experiment writing unit tests with the help of AI I was so excited I spontaneously recorded a short video, too. In this video I’m walking you throw my code e…
010
Martin Bach @martindba.bsky.social · 04/03/2026
Here's a short "life hack", allowing you to use utPLSQL in your CI pipeline. OK, right, you could do that before, but this time, if there are failed unit tests your pipeline run will abort. No need for any other software, just SQLcl to run the tests. martincarstenbach.com/2026/03/04/l...
martincarstenbach.com
Life hack: causing utPLSQL to raise an error in case of failed tests
The wonderful Symposium 42 community is always a source of inspiration, kindness and willingness to help. Many thanks to everyone for lending me an ear while ranting about utPLSQL (tongue in cheek …
000
Reposted by Martin Bach
Madeleine Reinwald @madeleine-reinwald.bsky.social · 27/11/2025
Kaum zu glauben, dass die DOAG K+A schon wieder eine Woche her ist. So viele inspirierende Gespräche, starke Sessions und kleine, lustige Momente – höchste Zeit für einen Blick zurück! 😃 Ob auf der #DOAG2025, #LowCodeCreator oder #KINavigator – was waren eure Highlights? 😊 #DOAGDevs
2147
Martin Bach @martindba.bsky.social · 04/03/2026
I started an experiment and let AI write my unit tests. What used to take me 1 hour now takes 10 minutes. Here’s how I used Codex with Oracle AI Database 26ai to generate tests for my ORDS endpoints 👇 martincarstenbach.com/2026/03/04/r...
martincarstenbach.com
Real productivity gains with AI: coding unit tests for your ORDS endpoints
Ever since I first heard about them, I have become a great fan of unit tests, Test-Driven-Development, and CI/CD in general. Whenever I can, I incorporate these into my demos. I wrote a fair bit ab…
050
Martin Bach @martindba.bsky.social · 02/03/2026
Finally finding some time to dig deeper into the DORA 2025 Report. The recording of this webinar is very insightful in my opinion. For example, just throwing in AI without having thought about a platform might not provide the productivity gains you hoped for. www.thoughtworks.com/insights/rep...
thoughtworks.com
The 2025 Dora Report
The DORA Report 2025, the industry's authoritative research on software delivery performance and engineering excellence, is now available. Get our insights.
000
Martin Bach @martindba.bsky.social · 02/03/2026
🚨New Blog post 🚨 Does your application receive JSON via REST calls? If so, how do you make you don't receive garbage data? Using JSON Schema is a neat way to do that. Here's an example using ORDS and Oracle AI Database 26ai (incl. server-side JavaScript)👇 martincarstenbach.com/2026/03/01/u...
martincarstenbach.com
Using JSON Schema to validate data submitted to the database via REST Calls
The title’s a mouthful (sorry!), but here’s the core idea: your application exposes REST endpoints through Oracle REST Data Services (ORDS). When a client uses POST to insert new records, the input…
051
Martin Bach @martindba.bsky.social · 23/02/2026
🚀 New Blog Post 🚨 A recent forum question provided inspiration 💡 If you ever found yourself in the situation where you had to provide additional detail in a JSON Relational Duality View this post shows one way to do it 👉 martincarstenbach.com/2026/02/23/a...
martincarstenbach.com
Augmenting JSON Relational Duality Views with generated data
A recent forum post inspired this brief article on generating summary data in JSON Relational Duality Views. Typically you map a table’s columns to fields in the resulting JSON. If you can&#8…
010
Martin Bach @martindba.bsky.social · 20/02/2026
🚀 New post: Handling query parameters in JavaScript-based Oracle REST Data Services (ORDS) endpoints Covers: • How ORDS exposes query parameters • Safe access & validation patterns • Pitfalls (implicit type conversion!) • Making endpoints more predictable 👉 martincarstenbach.com/2026/02/20/h...
martincarstenbach.com
Handling Query Parameters in JavaScript-based ORDS Endpoints
Oracle REST Data Services (ORDS) allows you to REST-enable your Oracle Database. REST is short for Representational State Transfer, and REST calls are typically used as your database API (Applicati…
010
Reposted by Martin Bach
SQLDaily @sqldaily.bsky.social · 17/02/2026
With #JSON duality views in Oracle AI Database you can build a JSON interface over database tables These come with lost-update detection via ETags @martindba.bsky.social shows how this prevents conflicting writes for REST calls by using the if-match header
buff.ly
Optimistic Locking Made Easy: The Power of ETags in Action
JSON Relational Duality Views are one of the most remarkable features introduced with Oracle AI Database 26ai. They effortlessly blend the best of both worlds: relational and document, greatly simp…
011
Martin Bach @martindba.bsky.social · 13/02/2026
D’oh! Scratched my head for 10 minutes asking myself why microdnf doesn’t find the local rpm. Turns out microdnf as it ships in Oracle Linux 9 simply can’t install local RPMs. Switching to the not quite as slim image helped.
110
Martin Bach @martindba.bsky.social · 08/02/2026
Wait, what? In 2023 I bought 64GB DDR5-5600 for 210€. Today, if I wanted to get 64GB DRAM (identical spec) I have to part with 879€ 🤯 <insert your favourite combination of swear words here>
151
Martin Bach @martindba.bsky.social · 05/02/2026
Looking at my posting insights in Wordpress and I thought ... wouldn't it be fun to post "Tetris" style? Nearly did that in January 🤣
010
Martin Bach @martindba.bsky.social · 05/02/2026
Optimistic locking with React, ETags, @OracleREST endpoints, and JSON Relational Duality Views in Oracle AI Database — but shown in a UI that people actually want to use. I recorded a short demo video to prove it. Blog post & video here: martincarstenbach.com/2026/02/05/o...
martincarstenbach.com
Optimistic Locking Made Easy: JSON Relational Duality Views & ETags in React
In my previous post I demonstrated how ETags can help your web application implement concurrent data access and optimistic locking. Except I didn’t use a web application … Rather than a…
000
Martin Bach @martindba.bsky.social · 04/02/2026
A little chuffed about the fact that I finished a small React app today to interact with a JSON Relational Duality view via REST. Oracle ORDS kindly provided the endpoint for me. Thanks to react-bootstrap it does look half-decent, too
media.tenor.com
Minions GIF
ALT: Minions GIF
000
Martin Bach @martindba.bsky.social · 04/02/2026
🚨 New blog post! I just migrated a PL/SQL app to JavaScript (yes—still inside the database 😎). As part of the experiment I put JSON Relational Duality Views + ETags to the test for optimistic locking. Spoiler: it works beautifully. Dive in 👇 martincarstenbach.com/2026/02/03/o...
martincarstenbach.com
Optimistic Locking Made Easy: The Power of ETags in Action
JSON Relational Duality Views are one of the most remarkable features introduced with Oracle AI Database 26ai. They effortlessly blend the best of both worlds: relational and document, greatly simp…
110
Martin Bach @martindba.bsky.social · 28/01/2026
Not entirely convinced of zone 2 training. It sure is fun and leisurely but I almost feel as if it made me slower. What’s your experience? This is about running but it might as well apply to cycling 🚴 🏃 #running #endurance #cycling
130
Martin Bach @martindba.bsky.social · 27/01/2026
So far I only used the syntax highlighter block in Wordpress. I was today <n> years old when I noticed that the code block has syntax highlighting for many more languages than syntax highlighter . Plus it can do line numbers, display the language and add a copy button ☺️
screenshot showing some of the languages supported by wordpress's code block
100
Martin Bach @martindba.bsky.social · 26/01/2026
Did you know you can write User Defined Functions in TypeScript for Oracle AI Database 26ai? I’ve just updated my article showing how to transpile TypeScript, apply Biome for linting, all with CI in mind — just like you would for any modern app: 👉 martincarstenbach.com/2023/07/04/l...
030
Martin Bach @martindba.bsky.social · 22/01/2026
3-day blogging streak! 🚀 New post in my MLE/JavaScript series covering collections and record support: using nested tables to pass arguments to apex_lang.get_message 🧩📚 More on varrays & associative arrays coming soon 👀✨ 👉 martincarstenbach.com/2026/01/22/w...
martincarstenbach.com
What’s new with MLE 23.26.0 – support for PL/SQL Collections and Records Pt 3
Oracle AI Database has been released! It ships with a whole raft of cool new features, including some the Multilingual Engine (MLE) team integrated for JavaScript. This article discusses one of the…
020
Martin Bach @martindba.bsky.social · 21/01/2026
The best way to get ideas for blog posts is to actively work with technology 💻. I love experimenting 🧪👨‍💻 Recently I translated a PL/SQL code unit to MLE/JavaScript. If you ever need to perform a PL/SQL calculation in JavaScript⚙️, here’s how to do it 👇 martincarstenbach.com/2026/01/21/r...
martincarstenbach.com
Retrieving the result of a PL/SQL computation in MLE/JavaScript
Recently, while working on a joint project with the APEX team, the need arose to rewrite a piece of PL/SQL code in MLE/JavaScript. The PL/SQL code in question roughly looks like this. declare l_res…
031
Martin Bach @martindba.bsky.social · 19/01/2026
Quick question for the community: do you use shared server connections with your Oracle database? (docs.oracle.com/en/database/...). Regardless of the release…I am genuinely curious 🧐
docs.oracle.com
Database Net Services Administrator's Guide
500
Martin Bach @martindba.bsky.social · 15/01/2026
🚀 Small update to my blog I updated my page template to finally display tags 🎉 Tags were already assigned for each article, but now they’re visible and clickable. For example, all my JavaScript posts are now accessible in one place: 👉 martincarstenbach.com/tag/JavaScri...
martincarstenbach.com
JavaScript – Martins Blog
Posts about JavaScript written by Martin Bach
000
Reposted by Martin Bach
SQLDaily @sqldaily.bsky.social · 08/01/2026
The method_opt parameter of dbms_stats controls histogram generation @martindba.bsky.social shows how to use it to Delete all histograms except for 1 Create this histogram using the AUTO clause With for all columns size 1, for columns data_skew size AUTO
buff.ly
Multiple “for” clauses in dbms_stats’s method_opt
Recently, I encountered some frustration in recalling the correct syntax for the method_opt parameter in DBMS_STATS. This clause is primarily used when creating or deleting histograms. A histogram …
031
Martin Bach @martindba.bsky.social · 06/01/2026
🚀 I’m excited to share that the all-new JavaScript LiveLab for Oracle AI Database 26ai is live! If you’re curious about writing JavaScript on the server the updated LiveLab makes getting hands-on much easier No setup required, just a browser; feedback welcome: martincarstenbach.com/2026/01/06/s...
martincarstenbach.com
Say hello to the all new server-side JavaScript LiveLab
In-Database JavaScript, powered by Multilingual Engine (MLE) debuted as a major feature in Oracle AI Database 26ai. Starting with the Developer Preview (Release 23.2) a few years ago, you could wri…
020
Martin Bach @martindba.bsky.social · 29/12/2025
Reflecting on my blogging journey in 2025 📊✍️ Summary: I managed to blog a fair bit this year☺️and it was fun! Looking forward to more writing, more learning, and sharing practical insights. Thanks to everyone who’s taken the time to read my stuff 🔗 martincarstenbach.com
A screenshot showing my year in blogging, listing blog posts per month and the most popular blog post this year
010
Martin Bach @martindba.bsky.social · 29/12/2025
🚀 New blog post is out 🖥️ Will this one be the final one for this year 🤔 ? I investigated an unexpected parallel query execution in Autonomous Database. Turns out to be a mistake on my part, so I wrote this in case you hit this, too: martincarstenbach.com/2025/12/29/w...
martincarstenbach.com
Why does my query run in parallel on Autonomous Database-Serverless even though I do everything to prevent it from doing so?
While preparing for another blog post I desperately wanted to write I noticed something unexpected. The problem turned out to be between keyboard and chair, but I don’t want to get ahead of m…
000
Martin Bach @martindba.bsky.social · 19/12/2025
🚀 New blog post is out 🖥️ I started a mini-series about Oracle's server-side JavaScript implementation, and its support for PL/SQL records and collections. Part II, out now, shows you how to return records from JavaScript to PL/SQL. Details here: martincarstenbach.com/2025/12/19/w...
martincarstenbach.com
What’s new with MLE 23.26.0 – support for PL/SQL Collections and Records Pt 2
Oracle AI Database has been released! It ships with a whole raft of cool new features, including some the Multilingual Engine (MLE) team integrated for JavaScript. This article discusses one of the…
010
Reposted by Martin Bach
DOAG e.V. @doagev.bsky.social · 18/12/2025
🎡 #apexconn26 | 18.–20. Mai | Heide Park Soltau #LowCode, #orclapex & #PLSQL in einer Location, die genauso dynamisch ist wie die Technologie selbst. 🎤 Keynote von @cczarski.bsky.social: "Low-Code mit APEX 2026 – Der Stand der Dinge" – mit APEXlang, KI, neuen Features u.v.a.m. 😃 apex.doag.org
044
Reposted by Martin Bach
SQLDaily @sqldaily.bsky.social · 11/12/2025
Schema annotations in Oracle AI Database enable you to add key-value metadata on Tables Views Indexes Domains These help document your objects @martindba.bsky.social shows how to add them to view columns with ALTER VIEW ... MODIFY ( <col> ANNOTATIONS ( ... ) )
buff.ly
Creating column-level annotations on views
While updating my slides covering “what’s new in Oracle AI Database 26ai” I noticed that examples how to annotate views are currently absent from the SQL Language Reference. While…
001
Martin Bach @martindba.bsky.social · 12/12/2025
🚀 New blog post is out 🖥️ I was recently asked if the JavaScript SQL driver used in Oracle AI Database respects Virtual Private Database (VPD) policies. I was pretty sure it did, a quick test removed all uncertainty. Spoiler: it does. Care for the details? 🔗 martincarstenbach.com/2025/12/12/d...
martincarstenbach.com
Does the MLE SQL Driver respect Virtual Private Database policies?
An interesting question came in today and it’s a great opportunity to elaborate a little on the nature of the Oracle JavaScript SQL Driver. As you may have heard, Oracle AI Database 26ai intr…
000
Martin Bach @martindba.bsky.social · 10/12/2025
Ready for my first of two talks during #ittage25: today I’m going to introduce Java developers to database tuning. Actually any developer. And it’s a pretty light into 🙃Hope to see you at 14:00!
Flags are flying in the wind in front of the venue indicating IT Tage 25 are in full swingA foto of the IT Tage booth
000
Martin Bach @martindba.bsky.social · 09/12/2025
🚀 Quick Oracle tip: use multiple FOR clauses in METHOD_OPT to keep stats lean while building a histogram only where it matters. Small tweak, big control. 😉 And I can never remember the correct syntax, so I wrote it down More: martincarstenbach.com/2025/12/09/m...
martincarstenbach.com
Multiple “for” clauses in dbms_stats’s method_opt
Recently, I encountered some frustration in recalling the correct syntax for the method_opt parameter in DBMS_STATS. This clause is primarily used when creating or deleting histograms. A histogram …
240
Martin Bach @martindba.bsky.social · 03/12/2025
Bind variables boost Oracle performance, cut hard parses, and reduce SQL injection risk. Many of you know this, but this time I did the maths showing the overhead of not sharing cursors. You can find the details here: martincarstenbach.com/2025/12/02/m...
martincarstenbach.com
More good reasons to use bind variables in cursors in Oracle
Bind variables are a best practice in Oracle database development. They offer significant benefits in performance, security, and maintainability. One of the main reasons to use bind variables is pr…
040