Oracle SQLcl configuration

I use SQLcl a lot and install it on every environment I work on. It’s fully compatible with SQL*Plus and has useful extensions to interact with OCI, Autonomous Databases and Data Pump. My SQLcl configuration file is named ’login.sql’ and located in the ‘~/work’ directory. I also keep my ’tnsnames.ora’ file here. The location of these two Oracle configuration files is configured in ‘~/.bashrc’. # Oracle TNS location export TNS_ADMIN=$HOME/work # SQLCL login file export SQLPATH=$HOME/work This is my SQLcl configuration file. ...

March 3, 2025

remapping multiple tablespaces in Data Pump

Occasionally I find myself migrating Oracle databases between environments using Data Pump. Enterprise applications tend to use multiple tablespaces for logical separation (and historical reasons). However, this isn’t possible when the target database is Autonomous Database (ADB) hosted on Oracle Cloud Infrastructure (OCI). ADB is a managed service so DBA’s can’t create tablespaces and are limited to ‘DATA’. However, Oracle 19c Data Pump supports wildcards for the REMAP_TABLESPACE parameter which allows multiple tablespaces from the existing application to be mapped to the ADB DATA tablespace. ...

January 27, 2025

self-hosting a GoToSocial instance

I like experimenting with software and technology. Many years ago, I built a Laconica instance. Not because I needed a Laconica instance but because I was curious and any knowledge gleaned would be useful. Standard LAMP stack. Same as the WordPress blogging software which I had already built. Plus Laconica releases were named after R.E.M songs by Evan. Similarly, I got an account on mastodon.sdf.org in preference to Twitter because I favour OpenSource software and the underdog. ...

November 29, 2022

Agile development with Oracle APEX

Tim Hall recently made a wonderful suggestion that the Oracle community remember the much missed Joel Kallman on 11 October 2021. My contribution doesn’t demonstrate APEX technical wizardry. Instead it’s a short story from a real-life customer project implemented using APEX. Just to avoid any potential law suits, this post isn’t about Agile development either - more how APEX can be used to quickly respond to changing customer requirements. One particular post from Joel stuck with me about his attitude to customer service which can be encapsulated in a single line: ...

October 11, 2021

in praise of MiniDLNA

Five years ago, I purchased a Roberts Digital radio for the kitchen. Mainly to listen to the radio but also this device could play music from Spotify, a USB stick or act as a UPNP client. As I already had the Plex Media Server set up which had a DLNA option, this looked attractive. The setup worked pretty well apart from one minor glitch. And, like a dripping water tap, or the endless, harrowing screams of a baby played on a tight loop in an American interrogation facility, any minor technical glitch can’t simply be ignored. ...

June 4, 2020

small changes, big improvement

Sometimes, I spend a lot of time on technical tasks that are of seemingly questionable benefit or limited practical use. For example, I remember converting the format of my 977 blog posts between markup languages and migrating the content to esoteric blogging platforms (more then once). I also wasted an unbelievable amount of time meticulously editing the meta data (YAML front-matter) and writing scripts simply to preserve Disqus comments after a change to the permalink structure. ...

May 15, 2020

Watch Your User

Connor McDonald posts an excellent series of articles about tuning a database application. This analysis from a end user perspective reminded me of my own experiences when I was a technical consultant helping customers running a large CRM application, typically in call centres scattered across Europe. I was often summoned onsite and told to solve the problem that ‘The application is slow’. Usually, different people were eager to give me their view on the issue:- ...

October 25, 2019

fixing Dovecot stats writer permissions

I tend to switch Linux distributions quite often. Consequently, I tend to have this process down to a fine art and it doesn’t take me that long. The most time consuming element is ensuring the necessary backups are in place. However, you normally find some package or configuration option you forgot about and my recent switch from Arch Linux to Fedora 29 and back again unearthed a strange problem with the Dovecot IMAP server I hadn’t encountered before. ...

November 29, 2018

in praise of Silver Searcher

Occasionally, I have to search lots of files for a pattern. It was only recently I discovered the wonderful silver searcher utility which saves me a lot of time. To install ‘ag’ on Fedora, use the following (which isn’t entirely obvious or intuitive if you’re used to typing ‘ag’). # sudo dnf install the_silver_searcher I believe there is an Emacs interface which would save me even more time. $ time ag 'sql statement execute time' ~ real 0m0.125s user 0m0.128s sys 0m0.257s $ time find ~ -type f -print0 | xargs -0 grep -i 'sql statement execute time' real 0m23.725s user 0m7.965s sys 0m1.618s

November 15, 2018

Gnus now unbelievably speedy

When I initially revisited Emacs, I used mu4e (instead of Thunderbird) for my email. I used the wonderful Gmane service to read mailing lists in Gnus and Elfeed to read blogs and RSS feeds within Emacs. This worked fine but after a while it became a little tiresome having to remember different key bindings to essentially perform the same repetitive tasks; reading messages, navigating (next/previous) messages, moving messages, saving messages, marking messages, deleting messages, searching messages, forwarding messages, replying to messages and occasionally composing brand new messages. ...

January 13, 2017