Martin Bach

Martin Bach

@martindba.bsky.social

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

634 followers271 following420 posts

The benefit of staying up to date is tangible: I haven’t used git worktrees until very recently and I paid a price of inconvenience. Worktrees can address lots of common problems working with many branches and they are easy to use. You really should give them a try, they are awesome 🙌

Martin Bach reposted

DOAG e.V. "Dafür habe ich keine Zeit, lass uns das automatisieren". Klingt einfach. Ist es aber nicht. 😉 Martin Bach @martindba.bsky.social schaut sich 3 Werkzeuge an, mit denen sich typische Aufgaben aus Cloud-, System- und DB-Administration automatisieren lassen. ➡️ scomp.ly/VjpxbyR #DOAG2026

💡 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.comGenerating SQL scripts using the VALUES clauseOracle 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…

Martin Bach reposted

Martin Bach reposted

𝗟𝗼𝘄-𝗖𝗼𝗱𝗲 𝗸𝗲𝗻𝗻𝗲𝗻 𝘄𝗶𝗿. 𝗔𝗯𝗲𝗿 𝘄𝗮𝘀 𝗽𝗮𝘀𝘀𝗶𝗲𝗿𝘁, 𝘄𝗲𝗻𝗻 𝗞𝗜 𝗱𝗮𝘇𝘂𝗸𝗼𝗺𝗺𝘁? Genau darum geht es beim German Low-Code Day in Hannover. Ich bin vor Ort und spreche am 24. September über das Thema „𝗩𝗼𝗻 𝗟𝗼𝘄-𝗖𝗼𝗱𝗲 𝘇𝘂 𝗟𝗼𝘄-𝗔𝗜-𝗖𝗼𝗱𝗲“ #orclapex

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

🚀 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.comCreate MLE/JavaScript modules using LiquibaseMultilingual 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…

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.comReal productivity gains with AI: Automatic Workload RepositoryAfter 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 …

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 🎉

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.comHandling Secrets Safely in SQLcl Projects DeploymentsTL;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…

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…

🚀 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.comAvoiding precision loss with MLE/JavaScript in Oracle AI Database 26aiOracle 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…

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.

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.comUpdated setup-oracle-sqlcl Action and why it matters for SQLcl projectsThis 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…

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.comReal productivity gains with AI: coding unit tests for your ORDS endpoints. A walthroughAfter 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…

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.comLife hack: causing utPLSQL to raise an error in case of failed testsThe 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 …

Martin Bach reposted

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

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.comThe 2025 Dora ReportThe DORA Report 2025, the industry's authoritative research on software delivery performance and engineering excellence, is now available. Get our insights.

🚨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.comUsing JSON Schema to validate data submitted to the database via REST CallsThe 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…

🚀 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.comHandling Query Parameters in JavaScript-based ORDS EndpointsOracle 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…

Martin Bach reposted

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.lyOptimistic Locking Made Easy: The Power of ETags in ActionJSON 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…

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.

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>

🚨 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.comOptimistic Locking Made Easy: The Power of ETags in ActionJSON 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…

Just finished recording a short video where I’m showing a lot more realistic scenario involving a react web app to modify the Duality View. Definitely more pleasing to the eye than raw JSON in the console 📽️

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

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

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 ☺️

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.comRetrieving the result of a PL/SQL computation in MLE/JavaScriptRecently, 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…

Martin Bach reposted

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.lyMultiple “for” clauses in dbms_stats’s method_optRecently, 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 …

🚀 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.comSay hello to the all new server-side JavaScript LiveLabIn-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…

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

🚀 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.comWhat’s new with MLE 23.26.0 – support for PL/SQL Collections and Records Pt 2Oracle 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…

Martin Bach reposted

🎡 #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

Martin Bach reposted

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.lyCreating column-level annotations on viewsWhile 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…

🚀 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.comDoes 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…