Adds Oracle as a data source through rust-oracle (ODPI-C), which loads the user's Oracle Instant Client at runtime; the client is not bundled. The Options tab takes the Instant Client directory (empty: ORACLE_HOME or the system library path). Covers connecting, the schema tree, consoles with PL/SQL blocks, table editing, Generate DDL (DBMS_METADATA), Explain Plan (PLAN_TABLE), Oracle-specific SQL generation and completion, and jdbc:oracle:thin URLs. Review fixes: PL/SQL units keep their closing END; (the server rejects a block without it), a subprogram's declarations no longer split it, and packages end at a / line; LOB cells are read through locators (they showed as null and broke Generate DDL); ORA-01005 prompts for a password; the Instant Client directory is optional in the dialog. Co-authored-by: boenkkk <17746937+boenkkk@users.noreply.github.com>
3.0 KiB
Databases
The Database tool window (View ▸ Tool Windows ▸ Database) connects to SQLite,
PostgreSQL, MySQL/MariaDB, Microsoft SQL Server, ClickHouse and Oracle, plus the
wire-compatible products listed in New ▸ Data Source. Connections are saved
per project in .openidea/data-sources.toml; passwords live outside the project
(and never in that file).
Oracle: Oracle Instant Client
Oracle support uses the Oracle Call Interface, so the Oracle client libraries must be installed on the machine. OpenIDEA does not bundle them: install the Oracle Instant Client for your platform and point the data source at it.
- Download the Basic (or Basic Light) package of Oracle Instant Client 19c or later for your OS from https://www.oracle.com/database/technologies/instant-client/downloads.html.
- Unpack it somewhere stable, then, in the data source's Options tab, set Instant Client to that directory.
- General tab: host, port (1521), and the service name (for example
ORCLPDB1) in the Database field. Connect with the schema's user and its password.
java.sql-style URLs also work in the URL field:
oracle://scott:tiger@db.example.com:1521/ORCLPDB1
jdbc:oracle:thin:@//db.example.com:1521/ORCLPDB1
A TNS descriptor or alias in the Database field is passed to the client as is.
Platform notes
- macOS — the Basic ZIP for ARM (Apple silicon) or x86-64 must match the
app's architecture. Remove the quarantine flag if macOS blocks the libraries:
xattr -dr com.apple.quarantine /opt/oracle/instantclient_23_5. - Windows — use the 64-bit package; the app is 64-bit.
PATHdoes not have to include the directory when the Options tab names it. - Linux — install the RPM/DEB or unzip the ZIP; the directory needs the
libclntsh.soandlibclntshcore.solibraries (the ZIP'slibaio-based builds also need thelibaiopackage).
Without a working client, Test Connection fails with a clear message
(DPI-1047: Cannot locate a 64-bit Oracle Client library…). If the Options tab
is empty and ORACLE_HOME is not set, the client is looked up on the system
search path.
What Oracle data sources support
- Schemas = Oracle users (
ALL_USERS); system accounts (SYS,SYSTEM,XDB,MDSYS…) appear only with Schemas ▸ Show system. - Tables, views, columns, indexes, foreign keys, triggers, routines and
sequences are read from the
ALL_*views. - The query console runs SQL and PL/SQL blocks;
BEGIN … END;blocks (nested;included) are sent as one statement, and a lone/on its own line ends one as in SQL*Plus. - Explain Plan runs
EXPLAIN PLANand readsPLAN_TABLE(DBMS_XPLANoutput is not required). - Table editor (INSERT/UPDATE/DELETE in one transaction), Import/Export and
generated SQL use Oracle syntax:
"UPPER_CASE"identifiers,FETCH FIRST n ROWS ONLY,MODIFY (…)for column changes.
Table editing needs a primary key, and the connection must not be read-only.