You are on page 1of 27

Safe Harbor

The following is intended to outline our general product direction. It is intended for information purposes
only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code,
or functionality, and should not be relied upon in making purchasing decisions. The development,
release, timing, and pricing of any features or functionality described for Oracle’s products may change
and remains at the sole discretion of Oracle Corporation.

Statements in this presentation relating to Oracle’s future plans, expectations, beliefs, intentions and
prospects are “forward-looking statements” and are subject to material risks and uncertainties. A detailed
discussion of these factors and other risks that affect our business is contained in Oracle’s Securities and
Exchange Commission (SEC) filings, including our most recent reports on Form 10-K and Form 10-Q
under the heading “Risk Factors.” These filings are available on the SEC’s website or on Oracle’s website
at http://www.oracle.com/investor. All information in this presentation is current as of September 2019
and Oracle undertakes no duty to update any statement in light of new information or future events.

Copyright © 2019 Oracle and/or its affiliates.


The love-hate relationship bw and the

Copyright © 2019 Oracle and/or its affiliates.


Intro

Java riding at the top of all prog lang. for the last 20 years
There are 12+ Millions Java Developers – What do they want?
How to make the Oracle database relevant for that community?

Copyright © 2019 Oracle and/or its affiliates.


6

Java Champions Feedback


• Drivers in Maven Central: “a MUST”
• “Not having the driver in Maven Central makes it harder to just declare the dependency in
a project”
• XE
• ”looking forward to the 18c edition” ; “12G storage limit is a problem”.
• DB in Cloud
• “will engage if truly managed & available per true usage (i.e., AWS Aurora Serverless)”
• “can't really work with cloud latencies”.
• Asynchronous database access: “a MUST”; “looking forward to it”
• MicroServices
• “Database outside Kubernetes”
• “Microservice own schema or XE instance or PDB”

Confidential – Oracle Internal/Restricted/Highly Restricted


Java and Oracle Database

Everything Java that gravitates


around the Oracle database
1. Java in the database
2. Java with the database SQL SQL SQL
SQL
SQL JDBC
JDBC
SQL (internal)

Copyright © 2019 Oracle and/or its affiliates.


Copyright © 2019 Oracle and/or its affiliates.

Java in the Oracle DB


Tactical
OJVM: Architecture
Session-private JVM (Virtually)
Session Session Session Session
1 2 3 N
User Java code (shared)

……
Session Session Session Session
JVM JVM JVM JVM

Java System Classes


(shared)
OJVM: What for and Who is Using it?
Common Use Cases

• In-place processing: cut network traffic/latency


