diff --git a/modules/Bio/EnsEMBL/DBSQL/Driver/Oracle.pm b/modules/Bio/EnsEMBL/DBSQL/Driver/Oracle.pm
index 63c73adb33f16135503c6ebbb810e84043872d84..fb567c7e2af1e901711603173a48535aeecdd7a0 100644
--- a/modules/Bio/EnsEMBL/DBSQL/Driver/Oracle.pm
+++ b/modules/Bio/EnsEMBL/DBSQL/Driver/Oracle.pm
@@ -45,10 +45,18 @@ sub new {
 sub connect_params {
     my ($self, $conn) = @_;
 
+    my $host = $conn->host();
     my $dbname = $conn->dbname();
-
-    my $dsn      = "DBI:Oracle:";
-    my $username = sprintf("%s@%s", $conn->username(), $dbname );
+    my ($dsn, $username);
+
+    if (defined $host) {
+      my $port = $conn->port() || 1521;
+      $dsn = sprintf("DBI:Oracle://%s:%s/%s", $host, $port, $dbname);
+      $username = $conn->username();
+    } else {
+      $dsn      = "DBI:Oracle:";
+      $username = sprintf("%s@%s", $conn->username(), $dbname );
+    }
 
     return {
         dsn        => $dsn,