Updated 2 May 2022
Oracle Autonomous Database is a Platform as a Service (PaaS) offering on the Oracle Cloud (OCI). It’s managed, meaning you don’t have to worry about updates, patches, or much in way of configuration.
One of the core features is the ability to publish and consume REST APIs for the data in your Autonomous Database – whether that be on the Dedicated, Serverless, or Always Free service offerings.
I wanted to answer a few frequently asked questions and share a couple of useful resources for you in this post.
How are my endpoints addressed?
All database REST APIs in Autonomous use the HTTPS protocol. Each HTTPS call generally has two main components, an address and a verb.
Well, if you publish a REST API in Autonomous, what the heck is my URL? We show you this critical information in your Database Actions REST workshop page.
So what comes after the /ords/ ?
Your REST APIs will look like this –
The schema is the REST Enabled schema name, or it’s schema alias, which we refer to as the url_mapping_pattern.
What else do I need to know about ORDS in Autonomous?
OS Authentication is available if you want it. But note that means consumers of your API will be logging in as actual Oracle Database users, and you’ll be using BASIC Auth, which is generally frowned upon, even when HTTPS is in play.
We recommend you use an ORDS provided OAUTH2 client. Hot Tip #1 – use Todd’s awesome blog post to see how to do this.
Not only is OAUTH2 more secure, it’s ALSO faster. Each every call you make will be significantly faster, maybe even 3x faster.
DO NOT USE ADMIN FOR PUBLISHING REST APIs
WE DO RECOMMEND YOU CREATE AN APPLICATION SCHEMA AND USE THAT.
Building Services – with what tools?
You can use anything that can connect to your database and exercise the ORDS PL/SQL APIs. We recommend you either use SQL Developer on your desktop or stay in your browser and simply use Oracle SQL Developer Web..
The preferred interface is SQL Developer Web, also known as Database Actions.
We also make using the Oauth2 workflows easy to setup and use!
Just give me a movie to watch, TL;DR
I have a 12 minute video demonstration showing a REST service in Autonmous that you can watch here.
Hi Jeff, I am trying to install ORDS on a Compute Instance on OCI, I am following the documentation:
I have tested connection from sqlcli to the autonomous database an is succesfull….
I’m kidda stuck on the part where the ords installation asks me for the administrator username:
Enter the location to store configuration data: config
Specify the database connection type to use.
Enter number for  Basic  TNS  Custom URL :2
Enter the TNS Network Alias:grupokatp_low
Enter 1 if you want to verify/install Oracle REST Data Services schema or 2 to skip this step :
Enter the database password for ORDS_PUBLIC_USER:
Requires to login with administrator privileges to verify Oracle REST Data Services schema.
Enter the administrator username:admin
Enter the database password for admin:
Connecting to database user: admin url: jdbc:oracle:thin:@grupokatp_low
java.sql.SQLSyntaxErrorException: ORA-01031: insufficient privileges
ORA-06512: at line 81
Can you lead the way please
You won’t actually do AN install or ORDS against autonomous – because ORDS is already installed there. Also, ORDS_PUBLIC_USER is already there, and you CANNOT have/know it’s password.
You’re just going to stand up the local ORDS config files, and have a pool configured to use your own ORDS_PUBLIC_USER account, aka ORDS_PUBLIC_USER2, to create your JDBC Connection pool to Autonomous.
Here’s a great blog post on the subject that goes into pretty good detail
When I am trying to use some nested json response, with a SELECT like:
select col1, col2
cursor(select col3, col4
from t2 where t2.col1 = t1.col1
) as ArtInfo
It does not return anything, but if I run the select statement standalone, it returns data.
Do you know why when I put this select statement in p_source from ords.define_service, it does not return anything? It’s like it is trying to retrieve data, without end … 2 minutes passed and nothing.
I want col3 and col4 to be displayed as a nested item of col1 and col2 (which are kind o “header” data)
The Post you refered worked!
Thanks!!! An Cheers!