• Java methods exposed as Java Stored Procedures
• Invoked from database clients (Java, C, C++, C#, Python, …), SQL, PL/SQL, database triggers

• Calling out external systems


• Web Services Callout (REST, SOAP)
• JDBC Call out to non-Oracle databases (using their thin-JDBC driver)
• Extend the database with Java libraries
• Hadoop, Hive
• Lucene, Solr, and so on

• Who is using it?


• Installed in 76.% Oracle databases
• Effective use: ~ 15% database customers: Norwegian Labor, British Homeland security, US
Homeland Security, Wells Fargo, Fidelity, GM, KOHL, CERN, Cisco Systems, Qwest
Communication, ERSIS Australia, TECSIS Systems (Argentina), BOSCH, eBS, Spatial and Graph
(RDF Semantic Graph) and so on
• IBM DB2 customers using Java in the database and migrating to Oracle
OJVM Rolling Upgrade - Planned Maintenance
Cluster wide
DB 18.4 Near-Zero Downtime
Non Java Service
• Non-Java service available all time (at least one instance)
• Java service available all time, except ~10 sec brown-out Java Service
~10 sec stall
Java Service
(OJVM unpatched) (OJVM patched)
• No error reported during brown-out
• CDB/PDBs supported (may incur longer brown-out)

DB 20c Zero Downtime


• Preload i.e,, preload the new/patched JVM classes (a.k.a. classes.bin)Cluster wide
• The standard rolling patching and datapatch Non Java Service

Java Service
Java Service Java Service
(OJVM
(OJVMunpatched)
unpatched) (OJVM patched)
OJVM: Objections and Positioning

Debunking Objections & Complaints


• Java Security
• Quarterly PSUs
• Mitigation Patch
• Zero Downtime: Rolling Patching
• Pre 18.4: RAC Rolling Install Process for the "Oracle JavaVM Component Database PSU/RU" (Doc ID 2217053.1)
• 18.4+: Small Brownout Rolling Patching
• 20c: Zero brownout Rolling patching
• Performance compared to JDK/JRE (Java outside the database)
• The JDK/JRE runs ”pure Java” faster but the combination of Java and SQL runs faster in the database
• Cuts the network roundtrips and latency

Positioning
• Tactical
• Alternative to PL/SQL
• Performance
• Extensibility: extends the database with Java libraries
• Enabled with DB Cloud Services: ATP-D (work in progress)
Copyright © 2019 Oracle and/or its affiliates.
Copyright © 2019 Oracle and/or its affiliates.

Java with the Oracle DB


Strategic!
Java Development with the Oracle Database
• Environments and Frameworks support
• Cloud Computing
• Converged DB – Data Models
• Reactive programming & Reactive Streams,
• MicroServices Microservices, Containers, Orchestration JVM Languages
• Serverless/Functions,
• Zero Downtime, Performance & Scalability,
• Integration with Hadoop & Spark,
• Observability, Diagnosability, Tracing

UCP Connection Pool + JDBC


Copyright © 2019 Oracle and/or its affiliates.
Oracle JDBC drivers on. Central

September 16th 2019 - 19.3.0.0 release


The Medium blog has been viewed by more
than 16,000 people, so far
The tweet has been viewed by 79,628
people, so far

Feb 27th, 2020 – All supported releases


(11.2.0.4, 12.2.0.1, 18.3.0.0, 19.3.0.0)
The Medium blog has been viewed by more
than 1,800 people, so far
The tweet has been viewed by ~11,500 so far

Working on posting the 19.6.0.0 jars


Layout and How to Pull (pom.xml)
https://repo1.maven.org/maven2/com/oracle/database/

1) Add the following dependency in your project’s pom.xml file

2) mvn compile will pull the JDBC and companions jars


Environments and Frameworks Support Good support /19c - 20c
Some work / 21c
No Plan, tell us if needed

Drivers Releases in last 12


Dev Frameworks Support OCI Plugins for ADB
months
19c (19.3) Spring, SpringBoot
Eclipse - CY2019
20c Micronaut, Helidon
Hibernate/JPA, MyBatis, IntelliJ - TBD
GORM
Drivers Distribution Other frameworks? The Gartner considers Visual Studio
and Eclipse integration as critical
Channels requirements for Cloud vendors
Maven Central
Oracle Maven Java Application Servers
OTN with Clickthrough JBoss Liberty
Weblogic
OTN no click through WebSPhere
Apache TOMCAT
Copyright © 2019 Oracle and/or its affiliates.

Java Cloud Computing with the Oracle database

See also my blog @ https://bit.ly/2roOm9t


Oracle Cloud Infrastructure Toolkit for Eclipse

• Explore Oracle
Autonomous Database
• Download client
credentials
• Test the connection
• Browse the schema
• Lifecycle Management
• Create New ATP or ADW
• Start/Stop/Clone
• Scale up or scale down
• Change the ADMIN passwd

https://github.com/oracle/oci-toolkit-eclipse/releases
Oracle Cloud Infrastructure Toolkit for
(In Progress)

• Explore Oracle
Autonomous Database
• Download client
credentials
• Test the connection
• Browse the schema
• Lifecycle Management
• Create New ATP or ADW
• Start/Stop/Clone
• Scale up or scale down
• Change the ADMIN passwd
Autonomous Database Connectivity
Serverless Dedicated
• Tenant isolation
using wallet Client
Client
• Wallets: PDB level (Compute)
or Tenant level TCPS (TLS 1.2) • TLS recommended
• Two-way TLS CMAN • Client has trustStore TCP
TCPS (TLS 1.2)

• Client matches • Same wallet used for


TCP
server DN Database and ONS
• Public IP address
based ACL

