Skip to content

Oracle: SYSDBA/SYSOPER role, TNS mode, wallet, and certificate import on iOS #2039

Description

@datlechin

Problem

TablePro's Oracle connection form has three fields: connection type, service name, SID. Every Oracle-native client has more, and their absence blocks real connections rather than just being a convenience gap.

Follow-up from #2033 / #2034, which deliberately scoped these out.

Missing, in rough priority order

Role (Normal / SYSDBA / SYSOPER). Every Oracle-native client has it: SQL Developer, SQL Developer for VS Code, Toad ("Connect As"), DataGrip. SQLPro for Oracle advertises it on iOS. Without it there is no way to connect as SYSDBA, which is required for startup, shutdown, and much of the administration surface. Missing on macOS and iOS.

TNS / tnsnames.ora mode. All five desktop clients surveyed offer it (DataGrip, DBeaver, SQL Developer, SQL Developer for VS Code, Toad). Users with an existing TNS setup expect to point at a network alias instead of retyping host, port and service. Missing on macOS and iOS. On iOS this needs a document picker plus somewhere to keep the file, since there is no $TNS_ADMIN on disk.

Oracle Wallet. docs/databases/oracle.mdx currently states the driver does not read wallet files. Dodona for Oracle ships wallet support on iOS, so it is a real competitive gap for Autonomous Database users who were handed a credentials zip. Oracle's own VS Code client treats Cloud Wallet as a first-class connection type rather than a field.

Certificate import on iOS. Different in kind from the other three, and iOS-only. macOS stores CA, client certificate and client key as filesystem paths. Those paths do not sync, so an Oracle connection created on a Mac with a custom CA reports the file as unavailable on iPhone. #2034 made that failure explicit and actionable instead of an opaque NIOSSL error, but there is still no way to supply the certificate on device. The verify modes do work today against publicly trusted servers such as Autonomous Database, because they fall back to the system trust store when no path is set.

ConnectionFormView already uses fileImporter for SSH keys, SQLite and DuckDB files, so the pattern exists. The open question is storage: certificate bytes would need to live in the keychain or an app-group container, and a decision about whether they sync.

Ordering

The first three do not exist on macOS. They must land there first, because:

  • The macOS field list is declared by OraclePlugin.additionalConnectionFields, which ships inside the registry plugin. Adding a field means a plugin change plus a plugin-oracle-v* re-release.
  • The additionalFields keys are the sync wire format. If iOS invents a key the Mac does not read, a connection silently loses the setting when it round-trips. feat(ios): Oracle support in TablePro Mobile #2034 added a test pinning the three existing keys for exactly this reason.
  • iOS has no plugin loading, so its form is hardcoded and mirrors whatever macOS declares.

The SSH auth method split is the precedent for what happens when the two sides diverge: macOS and iOS have separate SSHAuthMethod types and iOS silently downgrades anything it does not recognize.

Suggested split

Each of these is its own change and probably its own issue once picked up. Role is the smallest and highest value: one dropdown, one additionalFields key, and the connect call passes it through as an OracleNIO authentication mode.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions