Oracle logo

Relational engine

Connect Oracle to Excel, Sheets and AI

Oracle Database (Free, XE, Standard, Enterprise). The agent talks SQL*Net from inside your network so nothing is exposed inbound.

1connection
0inbound ports
read-onlyenforced

One connection, every surface

Where your Oracle data can go

Connect Oracle once and the same read-only connection feeds all of these — no second setup, no second copy of the data. 9 of 11 have a step-by-step guide.

Guide

Oracle to Excel

Microsoft Excel · Excel add-in

Pull live Oracle results straight into a worksheet and refresh them on demand — desktop Excel, Excel Online, Microsoft 365.

Read the guide
Guide

Oracle to Google Sheets

Sheets add-on

Run a saved Oracle query from the sidebar and drop the rows into the sheet. Shared collaborators can refresh it themselves.

Read the guide
Guide

Oracle MCP server

Claude, Cursor and MCP clients

Give an AI assistant read-only access to Oracle with the schema it needs to write correct SQL — no credentials in the chat.

Read the guide
Guide

Oracle REST API

HTTP endpoint

Publish a Oracle query as an authenticated JSON endpoint any application can call, with an OpenAPI 3.1 spec and ready-made Postman, Insomnia and Hoppscotch collections. No database port is opened.

Read the guide
Guide

Oracle to Airtable

Automation platform

Sync Oracle rows into an Airtable base on a schedule, or fetch them inside an Airtable automation script.

Read the guide
Guide

Oracle to Baserow

Automation platform

Feed a Baserow table from Oracle over the REST endpoint — self-hosted or Baserow cloud.

Read the guide
Guide

Oracle to SeaTable

Automation platform

Keep a SeaTable base current with Oracle data without exporting a file or exposing the database.

Read the guide
Guide

Oracle to Smartsheet

Automation platform

Push Oracle results into a Smartsheet grid so plans and reports read from the source system, not last week's export.

Read the guide
Guide

Oracle to Anvil

Anvil Works · App platform

Back an Anvil Python app with Oracle through the REST endpoint instead of embedding database credentials in the app.

Read the guide
Supported

Oracle to Power BI

Power Query M

Paste the generated Power Query M into the Power BI Advanced Editor and the report reads live Oracle results over HTTPS — no ODBC driver, no database port opened.

How Power BI works no Oracle walkthrough written yet
Supported

Oracle alerts and reports

Slack · Discord · Email · Webhook

Put a Oracle query on a schedule and have the rows delivered to Slack, Discord, email or a signed webhook — or hold the message until a row count, threshold or percentage change crosses the line you set.

How alerts and reports work no Oracle walkthrough written yet

How it works

5 steps, no inbound firewall change

01

Install the Network Agent on a machine that can already reach the listener. Nothing is installed on the Oracle server itself.

02

Enter host and port, then either a service name (the modern Easy Connect form) or a SID, with a username and password.

03

Pick the owner schemas worth exposing — the agent lists them from ALL_USERS with the Oracle-supplied ones filtered out. It reads their tables and columns so the Query Builder can offer real names.

04

Write read-only SQL, or let Nova write it. Named binds use Oracle's own colon form and are bound by name, not by position.

05

Read the saved query from Excel, Sheets, Power BI, MCP or REST — and share it with someone who never sees the statement.

Feature deep-dive

What Oracle gives you

No client install, either style of connection

The usual first day with Oracle is spent on the client, not the query. That step is gone: the agent ships Oracle's managed driver, which is pure .NET.

  • Nothing to install — no Instant Client, no ORACLE_HOME, no 32-bit-versus-64-bit mismatch to debug.
  • Service name — becomes an Easy Connect string, host:port/service, which is what most modern instances want.
  • SID — becomes a full TNS descriptor built for you, for the older instances that still identify that way.
  • One or the other is required, and the connection test tells you which of the two Oracle rejected: ORA-12514 means it does not know that service, ORA-12505 means it does not know that SID, ORA-01017 means the password is wrong.
  • A tnsnames.ora alias is not read. Give the host and port directly.

NUMBER is not a float

Oracle's NUMBER is the type most tools quietly get wrong, because a bare NUMBER has 38 digits of precision and no declared scale. Rounding it into a double is the normal shortcut and it silently loses cents on large values.

  • A NUMBER with declared precision and scale keeps both — NUMBER(12,2) stays exact.
  • A bare NUMBER with no declared scale is carried as text rather than squeezed into a floating-point type. Nothing is lost on the way out, and the receiving tool can decide what to do with it.
  • DATE carries its time component, because in Oracle it always had one.
  • TIMESTAMP WITH TIME ZONE is normalised to UTC, so two rows written in two offices compare correctly.
  • CLOB and BLOB come through as text and bytes rather than being truncated to a preview.

Schema is the thing you pick, and the thing you write

Oracle uses the word database differently from every other engine here, which is worth being precise about. What you select during discovery is an owner schema, and it is that name — not an instance name — that appears in a cross-source query.

-- ora_erp is the connection, SALES is the Oracle owner schema
SELECT   c.region, SUM(o.total) AS revenue
FROM     ora_erp.sales.orders     o
JOIN     pg_crm.public.customers  c ON c.id = o.customer_id
GROUP BY c.region

Shared by every database connector