Copyright © 2019 Oracle and/or its affiliates.

21
Java Connectivity with Database in the Cloud

• Get the latest JDK8 (JDK8u163+), JDK9, JDK10 or JDK11


• Get the latest Oracle JDBC UCP jars from either the Oracle Maven repository
or the JDBC download page
• Configure the property files ojdbc.properties (and
ojdbc_<aliasname>.properties) to use Wallet (OOTB) or JKS
• Thin JDBC (19c)
URL: jdbc:oracle:thin:@<aliasname>?TNS_ADMIN=<directoryname>

Copyright © 2019 Oracle and/or its affiliates.


Security Settings
Using Oracle Wallets

Make sure to have additional jars in the classpath


oraclepki.jar , osdt_core.jar, and osdt_cert.jar
Available on Oracle Maven repository
Make sure to have wallets at an accessible location
cwallet.sso or ewallet.p12
Provide the location of the wallet
oracle.net.wallet_location=(SOURCE=(METHOD=FILE)(METHOD_D
ATA=(DIRECTORY=/Users/test/wallets/)))
Enable the server DN match
oracle.net.ssl_server_dn_match=true

23
Wallet Location

Wallet location as Java system property


java –cp .:oraclepki.jar:ojdbc10.jar
–D oracle.net.wallet_location= file:/ path/to/wallet/cwallet.sso
MyApp

Wallet location in Net Descriptor (URL, LDAP or tnsnames.ora)


alias =
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=tcps)
(Host=hostname)
(Port=1522))
(CONNECT_DATA=
(SERVICE_NAME=myservicename))
(Security=(my_wallet_directory=$TNS_ADMIN/jnetadmin_c/)))
24
Security Settings
Using Java Key Store (JKS)

Specify the location of trustStore and keyStore (only trustStore on ATP-D)


Use javax.net.ssl.trustStore and javax.net.ssl.keyStore system properties or
connection properties
Set the password for JKS
Use javax.net.ssl.keyStorePassword and javax.net.ssl.trustStorePassword
Enable the server DN match
oracle.net.ssl_server_dn_match=true

25
jdbc:oracle:thin:@tcp://salesserver1:1521, salesserver2, salesserver3:1522/sales.us.example.com

Easy Connect Plus


Easy Connect Naming has been enhanced to support:
• TCPS and optional wallet location
TCPS://<host>:<port>/<service_name>?wallet_location=<mydirectory>
Clients match host names with server certificate by default (similar to web browsers)
• Multiple hosts or ports
• A global database service name
• An optional distinguished database server name
• Passing connections properties as name-value pairs in the connect string
jdbc:oracle:thin:@tcp://salesserver1:1521, salesserver2,
salesserver3:1522/sales.us.example.com
Will expand into

jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=salesserver1)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=salesserver2)(PORT=1522))
(ADDRESS=(PROTOCOL=tcp)(HOST=salesserver3)(PORT=1522)))

26 (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)))
HTTP Proxy and Web Socket
WebSocket support (19c) *
• Port 443 can be used
• No additional port needs to be opened from corporate networks
• Works over HTTPS, to support HTTPS proxies, allows use of any standard web server
(e.g. Nginx) as Proxy

The JDBC drivers supports HTTPS Proxy configuration in the connect string, as shown

(DESCRIPTION=
(ADDRESS=
(HTTPS_PROXY=salesproxy)
(HTTPS_PROXY_PORT=8080)
(PROTOCOL=TCPS)
(HOST=sales2-svr)
(PORT=443))
(CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)))

* Not currently deployed for Autonomous Database


27
Connecting from Azure
ExpressRoute-FastConnect
Oracle Cloud Infrastructure (Region) Microsoft Azure (Region)
VNet
Service
VCN
Service
(ASE)
Cross-Cloud Network
Service
ADB- Gateway VM
Serverless

Dynamic Virtual
Routing Network
Gateway Gateway

FastConnect ExpressRoute
ADB-
Dedicated

Database Connectivity
• Applications on Azure VMs
• Azure application services (App Service Environment)
• Azure application services in other modes which support VNet integration *

* To be tested/validated
Thank you!

You might also like