This page contains a list of all my posts dealing with the Oracle database in one way or another.
Downloading AutoUpgrade in Ansible playbooks
Mike Dietrich just announced a new AutoUpgrade release. If you haven’t heard about AutoUpgrade yet, you hit the right spot: it’s a pretty cool addition to any DBA’s toolbox. I use it all the time in Ansible, mainly because it makes installing an Oracle Home on a new server much much easier compared to the…
Setting initialisation parameters in Oracle AI Database Free container image
I recently had to troubleshoot a vector index creation problem on Oracle AI Database Free. To be totally honest upfront: the problem wasn’t Oracle – it was me. Here’s a short story about what happened and what I did to remedy the situation. I typically use {docker,podman}-compose to start my demo environments, because it’s the…
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 short list of values without creating a table or writing multiple UNION ALL queries. The VALUES clause…
Did you know about schema-only accounts?
Oracle 18c introduced schema-only accounts, and they are great for ISVs and anyone else who wants to contain all data and logic within the same schema. Most often you don’t want to grant direct access to such an application account, just to be safe. Prior to Oracle 18c you typically created an account with a…
LiveLab Updates for Multilingual Engine
Oracle Multilingual Engine allows you to write server-side JavaScript code, use (license-compliant, security-vetted, etc.) third-party JavaScript modules in the database, and a lot more. The documentation includes two main resources: The JavaScript Developer’s Guide JSDoc covering the JavaScript modules shipped with the database Documentation can be a bit abstract, and that’s because it must explain…
Solving a common “permission denied” error in rootless podman
Podman is different from docker in that it typically runs its containers rootless. Just as any other process without root privileges this has certain implications, this blog covers a common one. This article by RedHat covers a lot more ground should you not find the solution for your issue here. Assume for example that you…
Enabling outbound network connections in APEX
Modern applications frequently need to access external services from within the database. In distributed architectures, those services are often exposed through REST APIs. Oracle APEX offers several declarative and programmatic ways to consume REST services, but a system administrator must first permit the necessary outbound network connectivity. NOTE: APEX behaves ever so slightly differently in…
Storing & retrieving sensitive data for your CI/CD pipelines securely
On-premises edition. See below for a great article by Jeff Smith covering the other scenario where your database resides in Oracle Cloud. Secret management is a crucial part of your IT security strategy. Careless handling of secrets can leak these, and create security risks that are entirely avoidable. Hard-coding secrets, even for lab environments, is…
Connecting to Oracle AI Autonomous Database with SQLcl the Easy Way
Third-party tools don’t always offer much flexibility when connecting to Oracle AI Autonomous Database. In many cases, the connection code is fixed and can’t be modified. Many shell scripts follow a pattern similar to this, but this issue isn’t purely related to shell scripts. Java, Python, .Net, you name it, typically follow the username/password/connection string…
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 snippets directly from the documentation using FreeSQL. You’ve probably heard about the great work that has gone into FreeSQL, allowing you to run Oracle…
Something went wrong. Please refresh the page and/or try again.