The one ORDS command you NEED to know!

Chris Hoina
Dev Genius
Published in
6 min readFeb 7, 2024

--

ords config list --include-defaults

That’s it. Goodbye!

I’m kidding, there’s more. But if you don’t feel like reading anymore, bookmark this post and return when you’re ready.

Assuming you have ORDS installed, you too can execute the ords config list --include-defaults command to reveal almost all the configuration settings for your ORDS installation.

Here is what my configuration looks like:

ords-config-list-include-defaults-main-page-chris-hoina-senior-product-manager-ords
Executing the ords config list --include-defaults command.

Configuration settings: what am I seeing?

This command is a quick way to see all the settings from your .XML configuration files (i.e., the settings.xml and pool.xml files), including other settings automatically configured for you when you first ran the ords interactive installer.

In short: All your default settings and any that you 
may have added or changed are on one screen.

Read on to explore further…

Version, config folder location, and pool information

I've broken the configuration settings into sections. 
Anywhere you see red arrows, are just areas of
intrigue (personally); however
THIS LIST IS NOT EXHAUSTIVE.

I use this first section as an easy, convenient way to determine the ORDS version I’m running. Additionally, you can verify the location of your configuration folder (in case you forget). You can also verify the database pool (default is the default name for the pool unless you modify the name) you are using.

ords-config-list-include-defaults-folder-and-version-info-chris-hoina-senior-product-manager-ords
ORDS version, configuration folder location, and database pool information.
If you want to learn more about the ORDS pools, 
visit this link and this link.
💡I only have single install, that is why I see 
default as the default database pool.

Pool and global settings

Not much here that you probably already don’t know. However, in the future I will look at the features associated with the database.api.management.services.disabled = false property (also, I think the way this is written is a referred to as a “logical negation”, and it hurts my brain to read).

ords-config-list-include-defaults-pool-and-default-settings-chris-hoina-senior-product-manager-ords
General ORDS settings.

Read more about this service here. But in short (and once you’ve created the requisite user), you can explore various services such as:

  • DBCA Jobs, available methods: DELETE, GET and POST
  • DBCA Templates GET
  • Oracle Home Environment GET
  • PDB Lifecycle DELETE, GET, POST
  • Open Service Broker DELETE, GET, and PUT

Debug and Error

My settings are false (these are the default settings). But if I were to, for instance, set debug.printDebugToScreen = true, I would then be able to see any error messages in the browser.

ords-config-list-include-defaults-feature-settings-chris-hoina-senior-product-manager-ords
ORDS debug and error settings.

I can change the responseFormat to always display as JSON, HTML, or AUTO (i.e., Automatically determine the most appropriate format).

ℹ️ Note: Must explore this further and report back after 
I've sufficiently tinkered.

Did you know you can create custom HTTP error pages in ORDS? These two error.properties appear to be associated in some way. So if you were two create custom error pages, you’d probably need to consider the format as well. Nonetheless, could you imagine the fun you could have coming up with something totally unique to your application?

I'm definitely adding this to my "Productive Procrastination" list 🤣!

GraphQL and SQL Developer Web

ORDS supports GraphQL now; did you know?! I just set up my local installation (it wasn’t too bad once I figured out how to properly set my Java to GraalVM 😑), so I can start learning GraphQL queries.

GraphQL and ORDS settings.
Did you know ORDS ships with the GraphiQL IDE now? 
Learn how to set it up here.

Cookies and ICAP

I honestly wouldn’t have known ORDS could offload virus scanning to ICAP (Internet Content Adaptation Protocol) servers unless I looked at what was actually in the configuration settings. I’m not sure if I’ll configure this anytime soon, but maybe you will.

Bookmark this link for future reference!
ords-config-list-include-defaults-icap-settings-chris-hoina-senior-product-manager-ords
ICAP server settings.
Want to bore yourself? Read more about ICAP in this RFC 3507 memo.

Java Database Connectivity (JDBC)

I am NOT going to spend much time here. I still need toggle these parameters and experiment more. However, I will point out that the default setting for maximum JDBC connections is 20 (jdbc.MaxLimit setting).

ords-config-list-include-defaults-jdbc-settings-chris-hoina-senior-product-manager-ords
Java Database Connectivity and ORDS settings.

jdbc.MaxLimit=20 is probably too low for a production environment. I’ve left it as-is because it’s just me, and I’m doing everything locally in my Podman container.

Suppose you need to familiarize yourself with JDBC or Universal Connection Pools (UCPs)? In that case, we should both read the introduction sections of the following guides:

MongoDB

I have spent little time with MongoDB, but from what I understand, the Oracle Database API for MongoDB translates the MongoDB wire protocol into SQL statements executed by the Oracle.

ords-config-list-include-defaults-mongo-db-settings-chris-hoina-senior-product-manager-ords
ORDS and the MongoDB API settings.

What I’m inferring from our docs is that once you’ve migrated your data from a MongoDB into a supported Oracle database, you (or your application) can keep talking “MongoDB speak,” and at least in this case, ORDS will be able to interpret this Mongospeak and query the database on your behalf 🤯!

If this describes you or your use-case, you’re in luck; I found some excellent resources!

Security

You’ll notice, no red arrows here. I have yet to spend much time with this section. However, I want to draw your attention to the security.jwks.[etc...] and security.jwt.[etc...] properties.

ords-config-list-include-defaults-security-settings-chris-hoina-senior-product-manager-ords
ORDS security settings.

In ORDS 23.3, we introduced JSON Web Tokens (JWTs) support, so these properties very much concern that new functionality.

In short, we've allowed you to incorporate JWT authentication 
provided through third parties into your APIs.

Good resources to bookmark:

Standalone (Jetty)

The nice thing about ORDS is that you can use the embedded Jetty server as a local web server for testing. This section shows most of the essential settings for running Jetty in “Standalone mode.”

ords-config-list-include-defaults-standalone-settings-chris-hoina-senior-product-manager-ords
ORDS standalone Jetty Server settings.

I use the term “testing” because our docs state, “the default configuration of Jetty is optimized for the most common ORDS use cases.” I interpret this as, “This is designed to expose you to Jetty (and make it easy to get you up and running), but you’ll probably need to adjust this according to your own requirements.”

The only things I want to point out here are the standalone.doc.root and standalone.static.context.path properties. These settings will look familiar if you’ve ever performed an APEX installation (available here, for free, BTW).

However, if you want to deploy custom HTML, CSS, and image files, you can configure this for ORDS. We have an overview in our docs here.

I think I've just stumbled upon another fun 
Friday afternoon project 😍!

Okay, that’s it for now. Thank you for choosing to waste your time with me.

What’s the point of this post?

There was no point to this post. I’m constantly wasting time researching technology and techniques I don’t need to know. However, in this case, I’ve hopefully:

  • left you with at least one helpful ORDS command-line command (ords config list --include-defaults), and
  • provided you with some helpful explanations and resources on what is contained in your ORDS installation (again, this list is NOT exhaustive)

And if you found this post helpful, please share it!

Follow

And don’t forget to follow, like, subscribe, share, taunt, troll, or stalk me!

--

--

I’m a Senior Product Manager at Oracle. But I’m more than that. I’m not to be objectified, like some shiny toy or trinket…