SlideShare a Scribd company logo
1 of 55
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
ORDSDatabaseRESTAPI
https://oracle.com/rest
Jeff Smith
Senior Principal Product Manager
Jeff.d.smith@oracle.com || @thatjeffsmith
Database Tools, Oracle Corp
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Not Just THAT SQLDev Guy…
• Database Development Tools team
• Product manager/story teller
• Specialized Database tooling since 2001
• I bother help people online as @thatjeffsmith
• Contact me for a free remote presentation for your group/company
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Oracle
REST
Data
Services
3
Formerly Known as the APEX Listener
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Get audience sympathy/laughing early
• I’m gonna need a REST API for all of our Oracle data…
• …first thing Monday
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Your Requirements
• No connections to the DB (directly at least)
• No DB authentication (let the app/web tier handle that)
• Link driven (stateless)
• Plays nice with the rest of the apps
– Standard response/error codes
– JSON
– Well documented
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Employees Table =>
• GET
• PUT
• POST
• DELETE
• DESC
• DOCS
/ords/hr/employees
/ords/hr/employees/
/ords/hr/employees/:id
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
{JSON} or JavaScript Object Notation
• JAY-sun
• Not just for JavaScript
• Skinnier than XML
• Flexible
– Easily adapted to represent
database objects & data
• Link-friendly
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
8
Tabular
Nested
Hyperlink
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
But we never use SQL, only PL/SQL Table APIs!
• No worries!
• We auto-magically handle PL/SQL too
• RPC -> POST via HTTPS /ords/hr/procedureA
• Responses & Results (OUTs/RETURNs/REFCURSORs), in {JSON}
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Why should a DBA or PL/SQL Dev care about REST?
• RESTful web services are a way of providing interoperability between
computer systems on the Internet
• REST often treated as a Religion, BUT…
• …provides a predictable model for delivering services
• We aim for pure REST, but don’t let that pursuit get in the way of
practicality
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
REpresentational State Transfer (REST)
It relies on a stateless, client-server, cacheable communications protocol --
and in virtually all cases, the HTTP(S!) protocol is used.
REST is an architecture style for designing networked applications. The idea
is that, rather than using complex mechanisms such as CORBA, RPC or SOAP
to connect between machines, simple HTTP is used to make calls between
machines. (rest.elkstein.org)
11
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
• Small uniform set of operations: GET, POST, PUT, DELETE
(CRUD!)
• Small set of uniform status codes URLs & hyperlinks encourage
stateless behavior
• Text based protocol with simple request/response model
REST is Easy
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
• 1xx Informational responses.
• 2xx Success.
• 3xx Redirection.
• 4xx Client errors.
• 5xx Server errors.
About those Codes
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
• Model resources, not actions:
– GET /ords/hr/employees/ - GOOD
– GET /ords/hr/delete_emp/ - BAD
– DELETE /ords/hr/employees/97 - GOOD
• Uniform operations on all resources:
– GET, POST, PUT, DELETE, OPTIONS, HEAD
• Stateless requests, state transitions communicated via hyper-links.
The Architectural Style of the Web{REST}
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Resource Collection Pattern
• MASTER RESOURCE: called the Collection URI:
https://example.com/ords/hr/employees/
• DETAIL RESOURCE; called the Item URI:
https://example.com/ords/hr/employees/:id
15
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Method Purpose Classification Database Operation
GET Retrieve resource Safe, Idempotent SELECT
PUT Create or replace
resource
Idempotent MERGE, UPDATE
DELETE Delete resource Idempotent DELETE
POST Anything. Normally
create
Unsafe INSERT
The Verbs
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
• Java JEE mid tier application, e.g., WebLogic, Tomcat, Glassfish (deprecated)
– Also supported “Standalone” mode
• For input, maps/binds URI to SQL and PL/SQL
• For output, transforms results to JSON and other formats
Oracle REST Data ServicesHTTP(S) client Oracle Database
SQLMap & BindURI
JSON Transform to JSON SQL Result Set
How do we apply this Architectural Style to a DB?
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
https://host/ords/human/peeps/10
SELECT …
WHERE EMPLOYEE_ID = :id
Oracle DB
1. Browser GET request
2. Proxy connect HR, executes
‘peeps’ HANDLER code
ORDS Runs in WLS, Tomcat, or
as a standalone process
Oracle
REST
Data
Services
Anatomy of a RESTful Service Transaction
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Typical Architecture
• Standard webserver layout
• Implements Java Servlet
• Deploys to WLS, Tomcat, Glassfish
• OR Embedded Jetty (standalone)
WLS, Glassfish,
Tomcat
ORDS
Apache
Static Files
-HTML, CSS, JS
/hr/emp
JSON
Binary
HTML
…
HTTP(s) Results
JDBC
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
And it’s Easy!
I had been looking for a chance to perform a POC, so I proposed I just provide him
with a couple of web services. In under a day I had functioning
web services in place for him to consume. There’s been
refinements to them and new ones developed since then. We are now exploring
where else we could leverage this technology.
- a REAL customer talking about ORDS
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
ORDS – How do I get started???
Use SQL Developer to install & run. Use Hands On Labs to learn.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Full Command-Line Interface & PL/SQL API
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Enable a Schema
• Services are EXECUTED as the REST enabled schema USER …
• … via ORDS_PUBLIC_USER Proxy Connect
• What your session can see & do = straight forward & predictable
• Secured/Authorization outside the database
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Develop RESTFul Services: PL/SQL, GUI, or even REST
BEGIN
ORDS.ENABLE_SCHEMA(
p_enabled => TRUE,
p_schema => 'ORDS_DEMO',
p_url_mapping_type => 'BASE_PATH',
p_url_mapping_pattern => 'autodemo',
p_auto_rest_auth => FALSE);
ORDS.DEFINE_MODULE(
p_module_name => 'SPLAT',
p_base_path => '/splat/',
p_items_per_page => 25,
p_status => 'PUBLISHED',
p_comments => NULL);
ORDS.DEFINE_TEMPLATE(
p_module_name => 'SPLAT',
p_pattern => 'types',
p_priority => 0,
p_etag_type => 'HASH',
p_etag_query => NULL,
p_comments => NULL);
ORDS.DEFINE_HANDLER(
p_module_name => 'SPLAT',
p_pattern => 'types',
p_method => 'GET',
p_source_type => 'json/query',
p_items_per_page => 25,
p_mimes_allowed => '',
p_comments => NULL,
p_source =>
'select * from d_types'
);
COMMIT;
END;
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Code and No/Low Code RESTful Service Options
 No need to know Java
 Database developers (PLSQL & SQL) get started quickly
 PL/SQL API
 GUI/IDE Support (SQL Developer!)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Manual – You Define Modules/URIs/Handlers/the Code
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Automatic
 Pick the Database objects to PUBLISH
 TABLEs and VIEWs
 GET, POST, PUT, DELETE handlers avail for CRUD
 Stored Procedures, Functions, Packages (PL/SQL)
 POST handler avail for RPC
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Auto enablement of RESTful request
modules – User Interface
Exposes these operations
• Schema level Metadata
• Table Metadata
• Get ( Select )
• Query ( Filtering/Order/ASOF )
• Insert
• Update
• Delete
• Load CSV
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Update a Row
32
METHOD : PUT /:PK
REQUEST BODY : JSON
RESPONSE: 200 OK
• Location (Header)
• JSON (Body)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Remote Procedure Call over
HTTP(S) via POST
ORDS takes parameters as JSON, executes PL/SQL,
grabs output, sends back down as JSON
OUT INTEGER & SYS_REFCURSOR
{
"total_payroll": 631230,
"peeps_numbers": [
{
"id": 81,
"name": "Dummy4",
"salary": 0,
"hire_date": "2017-06-20T13:29:00Z"
},
{
"id": 65,
"name": "Bart",
"salary": 0,
"hire_date": "2017-06-20T13:29:00Z"
},
{
"id": 79,
…
}
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Execute PL/SQL TABLE API
Execute, REFCURSOR RETURN
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Ok, our boss came back with more details
• Funny pictures on the internet
• Put them in a table
• Show me a list of the funnies
• Let me see them on demand
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Scenario: Our Table
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
The RESTful Service (POST – PL/SQL Block)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
The POST Call (Postman)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://localhost:8080/ords/hr/test2/media")
.post(null)
.addHeader("content-type", "image/png")
.addHeader("title", "18.2 tease")
.addHeader("cache-control", "no-cache")
.addHeader("postman-token", "86b344ef-2aba-12e2-8788-4c316bc866e3")
.build();
Response response = client.newCall(request).execute();
The POST Call (Java)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
The POST Call (cURL)
curl -X POST 
http://localhost:8080/ords/hr/test2/media 
-H 'cache-control: no-cache’ 
-H 'content-type: image/png' 
-H 'postman-token: bf2bcb0d-8759-fc70-98ff-c3633b418dcb' 
-H 'title: 18.2 tease'
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
The Response
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
How About API to get all the images?
select title
,content_type
,id "$uri"
from gallery
order by title
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Module URI Templates
/ords/hr/employees
/ords/hr/employees/
/ords/hr/employees/:id
SQL & PLSQL
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
{Swagger}
Requirement: WELL DOCUMENTED
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Quick, Check in to Source Control!
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Mission Accomplished
• Link driven (stateless)
• Plays nice with others
– Standard response/error codes
– JSON
– Well documented
BONUS!
– Supported by Oracle
– No additional cost
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
• Disabled by default
• AUTH by user with sql dev priv or via DB
curl -X POST 
http://localhost:8080/ords/hr/_/sql 
-H 'authorization: Basic SFI6b3JhY2xl’ 
-H 'cache-control: no-cache’ 
-H 'content-type: application/sql’ 
-H 'postman-token: 23a49622-a195-cb76-0606-358f3e371cdd’ 
-d 'SELECT first_name, last_name, department_name
FROM hr.employees, hr.departments
where employees.department_id = departments.department_id'
Execute SQL via POST
New for 17.4 - _/sql/
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
ORDS is Flexible - Security
Caveats
• Almost all dev/demo/blog is done with security off & with HTTP
• Always, always, always secure REST services and run with HTTPS
See Scott Spendolini’s slides on Securing your REST APIs
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
First Party Authentication
• Oracle REST Data Services specific solution
• Only available to the author of the API, application must be deployed on
same origin as API
• https://example.com/api & https://example.com/app ✓
• https://api.example.com & https://app.example.com ✗
• User enters credentials in sign-in form, ORDS issues cookie, cookie is only
validated by ORDS if the request is determined to originate from the from
the same origin as the REST Service.
49
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
About OAuth 2.0
• IETF standard for securing access to REST APIs
• Comes in two forms:
• Two Legged - For Business to Business, server to server applications
• Example: Sync HR data between internal applications
• Three Legged - For Business to Consumer, app to end-user applications
• Example: Share subset of HR data with external benefits provider after
employee approves access.
• Third party registers client, issued credentials, uses credentials to
acquire access token, uses access token with request to prove
authorization
50
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
External Authentication
• Comes in many flavors, for example:
• Oracle Access Manager - SSO cookie at Oracle OHS server level
authenticates users stored in Oracle Identity Manager
• ORDS does not perform authentication, just authorization.
• Usually relies on HTTP cookies, need to restrict CORS allowed Origins to
avoid CSRF
51
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Coming Later This Year
• Available for On-Premises and Oracle Cloud DB Services
• Supports 11gR2 and higher
• Supports ‘Classic’ & Multitenant Architectures
• Supports RAC & Exadata
• Optional
REST API for managing your Oracle Database
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
In the year 2018…REST APIs for the Database!
Listener – Start, stop, status
Database Ops
Start, stop, alerts, INIT params, rotate TDE keys
PDB Ops
Start, stop, create, clone, drop, plug, unplug
OS Stats
Memory, cpu, processes
Reporting
Backups, sessions, waits, ASH, AWR, locks, V$LONG_OPS, RTSM
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Clone a PDB, Get a list of Wait Events, Read the Alert Log…
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Plus SQL Developer Web
• Optional!
• 11gR2 and higher
• DBA screens
• SQL Worksheet
– Run SQL, scripts, explain plan, autotrace, SQL history, formatter, insight
– Create & Edit TABLE dialogs
• RE Schemas to a Relational Diagram/DD Reports
Cloud First (Live in DBaaS NOW), On-Premises Later this Year
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
SQLDev Web – the Demo
Runs out of ORDS
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Thanks! Questions?
Resources
• Blogs
• Videos
• GitHub Examples
• Articles
– UKOUG Scene Why REST, and What’s in it or Me?
– Oracle Mag AUTO REST & REST Enabled SQL

More Related Content

What's hot

An Introduction to ReactJS
An Introduction to ReactJSAn Introduction to ReactJS
An Introduction to ReactJSAll Things Open
 
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020Johnny Sung
 
React js programming concept
React js programming conceptReact js programming concept
React js programming conceptTariqul islam
 
Angular Data Binding
Angular Data BindingAngular Data Binding
Angular Data BindingDuy Khanh
 
Best Practice-React
Best Practice-ReactBest Practice-React
Best Practice-ReactYang Yang
 
How native is React Native? | React Native vs Native App Development
How native is React Native? | React Native vs Native App DevelopmentHow native is React Native? | React Native vs Native App Development
How native is React Native? | React Native vs Native App DevelopmentDevathon
 
Oracle APEX Social Login
Oracle APEX Social LoginOracle APEX Social Login
Oracle APEX Social Loginmsewtz
 
Redux training
Redux trainingRedux training
Redux trainingdasersoft
 
React state
React  stateReact  state
React stateDucat
 
Portable Streaming Pipelines with Apache Beam
Portable Streaming Pipelines with Apache BeamPortable Streaming Pipelines with Apache Beam
Portable Streaming Pipelines with Apache Beamconfluent
 
Introduction to react-query. A Redux alternative? (Nikos Kleidis, Front End D...
Introduction to react-query. A Redux alternative? (Nikos Kleidis, Front End D...Introduction to react-query. A Redux alternative? (Nikos Kleidis, Front End D...
Introduction to react-query. A Redux alternative? (Nikos Kleidis, Front End D...GreeceJS
 
Introduction to React JS for beginners
Introduction to React JS for beginners Introduction to React JS for beginners
Introduction to React JS for beginners Varun Raj
 

What's hot (20)

An Introduction to ReactJS
An Introduction to ReactJSAn Introduction to ReactJS
An Introduction to ReactJS
 
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020
 
React js for beginners
React js for beginnersReact js for beginners
React js for beginners
 
React js programming concept
React js programming conceptReact js programming concept
React js programming concept
 
Angular Data Binding
Angular Data BindingAngular Data Binding
Angular Data Binding
 
Best Practice-React
Best Practice-ReactBest Practice-React
Best Practice-React
 
How native is React Native? | React Native vs Native App Development
How native is React Native? | React Native vs Native App DevelopmentHow native is React Native? | React Native vs Native App Development
How native is React Native? | React Native vs Native App Development
 
Oracle APEX Social Login
Oracle APEX Social LoginOracle APEX Social Login
Oracle APEX Social Login
 
Redux training
Redux trainingRedux training
Redux training
 
React state
React  stateReact  state
React state
 
Workshop React.js
Workshop React.jsWorkshop React.js
Workshop React.js
 
SQL
SQLSQL
SQL
 
Introduction to Redux
Introduction to ReduxIntroduction to Redux
Introduction to Redux
 
An Introduction to Redux
An Introduction to ReduxAn Introduction to Redux
An Introduction to Redux
 
ActiveRecord & ARel
ActiveRecord & ARelActiveRecord & ARel
ActiveRecord & ARel
 
Portable Streaming Pipelines with Apache Beam
Portable Streaming Pipelines with Apache BeamPortable Streaming Pipelines with Apache Beam
Portable Streaming Pipelines with Apache Beam
 
Tech Talk on ReactJS
Tech Talk on ReactJSTech Talk on ReactJS
Tech Talk on ReactJS
 
Introduction to react-query. A Redux alternative? (Nikos Kleidis, Front End D...
Introduction to react-query. A Redux alternative? (Nikos Kleidis, Front End D...Introduction to react-query. A Redux alternative? (Nikos Kleidis, Front End D...
Introduction to react-query. A Redux alternative? (Nikos Kleidis, Front End D...
 
React & Redux
React & ReduxReact & Redux
React & Redux
 
Introduction to React JS for beginners
Introduction to React JS for beginners Introduction to React JS for beginners
Introduction to React JS for beginners
 

Similar to REST Enabling your Oracle Database (2018 Update)

Oracle Office Hours - Exposing REST services with APEX and ORDS
Oracle Office Hours - Exposing REST services with APEX and ORDSOracle Office Hours - Exposing REST services with APEX and ORDS
Oracle Office Hours - Exposing REST services with APEX and ORDSDoug Gault
 
What's New in Oracle SQL Developer for 2018
What's New in Oracle SQL Developer for 2018What's New in Oracle SQL Developer for 2018
What's New in Oracle SQL Developer for 2018Jeff Smith
 
Oracle database 12c_and_DevOps
Oracle database 12c_and_DevOpsOracle database 12c_and_DevOps
Oracle database 12c_and_DevOpsMaria Colgan
 
Kellyn Pot'Vin-Gorman - Awr and Ash
Kellyn Pot'Vin-Gorman - Awr and AshKellyn Pot'Vin-Gorman - Awr and Ash
Kellyn Pot'Vin-Gorman - Awr and Ashgaougorg
 
NoSQL and SQL - Why Choose? Enjoy the best of both worlds with MySQL
NoSQL and SQL - Why Choose? Enjoy the best of both worlds with MySQLNoSQL and SQL - Why Choose? Enjoy the best of both worlds with MySQL
NoSQL and SQL - Why Choose? Enjoy the best of both worlds with MySQLAndrew Morgan
 
Oracle SQL Developer for SQL Server?
Oracle SQL Developer for SQL Server?Oracle SQL Developer for SQL Server?
Oracle SQL Developer for SQL Server?Jeff Smith
 
Leverage integration cloud_service_for_ebs_
Leverage integration cloud_service_for_ebs_Leverage integration cloud_service_for_ebs_
Leverage integration cloud_service_for_ebs_aioughydchapter
 
Oracle Database 12c Feature Support in Oracle SQL Developer
Oracle Database 12c Feature Support in Oracle SQL DeveloperOracle Database 12c Feature Support in Oracle SQL Developer
Oracle Database 12c Feature Support in Oracle SQL DeveloperJeff Smith
 
Oracle SQL Developer for the DBA
Oracle SQL Developer for the DBAOracle SQL Developer for the DBA
Oracle SQL Developer for the DBAJeff Smith
 
Big Data Management System: Smart SQL Processing Across Hadoop and your Data ...
Big Data Management System: Smart SQL Processing Across Hadoop and your Data ...Big Data Management System: Smart SQL Processing Across Hadoop and your Data ...
Big Data Management System: Smart SQL Processing Across Hadoop and your Data ...DataWorks Summit
 
Debugging PL/SQL from your APEX Applications with Oracle SQL Developer
Debugging PL/SQL from your APEX Applications with Oracle SQL DeveloperDebugging PL/SQL from your APEX Applications with Oracle SQL Developer
Debugging PL/SQL from your APEX Applications with Oracle SQL DeveloperJeff Smith
 
RESTful Services for your Oracle Autonomous Database
RESTful Services for your Oracle Autonomous DatabaseRESTful Services for your Oracle Autonomous Database
RESTful Services for your Oracle Autonomous DatabaseJeff Smith
 
MySQL Cluster as Transactional NoSQL (KVS)
MySQL Cluster as Transactional NoSQL (KVS)MySQL Cluster as Transactional NoSQL (KVS)
MySQL Cluster as Transactional NoSQL (KVS)Ryusuke Kajiyama
 
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...Marco Antonio Maciel
 
SQLcl overview - A new Command Line Interface for Oracle Database
SQLcl overview - A new Command Line Interface for Oracle DatabaseSQLcl overview - A new Command Line Interface for Oracle Database
SQLcl overview - A new Command Line Interface for Oracle DatabaseJeff Smith
 
Pennsylvania Banner User Group Webinar: Oracle SQL Developer Tips & Tricks
Pennsylvania Banner User Group Webinar: Oracle SQL Developer Tips & TricksPennsylvania Banner User Group Webinar: Oracle SQL Developer Tips & Tricks
Pennsylvania Banner User Group Webinar: Oracle SQL Developer Tips & TricksJeff Smith
 

Similar to REST Enabling your Oracle Database (2018 Update) (20)

Oracle Office Hours - Exposing REST services with APEX and ORDS
Oracle Office Hours - Exposing REST services with APEX and ORDSOracle Office Hours - Exposing REST services with APEX and ORDS
Oracle Office Hours - Exposing REST services with APEX and ORDS
 
AWR and ASH in an EM12c World
AWR and ASH in an EM12c WorldAWR and ASH in an EM12c World
AWR and ASH in an EM12c World
 
AWR and ASH Deep Dive
AWR and ASH Deep DiveAWR and ASH Deep Dive
AWR and ASH Deep Dive
 
What's New in Oracle SQL Developer for 2018
What's New in Oracle SQL Developer for 2018What's New in Oracle SQL Developer for 2018
What's New in Oracle SQL Developer for 2018
 
Oracle database 12c_and_DevOps
Oracle database 12c_and_DevOpsOracle database 12c_and_DevOps
Oracle database 12c_and_DevOps
 
Kellyn Pot'Vin-Gorman - Awr and Ash
Kellyn Pot'Vin-Gorman - Awr and AshKellyn Pot'Vin-Gorman - Awr and Ash
Kellyn Pot'Vin-Gorman - Awr and Ash
 
NoSQL and SQL - Why Choose? Enjoy the best of both worlds with MySQL
NoSQL and SQL - Why Choose? Enjoy the best of both worlds with MySQLNoSQL and SQL - Why Choose? Enjoy the best of both worlds with MySQL
NoSQL and SQL - Why Choose? Enjoy the best of both worlds with MySQL
 
Oracle SQL Developer for SQL Server?
Oracle SQL Developer for SQL Server?Oracle SQL Developer for SQL Server?
Oracle SQL Developer for SQL Server?
 
Leverage integration cloud_service_for_ebs_
Leverage integration cloud_service_for_ebs_Leverage integration cloud_service_for_ebs_
Leverage integration cloud_service_for_ebs_
 
Oracle Database 12c Feature Support in Oracle SQL Developer
Oracle Database 12c Feature Support in Oracle SQL DeveloperOracle Database 12c Feature Support in Oracle SQL Developer
Oracle Database 12c Feature Support in Oracle SQL Developer
 
Oracle SQL Developer for the DBA
Oracle SQL Developer for the DBAOracle SQL Developer for the DBA
Oracle SQL Developer for the DBA
 
Big Data Management System: Smart SQL Processing Across Hadoop and your Data ...
Big Data Management System: Smart SQL Processing Across Hadoop and your Data ...Big Data Management System: Smart SQL Processing Across Hadoop and your Data ...
Big Data Management System: Smart SQL Processing Across Hadoop and your Data ...
 
Debugging PL/SQL from your APEX Applications with Oracle SQL Developer
Debugging PL/SQL from your APEX Applications with Oracle SQL DeveloperDebugging PL/SQL from your APEX Applications with Oracle SQL Developer
Debugging PL/SQL from your APEX Applications with Oracle SQL Developer
 
RESTful Services for your Oracle Autonomous Database
RESTful Services for your Oracle Autonomous DatabaseRESTful Services for your Oracle Autonomous Database
RESTful Services for your Oracle Autonomous Database
 
JAX-RS.next
JAX-RS.nextJAX-RS.next
JAX-RS.next
 
UKOUG
UKOUG UKOUG
UKOUG
 
MySQL Cluster as Transactional NoSQL (KVS)
MySQL Cluster as Transactional NoSQL (KVS)MySQL Cluster as Transactional NoSQL (KVS)
MySQL Cluster as Transactional NoSQL (KVS)
 
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
 
SQLcl overview - A new Command Line Interface for Oracle Database
SQLcl overview - A new Command Line Interface for Oracle DatabaseSQLcl overview - A new Command Line Interface for Oracle Database
SQLcl overview - A new Command Line Interface for Oracle Database
 
Pennsylvania Banner User Group Webinar: Oracle SQL Developer Tips & Tricks
Pennsylvania Banner User Group Webinar: Oracle SQL Developer Tips & TricksPennsylvania Banner User Group Webinar: Oracle SQL Developer Tips & Tricks
Pennsylvania Banner User Group Webinar: Oracle SQL Developer Tips & Tricks
 

More from Jeff Smith

Oracle REST Data Services: POUG Edition
Oracle REST Data Services: POUG EditionOracle REST Data Services: POUG Edition
Oracle REST Data Services: POUG EditionJeff Smith
 
Oracle SQL Developer Tips and Tricks: Data Edition
Oracle SQL Developer Tips and Tricks: Data EditionOracle SQL Developer Tips and Tricks: Data Edition
Oracle SQL Developer Tips and Tricks: Data EditionJeff Smith
 
Change Management for Oracle Database with SQLcl
Change Management for Oracle Database with SQLcl Change Management for Oracle Database with SQLcl
Change Management for Oracle Database with SQLcl Jeff Smith
 
Oracle SQLcl: Formatting your Query Results
Oracle SQLcl: Formatting your Query ResultsOracle SQLcl: Formatting your Query Results
Oracle SQLcl: Formatting your Query ResultsJeff Smith
 
Oracle SQL Developer Data Modeler - for SQL Server
Oracle SQL Developer Data Modeler - for SQL ServerOracle SQL Developer Data Modeler - for SQL Server
Oracle SQL Developer Data Modeler - for SQL ServerJeff Smith
 
Oracle SQL Developer: You're Doing it Wrong!
Oracle SQL Developer: You're Doing it Wrong!Oracle SQL Developer: You're Doing it Wrong!
Oracle SQL Developer: You're Doing it Wrong!Jeff Smith
 
Social Media - Why a Database Person Should Care
Social Media  - Why a Database Person Should CareSocial Media  - Why a Database Person Should Care
Social Media - Why a Database Person Should CareJeff Smith
 
Oracle SQL Developer Reports
Oracle SQL Developer ReportsOracle SQL Developer Reports
Oracle SQL Developer ReportsJeff Smith
 
Oracle SQL Developer: 3 Features You're Not Using But Should Be
Oracle SQL Developer: 3 Features You're Not Using But Should BeOracle SQL Developer: 3 Features You're Not Using But Should Be
Oracle SQL Developer: 3 Features You're Not Using But Should BeJeff Smith
 
PL/SQL All the Things in Oracle SQL Developer
PL/SQL All the Things in Oracle SQL DeveloperPL/SQL All the Things in Oracle SQL Developer
PL/SQL All the Things in Oracle SQL DeveloperJeff Smith
 
Debugging PL/SQL with Oracle SQL Developer
Debugging PL/SQL with Oracle SQL DeveloperDebugging PL/SQL with Oracle SQL Developer
Debugging PL/SQL with Oracle SQL DeveloperJeff Smith
 
All of the Performance Tuning Features in Oracle SQL Developer
All of the Performance Tuning Features in Oracle SQL DeveloperAll of the Performance Tuning Features in Oracle SQL Developer
All of the Performance Tuning Features in Oracle SQL DeveloperJeff Smith
 
If You Oracle Then You Should Twitter Too
If You Oracle Then You Should Twitter TooIf You Oracle Then You Should Twitter Too
If You Oracle Then You Should Twitter TooJeff Smith
 
My Favorite Oracle SQL Developer Data Modeler Features
My Favorite Oracle SQL Developer Data Modeler FeaturesMy Favorite Oracle SQL Developer Data Modeler Features
My Favorite Oracle SQL Developer Data Modeler FeaturesJeff Smith
 
Oracle SQL Developer Data Modeler - Version Control Your Designs
Oracle SQL Developer Data Modeler - Version Control Your DesignsOracle SQL Developer Data Modeler - Version Control Your Designs
Oracle SQL Developer Data Modeler - Version Control Your DesignsJeff Smith
 
Dimensional modeling in oracle sql developer
Dimensional modeling in oracle sql developerDimensional modeling in oracle sql developer
Dimensional modeling in oracle sql developerJeff Smith
 
Oracle SQL Developer version 4.0 New Features Overview
Oracle SQL Developer version 4.0 New Features OverviewOracle SQL Developer version 4.0 New Features Overview
Oracle SQL Developer version 4.0 New Features OverviewJeff Smith
 
Oracle SQL Developer Top 10 Tips & Tricks
Oracle SQL Developer Top 10 Tips & TricksOracle SQL Developer Top 10 Tips & Tricks
Oracle SQL Developer Top 10 Tips & TricksJeff Smith
 
Oracle SQL Developer Tips & Tricks
Oracle SQL Developer Tips & TricksOracle SQL Developer Tips & Tricks
Oracle SQL Developer Tips & TricksJeff Smith
 

More from Jeff Smith (19)

Oracle REST Data Services: POUG Edition
Oracle REST Data Services: POUG EditionOracle REST Data Services: POUG Edition
Oracle REST Data Services: POUG Edition
 
Oracle SQL Developer Tips and Tricks: Data Edition
Oracle SQL Developer Tips and Tricks: Data EditionOracle SQL Developer Tips and Tricks: Data Edition
Oracle SQL Developer Tips and Tricks: Data Edition
 
Change Management for Oracle Database with SQLcl
Change Management for Oracle Database with SQLcl Change Management for Oracle Database with SQLcl
Change Management for Oracle Database with SQLcl
 
Oracle SQLcl: Formatting your Query Results
Oracle SQLcl: Formatting your Query ResultsOracle SQLcl: Formatting your Query Results
Oracle SQLcl: Formatting your Query Results
 
Oracle SQL Developer Data Modeler - for SQL Server
Oracle SQL Developer Data Modeler - for SQL ServerOracle SQL Developer Data Modeler - for SQL Server
Oracle SQL Developer Data Modeler - for SQL Server
 
Oracle SQL Developer: You're Doing it Wrong!
Oracle SQL Developer: You're Doing it Wrong!Oracle SQL Developer: You're Doing it Wrong!
Oracle SQL Developer: You're Doing it Wrong!
 
Social Media - Why a Database Person Should Care
Social Media  - Why a Database Person Should CareSocial Media  - Why a Database Person Should Care
Social Media - Why a Database Person Should Care
 
Oracle SQL Developer Reports
Oracle SQL Developer ReportsOracle SQL Developer Reports
Oracle SQL Developer Reports
 
Oracle SQL Developer: 3 Features You're Not Using But Should Be
Oracle SQL Developer: 3 Features You're Not Using But Should BeOracle SQL Developer: 3 Features You're Not Using But Should Be
Oracle SQL Developer: 3 Features You're Not Using But Should Be
 
PL/SQL All the Things in Oracle SQL Developer
PL/SQL All the Things in Oracle SQL DeveloperPL/SQL All the Things in Oracle SQL Developer
PL/SQL All the Things in Oracle SQL Developer
 
Debugging PL/SQL with Oracle SQL Developer
Debugging PL/SQL with Oracle SQL DeveloperDebugging PL/SQL with Oracle SQL Developer
Debugging PL/SQL with Oracle SQL Developer
 
All of the Performance Tuning Features in Oracle SQL Developer
All of the Performance Tuning Features in Oracle SQL DeveloperAll of the Performance Tuning Features in Oracle SQL Developer
All of the Performance Tuning Features in Oracle SQL Developer
 
If You Oracle Then You Should Twitter Too
If You Oracle Then You Should Twitter TooIf You Oracle Then You Should Twitter Too
If You Oracle Then You Should Twitter Too
 
My Favorite Oracle SQL Developer Data Modeler Features
My Favorite Oracle SQL Developer Data Modeler FeaturesMy Favorite Oracle SQL Developer Data Modeler Features
My Favorite Oracle SQL Developer Data Modeler Features
 
Oracle SQL Developer Data Modeler - Version Control Your Designs
Oracle SQL Developer Data Modeler - Version Control Your DesignsOracle SQL Developer Data Modeler - Version Control Your Designs
Oracle SQL Developer Data Modeler - Version Control Your Designs
 
Dimensional modeling in oracle sql developer
Dimensional modeling in oracle sql developerDimensional modeling in oracle sql developer
Dimensional modeling in oracle sql developer
 
Oracle SQL Developer version 4.0 New Features Overview
Oracle SQL Developer version 4.0 New Features OverviewOracle SQL Developer version 4.0 New Features Overview
Oracle SQL Developer version 4.0 New Features Overview
 
Oracle SQL Developer Top 10 Tips & Tricks
Oracle SQL Developer Top 10 Tips & TricksOracle SQL Developer Top 10 Tips & Tricks
Oracle SQL Developer Top 10 Tips & Tricks
 
Oracle SQL Developer Tips & Tricks
Oracle SQL Developer Tips & TricksOracle SQL Developer Tips & Tricks
Oracle SQL Developer Tips & Tricks
 

Recently uploaded

Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 

Recently uploaded (20)

Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 

REST Enabling your Oracle Database (2018 Update)

  • 1. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | ORDSDatabaseRESTAPI https://oracle.com/rest Jeff Smith Senior Principal Product Manager Jeff.d.smith@oracle.com || @thatjeffsmith Database Tools, Oracle Corp
  • 2. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Not Just THAT SQLDev Guy… • Database Development Tools team • Product manager/story teller • Specialized Database tooling since 2001 • I bother help people online as @thatjeffsmith • Contact me for a free remote presentation for your group/company
  • 3. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Oracle REST Data Services 3 Formerly Known as the APEX Listener
  • 4. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Get audience sympathy/laughing early • I’m gonna need a REST API for all of our Oracle data… • …first thing Monday
  • 5. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Your Requirements • No connections to the DB (directly at least) • No DB authentication (let the app/web tier handle that) • Link driven (stateless) • Plays nice with the rest of the apps – Standard response/error codes – JSON – Well documented
  • 6. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Employees Table => • GET • PUT • POST • DELETE • DESC • DOCS /ords/hr/employees /ords/hr/employees/ /ords/hr/employees/:id
  • 7. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | {JSON} or JavaScript Object Notation • JAY-sun • Not just for JavaScript • Skinnier than XML • Flexible – Easily adapted to represent database objects & data • Link-friendly
  • 8. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | 8 Tabular Nested Hyperlink
  • 9. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | But we never use SQL, only PL/SQL Table APIs! • No worries! • We auto-magically handle PL/SQL too • RPC -> POST via HTTPS /ords/hr/procedureA • Responses & Results (OUTs/RETURNs/REFCURSORs), in {JSON}
  • 10. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Why should a DBA or PL/SQL Dev care about REST? • RESTful web services are a way of providing interoperability between computer systems on the Internet • REST often treated as a Religion, BUT… • …provides a predictable model for delivering services • We aim for pure REST, but don’t let that pursuit get in the way of practicality
  • 11. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | REpresentational State Transfer (REST) It relies on a stateless, client-server, cacheable communications protocol -- and in virtually all cases, the HTTP(S!) protocol is used. REST is an architecture style for designing networked applications. The idea is that, rather than using complex mechanisms such as CORBA, RPC or SOAP to connect between machines, simple HTTP is used to make calls between machines. (rest.elkstein.org) 11
  • 12. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | • Small uniform set of operations: GET, POST, PUT, DELETE (CRUD!) • Small set of uniform status codes URLs & hyperlinks encourage stateless behavior • Text based protocol with simple request/response model REST is Easy
  • 13. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | • 1xx Informational responses. • 2xx Success. • 3xx Redirection. • 4xx Client errors. • 5xx Server errors. About those Codes
  • 14. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | • Model resources, not actions: – GET /ords/hr/employees/ - GOOD – GET /ords/hr/delete_emp/ - BAD – DELETE /ords/hr/employees/97 - GOOD • Uniform operations on all resources: – GET, POST, PUT, DELETE, OPTIONS, HEAD • Stateless requests, state transitions communicated via hyper-links. The Architectural Style of the Web{REST}
  • 15. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Resource Collection Pattern • MASTER RESOURCE: called the Collection URI: https://example.com/ords/hr/employees/ • DETAIL RESOURCE; called the Item URI: https://example.com/ords/hr/employees/:id 15
  • 16. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Method Purpose Classification Database Operation GET Retrieve resource Safe, Idempotent SELECT PUT Create or replace resource Idempotent MERGE, UPDATE DELETE Delete resource Idempotent DELETE POST Anything. Normally create Unsafe INSERT The Verbs
  • 17. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | • Java JEE mid tier application, e.g., WebLogic, Tomcat, Glassfish (deprecated) – Also supported “Standalone” mode • For input, maps/binds URI to SQL and PL/SQL • For output, transforms results to JSON and other formats Oracle REST Data ServicesHTTP(S) client Oracle Database SQLMap & BindURI JSON Transform to JSON SQL Result Set How do we apply this Architectural Style to a DB?
  • 18. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | https://host/ords/human/peeps/10 SELECT … WHERE EMPLOYEE_ID = :id Oracle DB 1. Browser GET request 2. Proxy connect HR, executes ‘peeps’ HANDLER code ORDS Runs in WLS, Tomcat, or as a standalone process Oracle REST Data Services Anatomy of a RESTful Service Transaction
  • 19. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Typical Architecture • Standard webserver layout • Implements Java Servlet • Deploys to WLS, Tomcat, Glassfish • OR Embedded Jetty (standalone) WLS, Glassfish, Tomcat ORDS Apache Static Files -HTML, CSS, JS /hr/emp JSON Binary HTML … HTTP(s) Results JDBC
  • 20. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | And it’s Easy! I had been looking for a chance to perform a POC, so I proposed I just provide him with a couple of web services. In under a day I had functioning web services in place for him to consume. There’s been refinements to them and new ones developed since then. We are now exploring where else we could leverage this technology. - a REAL customer talking about ORDS
  • 21. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | ORDS – How do I get started??? Use SQL Developer to install & run. Use Hands On Labs to learn.
  • 22. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Full Command-Line Interface & PL/SQL API
  • 23. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Enable a Schema • Services are EXECUTED as the REST enabled schema USER … • … via ORDS_PUBLIC_USER Proxy Connect • What your session can see & do = straight forward & predictable • Secured/Authorization outside the database
  • 24. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Develop RESTFul Services: PL/SQL, GUI, or even REST BEGIN ORDS.ENABLE_SCHEMA( p_enabled => TRUE, p_schema => 'ORDS_DEMO', p_url_mapping_type => 'BASE_PATH', p_url_mapping_pattern => 'autodemo', p_auto_rest_auth => FALSE); ORDS.DEFINE_MODULE( p_module_name => 'SPLAT', p_base_path => '/splat/', p_items_per_page => 25, p_status => 'PUBLISHED', p_comments => NULL); ORDS.DEFINE_TEMPLATE( p_module_name => 'SPLAT', p_pattern => 'types', p_priority => 0, p_etag_type => 'HASH', p_etag_query => NULL, p_comments => NULL); ORDS.DEFINE_HANDLER( p_module_name => 'SPLAT', p_pattern => 'types', p_method => 'GET', p_source_type => 'json/query', p_items_per_page => 25, p_mimes_allowed => '', p_comments => NULL, p_source => 'select * from d_types' ); COMMIT; END;
  • 25. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Code and No/Low Code RESTful Service Options  No need to know Java  Database developers (PLSQL & SQL) get started quickly  PL/SQL API  GUI/IDE Support (SQL Developer!)
  • 26. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Manual – You Define Modules/URIs/Handlers/the Code
  • 27. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Automatic  Pick the Database objects to PUBLISH  TABLEs and VIEWs  GET, POST, PUT, DELETE handlers avail for CRUD  Stored Procedures, Functions, Packages (PL/SQL)  POST handler avail for RPC
  • 28. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
  • 29. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Auto enablement of RESTful request modules – User Interface Exposes these operations • Schema level Metadata • Table Metadata • Get ( Select ) • Query ( Filtering/Order/ASOF ) • Insert • Update • Delete • Load CSV
  • 30. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Update a Row 32 METHOD : PUT /:PK REQUEST BODY : JSON RESPONSE: 200 OK • Location (Header) • JSON (Body)
  • 31. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Remote Procedure Call over HTTP(S) via POST ORDS takes parameters as JSON, executes PL/SQL, grabs output, sends back down as JSON OUT INTEGER & SYS_REFCURSOR { "total_payroll": 631230, "peeps_numbers": [ { "id": 81, "name": "Dummy4", "salary": 0, "hire_date": "2017-06-20T13:29:00Z" }, { "id": 65, "name": "Bart", "salary": 0, "hire_date": "2017-06-20T13:29:00Z" }, { "id": 79, … }
  • 32. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Execute PL/SQL TABLE API Execute, REFCURSOR RETURN
  • 33. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Ok, our boss came back with more details • Funny pictures on the internet • Put them in a table • Show me a list of the funnies • Let me see them on demand
  • 34. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Scenario: Our Table
  • 35. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | The RESTful Service (POST – PL/SQL Block)
  • 36. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | The POST Call (Postman)
  • 37. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("http://localhost:8080/ords/hr/test2/media") .post(null) .addHeader("content-type", "image/png") .addHeader("title", "18.2 tease") .addHeader("cache-control", "no-cache") .addHeader("postman-token", "86b344ef-2aba-12e2-8788-4c316bc866e3") .build(); Response response = client.newCall(request).execute(); The POST Call (Java)
  • 38. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | The POST Call (cURL) curl -X POST http://localhost:8080/ords/hr/test2/media -H 'cache-control: no-cache’ -H 'content-type: image/png' -H 'postman-token: bf2bcb0d-8759-fc70-98ff-c3633b418dcb' -H 'title: 18.2 tease'
  • 39. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | The Response
  • 40. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | How About API to get all the images? select title ,content_type ,id "$uri" from gallery order by title
  • 41. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Module URI Templates /ords/hr/employees /ords/hr/employees/ /ords/hr/employees/:id SQL & PLSQL
  • 42. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | {Swagger} Requirement: WELL DOCUMENTED
  • 43. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Quick, Check in to Source Control!
  • 44. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Mission Accomplished • Link driven (stateless) • Plays nice with others – Standard response/error codes – JSON – Well documented BONUS! – Supported by Oracle – No additional cost
  • 45. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | • Disabled by default • AUTH by user with sql dev priv or via DB curl -X POST http://localhost:8080/ords/hr/_/sql -H 'authorization: Basic SFI6b3JhY2xl’ -H 'cache-control: no-cache’ -H 'content-type: application/sql’ -H 'postman-token: 23a49622-a195-cb76-0606-358f3e371cdd’ -d 'SELECT first_name, last_name, department_name FROM hr.employees, hr.departments where employees.department_id = departments.department_id' Execute SQL via POST New for 17.4 - _/sql/
  • 46. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | ORDS is Flexible - Security Caveats • Almost all dev/demo/blog is done with security off & with HTTP • Always, always, always secure REST services and run with HTTPS See Scott Spendolini’s slides on Securing your REST APIs
  • 47. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | First Party Authentication • Oracle REST Data Services specific solution • Only available to the author of the API, application must be deployed on same origin as API • https://example.com/api & https://example.com/app ✓ • https://api.example.com & https://app.example.com ✗ • User enters credentials in sign-in form, ORDS issues cookie, cookie is only validated by ORDS if the request is determined to originate from the from the same origin as the REST Service. 49
  • 48. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | About OAuth 2.0 • IETF standard for securing access to REST APIs • Comes in two forms: • Two Legged - For Business to Business, server to server applications • Example: Sync HR data between internal applications • Three Legged - For Business to Consumer, app to end-user applications • Example: Share subset of HR data with external benefits provider after employee approves access. • Third party registers client, issued credentials, uses credentials to acquire access token, uses access token with request to prove authorization 50
  • 49. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | External Authentication • Comes in many flavors, for example: • Oracle Access Manager - SSO cookie at Oracle OHS server level authenticates users stored in Oracle Identity Manager • ORDS does not perform authentication, just authorization. • Usually relies on HTTP cookies, need to restrict CORS allowed Origins to avoid CSRF 51
  • 50. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Coming Later This Year • Available for On-Premises and Oracle Cloud DB Services • Supports 11gR2 and higher • Supports ‘Classic’ & Multitenant Architectures • Supports RAC & Exadata • Optional REST API for managing your Oracle Database
  • 51. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | In the year 2018…REST APIs for the Database! Listener – Start, stop, status Database Ops Start, stop, alerts, INIT params, rotate TDE keys PDB Ops Start, stop, create, clone, drop, plug, unplug OS Stats Memory, cpu, processes Reporting Backups, sessions, waits, ASH, AWR, locks, V$LONG_OPS, RTSM
  • 52. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Clone a PDB, Get a list of Wait Events, Read the Alert Log…
  • 53. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Plus SQL Developer Web • Optional! • 11gR2 and higher • DBA screens • SQL Worksheet – Run SQL, scripts, explain plan, autotrace, SQL history, formatter, insight – Create & Edit TABLE dialogs • RE Schemas to a Relational Diagram/DD Reports Cloud First (Live in DBaaS NOW), On-Premises Later this Year
  • 54. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | SQLDev Web – the Demo Runs out of ORDS
  • 55. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Thanks! Questions? Resources • Blogs • Videos • GitHub Examples • Articles – UKOUG Scene Why REST, and What’s in it or Me? – Oracle Mag AUTO REST & REST Enabled SQL

Editor's Notes

  1. There have been many many remote procedure call/distributed communication protocols. Many have been very deeply specified with thousands of pages of specifications, but in the end the industry moved away from these protocols to a much looser concept. So loose it cannot even deemed a protocol, rather REST is referred to as an architectural style. REST won not by being the most advanced, or the most capable, or the most efficient, but by being the easiest to get to grips with. Which is both a blessing and a curse. The world is full of less than optimal REST APIs. Because REST is so approachable folks quickly move to building and shipping APIs without considering some of the more thorny issues that every distributed application has to deal with How to manage concurrency, how to deal with lost updates, co-ordinate transactions How to deal with unavailability How to deal with massive scale Oracle REST Data Services is designed to deal with many of these issues, we’ve done the hard thinking and chosen approaches to deal with these issues so developers using ORDS don’t need to worry about them so much. I want to draw a comparison between REST and another foundational technology, UNIX. When I think of UNIX I picture big air conditioned rooms in data centres full of big iron servers. But that’s not the reality of UNIX today. It’s not just data centres and backend servers. The reality is UNIX is all around you, you wear it on your wrist, you carry it in your pocket, it powers the movies you watch when sat on an aeroplane, it controls the car you drive, it is literally everywhere. It is part of the fabric of our reality, but it’s not something out there in front of you. It’s a building block, something atop which much of the rest of the technology in our lives is built upon. I’m sure everyone in this room knows how to get around in UNIX, I’m sure that wasn’t always the case, there was a time when all I knew was MS-DOS and Windows. UNIX was a foreign land, and even seemed like something that was fading away under the march of Windows, but that time was so long ago and now I can’t picture a future where knowing and being comfortable using UNIX won’t be a valuable skill for at least another decade or two. I feel REST is following a similar trajectory. It is almost as old as the HTTP protocol itself, and it’s popularity and ubiquity has taken a considerable amount of time to build, but now that it’s value has been recognised, I don’t see it’s utility being displaced until the next paradigm shift in computing technology occurs. It has become one of the building blocks we take for granted. And thus everyone needs to know and understand REST and more importantly every piece of technology involved in distributed computing needs to be a good and competent REST citizen.
  2. A typical REST resource doesn’t just contain the tabular data typical of a relational model. It will often also include: nested data structures (e.g. categories above) Hyperlinks (e.g. the replies link above)
  3. There have been many many remote procedure call/distributed communication protocols. Many have been very deeply specified with thousands of pages of specifications, but in the end the industry moved away from these protocols to a much looser concept. So loose it cannot even deemed a protocol, rather REST is referred to as an architectural style. REST won not by being the most advanced, or the most capable, or the most efficient, but by being the easiest to get to grips with. Which is both a blessing and a curse. The world is full of less than optimal REST APIs. Because REST is so approachable folks quickly move to building and shipping APIs without considering some of the more thorny issues that every distributed application has to deal with How to manage concurrency, how to deal with lost updates, co-ordinate transactions How to deal with unavailability How to deal with massive scale Oracle REST Data Services is designed to deal with many of these issues, we’ve done the hard thinking and chosen approaches to deal with these issues so developers using ORDS don’t need to worry about them so much. I want to draw a comparison between REST and another foundational technology, UNIX. When I think of UNIX I picture big air conditioned rooms in data centres full of big iron servers. But that’s not the reality of UNIX today. It’s not just data centres and backend servers. The reality is UNIX is all around you, you wear it on your wrist, you carry it in your pocket, it powers the movies you watch when sat on an aeroplane, it controls the car you drive, it is literally everywhere. It is part of the fabric of our reality, but it’s not something out there in front of you. It’s a building block, something atop which much of the rest of the technology in our lives is built upon. I’m sure everyone in this room knows how to get around in UNIX, I’m sure that wasn’t always the case, there was a time when all I knew was MS-DOS and Windows. UNIX was a foreign land, and even seemed like something that was fading away under the march of Windows, but that time was so long ago and now I can’t picture a future where knowing and being comfortable using UNIX won’t be a valuable skill for at least another decade or two. I feel REST is following a similar trajectory. It is almost as old as the HTTP protocol itself, and it’s popularity and ubiquity has taken a considerable amount of time to build, but now that it’s value has been recognised, I don’t see it’s utility being displaced until the next paradigm shift in computing technology occurs. It has become one of the building blocks we take for granted. And thus everyone needs to know and understand REST and more importantly every piece of technology involved in distributed computing needs to be a good and competent REST citizen.
  4. The Collection URI is the entry point to the API, it’s function is to list all the items in the collection and provide an endpoint for creating new resources. It is typically a concrete URI, without any wildcarding/patterning. The Item URI is parameterized/wildcarded, it represents the naming pattern for all Item Resources in the Collection. It’s function is to provide the detail of a resource, along with the means to update and/or delete the resource.
  5. New with REST Data services 3.0 it does not require APEX to define your REST Data services. Oracle currently distributes “Oracle APEX Listener”, which will be renamed to Oracle REST Data Services. Delivered with Database 12.1.0.2 Java Based plugin replacement for Apache mod_plsql Formally known as Oracle APEX listener available on OTN Available today on our Database Cloud Schema Service
  6. Perform a GET on the Collection URI to retrieve the resource In ORDS the response is a JSON document with two main elements: items: lists the items in the collection links: provides hyperlinks to help navigate the collection (next) and to identify the URI to use to POST new Items to the Collection