True of every database connector

  • Outbound only — the agent opens one encrypted connection out to Query Streams. No inbound port to forward, no VPN, no IP allowlist, nothing about your database exposed to the internet.
  • Credentials stay put — the database username and password live on the machine you installed the agent on. Query Streams never receives them and cannot reach your database on its own.
  • Read-only, enforced — one statement at a time, SELECT and friends only. A write is rejected on your own machine before it is ever sent to the server, rather than relying on a permission somebody remembered to set.
  • Deploy as many agents as you like — one per site, region or cloud. Every data source they can see arrives in a single dropdown, so nobody has to know which agent hosts what.

What you get once a query is saved

  • Share the capability, not the SQL — a colleague or an outside partner can run your query and change its filters without ever seeing the statement behind it.
  • Filters from either direction — declare them yourself as @variables, or let the connector spot the literal values already sitting in your WHERE clause and offer those as dropdowns.
  • Read it from anywhere — Microsoft Excel, Google Sheets, Power BI, the REST API, AI assistants over MCP, the Query Builder and Nova all read the same saved query.
  • Run several at once — five saved queries into five worksheet tabs, streamed concurrently, however large the results.
  • Join it to anything else you have connected — another database, a business API, or a folder of files, in one read-only statement.

Cross-source SQL

Join Oracle to the rest of your data

One statement can span Oracle and your other connections at once. Each source runs only the part it can, streams the result back, and the join happens centrally — the sources never talk to each other and nothing is copied anywhere.

3 connections · 3 agents

Oracle Relational engine
PostgreSQL Relational engine
Stripe Payments & billing

One statement

-- nothing copied, nothing merged, nothing scheduled
SELECT   c.region, COUNT(*) AS orders, SUM(i.amount_due) AS invoiced
FROM     ora_erp.sales.orders1    f
JOIN     pg_crm.public.customers2 c ON c.id = f.customer_id
JOIN     billing.stripe.invoices3 i ON i.customer = c.stripe_id
GROUP BY c.region
ORDER BY invoiced DESC;

The three parts are connection, schema and table — and the connection name is whatever you called it. Illustrative columns; your tables will be your tables. Read-only applies to every piece: SELECT, WITH and EXPLAIN only, with a ceiling on how much any one source may hand over for a single query. How federated queries work

Connection details

What Oracle needs

Port
1521 by default, any port accepted
Identifies as
A service name (Easy Connect) or a SID (a TNS descriptor built for you). One of the two is required
Credentials
An Oracle username and password, held on the agent. Query Streams never receives them
Driver
Oracle.ManagedDataAccess.Core 23.5.1, bundled — fully managed, so no Instant Client and no ORACLE_HOME
Encryption
The agent-to-Query Streams leg is TLS. The agent-to-listener hop uses your own network's arrangements — there is no TLS switch in the connector, so put the agent beside the database
Schema
Chosen from ALL_USERS during discovery, with Oracle's own schemas filtered out. The session is set to it before each query
Parameters
Oracle's colon form, bound by name. Lists are not accepted as a single bind
Pooling
On, one to ten connections, recycled every five minutes
Timeouts
30 seconds to connect, 30 seconds per statement while streaming
Read-only
Enforced on your own machine before the statement is sent to the listener

Only SELECT and WITH reach the database on this connector. The check runs on your own machine, before anything is sent, so a mistyped UPDATE never travels the wire — and it does not depend on somebody having remembered to create a read-only Oracle account, though doing so as well is still good practice.

In a cross-source query the middle part of a three-part reference is the Oracle owner schema, not an instance or service name. A connection called ora_erp reading the SALES schema is written ora_erp.sales.orders.

Vendor documentation: www.oracle.com

FAQ

Questions about Oracle

Which tools can read Oracle data through Query Streams?

All of them, from one connection: Excel, Google Sheets, MCP, REST API, Airtable, Baserow, SeaTable, Smartsheet, Anvil, Power BI, scheduled alerts and reports. Connect the database once and every surface reads the same read-only connection — there is no per-tool setup and no second copy of the data.

Do I have to open a firewall port to my Oracle database?

No. The Query Streams Network Agent runs inside your network and opens a single outbound encrypted connection. Nothing listens for inbound traffic, no VPN is required, and the database keeps its existing firewall rules.

Can Query Streams change data in Oracle?

No. The agent enforces read-only at the point of execution — one statement at a time, SELECT and friends only. Credentials stay on the agent and are never sent to Query Streams.

What does Query Streams need to connect to Oracle?

A reachable host, a role and its password — the agent carries the driver, so nothing is installed on the database. Port: 1521 by default, any port accepted. Identifies as: A service name (Easy Connect) or a SID (a TNS descriptor built for you). One of the two is required. Credentials: An Oracle username and password, held on the agent. Query Streams never receives them. Driver: Oracle.ManagedDataAccess.Core 23.5.1, bundled — fully managed, so no Instant Client and no ORACLE_HOME.

Can I join Oracle to another database in the same query?

Yes — that is a federated query. One statement can reference Oracle and your other connections at once, written as connection.schema.table. Each source runs only the part it can and streams the result back; the join happens centrally, so the sources never connect to each other and nothing is copied or scheduled. Read-only applies to every piece — SELECT, WITH and EXPLAIN only — and there is a ceiling on how much any one source may hand over for a single query. Federated queries are a plan feature; the federated queries page carries the current source and size limits.

Put Oracle where the work happens

Install the agent, point it at your database, and pick a destination.

Read-only Outbound only Credentials stay on the agent