[Feature Request] Oracle Database support as a storage provider
Problem Description
Agno currently ships storage providers for Postgres, MySQL, SQLite, MongoDB, DynamoDB, ClickHouse, SingleStore, Valkey, Turso and others, but there is no provider for Oracle Database. Teams whose infrastructure runs on Oracle (a very common constraint in enterprise environments) cannot persist Agno sessions, memories, knowledge, metrics, evals or traces natively — they have to introduce and operate a second database engine just for Agno.
Proposed Solution
Add a first-class Oracle Database storage provider following the existing SQLAlchemy provider pattern (MySQL is the closest model):
OracleDb(BaseDb)andAsyncOracleDb(AsyncBaseDb)inagno/db/oracle/, built on SQLAlchemy with thepython-oracledbthin driver (no Instant Client required); async via the nativeoracle+oracledb_asyncdialect.- Same scope as the MySQL provider: sessions, memories, metrics, knowledge, evals, traces, spans and cultural knowledge.
- Oracle-specific semantics handled inside the provider:
MERGE-based upserts (Oracle has noON CONFLICT/ON DUPLICATE KEY), JSON columns stored as CLOB with explicit serialization (the SQLAlchemy Oracle dialect has no native JSON support), schema-as-user semantics, and data-dictionary introspection (all_tables/all_indexes). oracleextra inpyproject.toml, unit tests (mock engine, CI-safe), integration tests against the officialcontainer-registry.oracle.com/database/freeimage, cookbook examples and a migration runner.
Alternatives Considered
- Syncing/replicating Agno data from a supported database into Oracle — adds operational complexity and defeats the purpose of native persistence.
- Using a generic gateway in front of Oracle — no maintained option fits Agno's SQLAlchemy provider interface.
Additional Context
I have a complete implementation ready and validated against a real Oracle AI Database 26ai Free instance (93 integration tests passing, full unit suite green). PR to follow, linked to this issue.
Would you like to work on this?
- Yes, I'd love to work on it!
Source: agno-agi/agno