Skip to main content

Oracle Database Connections

TablePro supports Oracle Database 12c and later via Oracle Call Interface (OCI). This covers Oracle Database instances running on-premises, in Docker, or Oracle Cloud.
Oracle Instant Client must be installed before connecting to Oracle Database. Download it from Oracle’s website and ensure the libraries are accessible.

Install Plugin

The Oracle driver is available as a downloadable plugin. When you select Oracle in the connection form, TablePro will prompt you to install it automatically. You can also install it manually:
  1. Open Settings > Plugins > Browse
  2. Find Oracle Driver and click Install
  3. The plugin downloads and loads immediately - no restart needed

Quick Setup

1

Install Oracle Instant Client

Download Basic package for macOS from Oracle
2

Create Connection

Click New Connection, select Oracle, enter host/port/username/password/service name, click Create

Connection Settings

FieldDefaultNotes
Hostlocalhost
Port1521Listener port
Service Name-Required. Use service name not SID. Check tnsnames.ora if unclear.
Username-Requires username/password auth (no OS auth)

Example Configurations

Local (Oracle XE): host localhost:1521, user system, service XEPDB1 Docker: gvenzl/oracle-xe:21-slim image, same config as local Remote: Standard host/port/credentials, service name from DBA Oracle Cloud (ADB): Port 1522, service name format mydb_tp, requires TLS wallet download from Oracle Cloud Console

Features

Schema Selection: Each user is a schema. Switch with ⌘K. Shows available schemas and objects. Table Info: Structure (columns, types, nullability, defaults), indexes (B-tree, bitmap), foreign keys, DDL via DBMS_METADATA. Query Editor: SQL/PL/SQL support. Pagination uses OFFSET/FETCH syntax:
-- Paginated results
SELECT *
FROM hr.employees
ORDER BY employee_id
OFFSET 0 ROWS FETCH NEXT 50 ROWS ONLY;

-- Approximate row count (fast, uses statistics)
SELECT num_rows
FROM all_tables
WHERE owner = 'HR' AND table_name = 'EMPLOYEES';

-- View definition
SELECT text
FROM all_views
WHERE owner = 'HR' AND view_name = 'EMP_DETAILS';

-- List all tables in the current schema
SELECT table_name
FROM user_tables
ORDER BY table_name;
Schema Editing: ALTER TABLE with double quotes for case-sensitive names. Supports ADD, RENAME COLUMN, MODIFY, DROP, CREATE INDEX. Foreign Keys: Displayed in structure. Manual query: SELECT c.constraint_name FROM all_constraints c WHERE constraint_type = 'R' AND owner = 'HR' Authentication: Username/password only (no OS auth or wallet). Create user: CREATE USER app_user IDENTIFIED BY "Password1!"; GRANT CREATE SESSION, SELECT ANY TABLE TO app_user;

Troubleshooting

Connection refused: Check listener running (lsnrctl status), verify port 1521 open, if Docker check docker start oracle-xe Invalid service name: Verify service exists: SELECT value FROM v$parameter WHERE name = 'service_names'; List services: lsnrctl services Instant Client not found: Download Basic package, extract to /usr/local/oracle/instantclient, set DYLD_LIBRARY_PATH Limitations: Username/password only, LONG/LONG RAW limited (use CLOB/BLOB), PL/SQL limited to anonymous blocks.