35
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | ORDS DatabaseREST API Jeff Smith Senior Principal Product Manager [email protected] || @thatjeffsmith Database Tools, Oracle Corp

Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

  • Upload
    others

  • View
    22

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |

ORDSDatabaseRESTAPI

Jeff SmithSenior Principal Product [email protected] || @thatjeffsmithDatabase Tools, Oracle Corp

Page 2: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |

OracleRESTDataServices

3

Formerly Known as the APEX Listener

Page 3: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |

But First, a Brief Overview of REST

• RESTful web services are a way of providing interoperability between computer systems on the Internet

• REST can be confused with 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

And Why a DB Professional Should Care

Page 4: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

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)

• REST is easy– Small uniform set of operations: GET, POST, PUT, DELETE (CRUD!)– Small set of uniform status codes: 200, 201, 404, 500, …– URLs & hyperlinks encourage stateless behavior– Text based protocol with simple request/response model

5

Page 5: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |

• Java JEE mid tier application, e.g., WebLogic, Tomcat, Glassfish–Also supports “Standalone” mode for development

• For input, maps/binds URI to SQL and PL/SQL

• For output, transforms results to JSON and other formats

11

Oracle REST Data ServicesHTTP(S) client Oracle Database

SQLMap & BindURI

JSON Transform to JSON SQL Result Set

So How do we Marry this Cool, ‘New’, Hip Thing to the DB?

Page 6: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |

Oracle REST Data ServicesFlexible architecture

• Standard webserver layout

• Implements Java Servlet

• Deploys to WLS, Glassfish, Tomcat

• OR Embedded Jetty for standalone operation

WLS, Glassfish,Tomcat

ORDS

Apache

Static Files-HTML, CSS, JS

/hr/emp

JSONBinaryHTML…

HTTP(s) Results

JDBC

Page 7: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

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.

- customer talking about ORDS

Page 8: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

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.

Page 9: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |

Command-Line or GUI Installs

Page 10: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |

Enable a Schema

• Services are EXECUTED as the USER via ORDS_PUBLIC_USER Proxy Connect

Services are Defined in the Schema

Page 11: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |

Define/Deploy RESTFul Services: GUI, PL/SQL, or RESTBEGIN

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;

Page 12: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |

Code and No/Low Code RESTful Service Options

▪ No need to know java

▪ Most any database developer (plsql & sql) can get started quickly

▪ PL/SQL API

▪ GUI/IDE Support (SQL Developer!)

Page 13: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |

Manual – You Define Modules/URIs/Handlers/the Code

Page 14: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |

Automatic

▪ Pick the Database objects to PUBLISH

▪ TABLEs and VIEWs

▪ GET, POST, PUT, DELETE

▪ Stored Procedures, Functions, Packages (PL/SQL)

▪ POST

Page 15: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |

Page 16: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

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 )

• Insert

• Update

• Delete

• Bulk load

Auto Table/VIEW APIs/REST End Points

Page 17: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |

Update a Row

24

METHOD : PUT /:PK

REQUEST BODY : JSON

RESPONSE: 200 OK

• Location (Header)

• JSON (Body)

Page 18: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

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,

}

Page 19: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |

Execute PL/SQL TABLE APIExecute, REFCURSOR RETURN

Page 20: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |

Metadata Catalog

• Catalog of all REST enabled Objects

• /ords/<schema>/metadata-catalog/

Show me what’s available for SCHEMA ‘X’

Page 21: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |

Securing REST APIs

28

Page 22: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

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

Page 23: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

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.

30

Page 24: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

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

31

Page 25: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

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

32

APEX Authentication too (read users from a db table)

Page 26: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |

Page 27: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

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 OpsStart, stop, create, clone, drop, plug, unplug

OS StatsMemory, cpu, processes

ReportingBackups, sessions, waits, ASH, AWR, locks, V$LONG_OPS, RTSM

Page 28: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |

The Database ITSELF is the Resource

ORDS DB API• Cloud & On-Premises• SECURE (HTTPS &

Authorization Required)• Exadata & Multitenant

Support on Day 1• Can hit the OS as

necessary

Page 29: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |

Get a list of PDBs, Clone a PDB…

Page 30: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |

What if I POST instead…

Page 31: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |

Or cURLcurl -i -X POST \

-H "Authorization:Basic ZGJhcGk6V2VsY29tZTFfMQ==" \

-H "Content-Type:application/json" \

-d \

'{

"command": "string",

"option": "string",

"identity_domain": "string",

"service_id": "string",

"db_name": "PDB1",

"action": [

{

"action": "clone“

}…

}’ \

'https://10.246.129.114/ords/_api/databases/dbtools_dbapi_121/pdbs/'

Page 32: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |

Page 33: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |

What we’re working on now

• Making DBCA available

• Converting SQL Developer Web to use the DB REST API

Page 34: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |

Page 35: Oracle SQL Developer Top 10+ Tips & Tricks · Most any database developer (plsql & sql) can get started quickly ... "2017-06-20T13:29:00Z"}, {"id": 79, ... The Database ITSELF is

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |