I’m currently writing a small bash script to load a few WebAssembly modules into an Oracle AI Autonomous Database. SQL Loader is a natural fit for this (there are of course others, but sqllr is scriptable) but … I don’t have any Oracle client software installed at all.
What I do have available is an Oracle Free container image! The image ships with sqlldr so why not use it? It’s actually quite straight forward! First, you need to start the image:
docker run --rm --interactive --tty \--name sqlldr \--entrypoint bash \--volume /home/martin/devel/javascript/javascript-blogposts/mle-wasm-photon:/mle-wasm-photon \docker.io/gvenzl/oracle-free:23.26.3
This command starts an interactive container session in bash, and best of all, it’s super quick to initialise. Normally, when using this particular image, you’d expect a database to be created/mounted. Changing the entrypoint to bash skips that step, and I’m presented with all the database utilities in my path. The mount point, /mle-wasm-photo, makes the contents of the host directory available within the container. Podman users (rootless) on Linux might have to amend the command with options to map host to container uids and gids, like --userns=keep-id:uid=n,gid=n.
Now let’s load the files into the database. Still attached to the tty session, start sqlldr
$ sqlldr userid=emily@demo_tp control=load_photon.ctl log=logs/20261027_200516_load_photon.log direct=false[...]SQL*Loader: Release 23.26.3.0.0 - Production on Tue Oct 27 20:03:50 2026Version 23.26.3.0.0Copyright (c) 1982, 2026, Oracle and/or its affiliates. All rights reserved.Path used: ConventionalCommit point reached - logical record count 1Commit point reached - logical record count 2Table WASM_MODULES: 2 Rows successfully loaded.Check the log file: logs/20261027_200516_load_photon.logfor more information about the load.
It only takes a second to load the files: Job Done!
Before I got there I had to overcame a slight issue. I encountered ORA-28759: failure to open file both in sqlplus and sqlldr. At first I thought network traffic can’t exit the container, but that wasn’t it. The error is caused by a misconfiguration in sqlnet.ora. In there, it was listing the host path to my tns admin folder in WALLET_LOCATION. Make sure to change it to match the volume mount within your container and try again – you should connect successfully.