{"record":{"id":"d56b40ebc6b1f0a0","repo":"mem0ai/mem0","slug":"oracle-db-client-driver-version-this-oracledb-or","errorCode":null,"errorMessage":"Oracle DB client driver version ${this.oracledb.oracleClientVersionString} not supported, must be >=23.4 for vector support","messagePattern":"Oracle DB client driver version (.+?) not supported, must be >=23\\.4 for vector support","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"mem0-ts/src/oss/src/vector_stores/oracledb.ts","lineNumber":487,"sourceCode":"      const result = await fn(connection);\n      if (commit) await connection.commit();\n      return result;\n    } catch (err) {\n      await connection.rollback();\n      throw err;\n    } finally {\n      await connection.close();\n    }\n  }\n\n  private async assertVectorSupport(): Promise<void> {\n    if (!this.oracledb.thin) {\n      const [major, minor] = [\n        Math.floor(this.oracledb.oracleClientVersion / 100000000),\n        Math.floor(this.oracledb.oracleClientVersion / 100000) % 100,\n      ];\n      if (major < 23 || (major === 23 && minor < 4)) {\n        throw new Error(\n          `Oracle DB client driver version ${this.oracledb.oracleClientVersionString} ` +\n            \"not supported, must be >=23.4 for vector support\",\n        );\n      }\n    }\n\n    const version = await this.withConnection(\n      async (connection) => connection.oracleServerVersionString,\n    );\n    const [major, minor] = version.split(\".\").map(Number);\n    if (major < 23 || (major === 23 && minor < 4)) {\n      throw new Error(\n        `Oracle DB version ${version} not supported, must be >=23.4 for vector support`,\n      );\n    }\n  }\n\n  private createIndexDdl(): string {","sourceCodeStart":469,"sourceCodeEnd":505,"githubUrl":"https://github.com/mem0ai/mem0/blob/001c235229be8795e3834520467bd0d661ed8f34/mem0-ts/src/oss/src/vector_stores/oracledb.ts#L469-L505","documentation":"Vector search requires Oracle client 23.4 or newer. This check applies only to the node-oracledb thick mode (this.oracledb.thin === false): the adapter decodes oracleClientVersion as major*100000000 + minor*100000 and throws if the installed thick client library is older than 23.4. Thin mode (pure JS, the default in recent drivers) skips this check.","triggerScenarios":"Initializing OracleDB with oracledb.initOracleClient() pointing at an Instant Client < 23.4 (e.g. 19c or 21c client); CI images bundling an older Instant Client; a host with an old ORACLE_HOME picked up by thick-mode initialization.","commonSituations":"Enterprise hosts standardized on Oracle Client 19c/21c for legacy apps; Docker images based on older Instant Client packages; switching from thin to thick mode for features like advanced authentication and inheriting an old client.","solutions":["Upgrade the Oracle Instant Client / client libraries to 23.4+ (23ai client) on the machine running Node.","Switch to thin mode (default) — remove oracledb.initOracleClient() so the pure-JS driver is used and this check no longer applies (verify server is still 23.4+).","In Dockerfiles, replace FROM images with oraclelinux:9 + instantclient 23 or the official 23ai images.","Print oracledb.oracleClientVersionString at startup to confirm which client thick mode loaded."],"exampleFix":"# before (Dockerfile)\nFROM node:20\nRUN apt-get install -y libaio1 && curl -o instantclient.zip https://.../instantclient-2113000.zip\n\n# after\nFROM node:20\nRUN curl -o instantclient.zip https://.../instantclient-2340000.zip && unzip ...","handlingStrategy":"fallback","validationCode":"function checkThickClient(oracledb: any): void {\n  if (oracledb.thin) return; // thin mode, no client library needed\n  const major = Math.floor(oracledb.oracleClientVersion / 100000000);\n  const minor = Math.floor(oracledb.oracleClientVersion / 100000) % 100;\n  if (major < 23 || (major === 23 && minor < 4)) {\n    throw new Error(`Thick client ${oracledb.oracleClientVersionString} < 23.4; upgrade Instant Client or stay in thin mode`);\n  }\n}","typeGuard":null,"tryCatchPattern":"try { await store.initialize(); } catch (e) { if (e instanceof Error && e.message.includes('client driver version')) { /* rebuild image with Instant Client 23ai, or drop initOracleClient() to use thin mode */ } else throw e; }","preventionTips":["Prefer thin mode (no initOracleClient) unless you need thick-only features.","Pin Instant Client 23ai in Dockerfiles and CI images.","Log oracledb.oracleClientVersionString during startup diagnostics."],"tags":["oracle","version","driver","thick-mode","vectors"],"backgroundTag":null,"analyzedSha":"001c235229be8795e3834520467bd0d661ed8f34","analyzedAt":"2026-08-15T01:55:42.685Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}