diff --git a/packages/web/src/settings/ConnectionDriverFields.svelte b/packages/web/src/settings/ConnectionDriverFields.svelte
index 016208efe..9c7b6e708 100644
--- a/packages/web/src/settings/ConnectionDriverFields.svelte
+++ b/packages/web/src/settings/ConnectionDriverFields.svelte
@@ -142,7 +142,30 @@
{/if}
{#if driver?.showConnectionField('serviceName', $values, showConnectionFieldArgs)}
-
+
{/if}
{#if driver?.showConnectionField('socketPath', $values, showConnectionFieldArgs)}
diff --git a/plugins/dbgate-plugin-oracle/src/backend/driver.js b/plugins/dbgate-plugin-oracle/src/backend/driver.js
index 941eb67a5..4b975b043 100644
--- a/plugins/dbgate-plugin-oracle/src/backend/driver.js
+++ b/plugins/dbgate-plugin-oracle/src/backend/driver.js
@@ -60,6 +60,7 @@ const driver = {
databaseUrl,
useDatabaseUrl,
serviceName,
+ serviceNameType,
ssl,
isReadOnly,
authType,
@@ -74,7 +75,15 @@ const driver = {
client = await oracledb.getConnection({
user,
password,
- connectString: useDatabaseUrl ? databaseUrl : port ? `${server}:${port}/${serviceName}` : server,
+ connectString: useDatabaseUrl
+ ? databaseUrl
+ : serviceName
+ ? serviceNameType == 'sid'
+ ? `(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=${server})(PORT=${
+ port || 1521
+ }))(CONNECT_DATA=(SID=${serviceName})))`
+ : `${server}:${port || 1521}/${serviceName}`
+ : `${server}:${port || 1521}`,
});
if (database) {
await client.execute(`ALTER SESSION SET CURRENT_SCHEMA = ${database}`);