Index: dbdimp.c
===================================================================
--- dbdimp.c    (revision 10648)
+++ dbdimp.c    (working copy)
@@ -337,6 +337,26 @@
     ub2 new_charsetid = 0;
     ub2 new_ncharsetid = 0;

+    /* dbi_imp_data code adapted from DBD::mysql */
+    if (DBIc_has(imp_dbh, DBIcf_IMPSET)) {
+        /* dbi_imp_data from take_imp_data */
+
+        if (DBIc_has(imp_dbh, DBIcf_ACTIVE)) {
+            if (DBIS->debug >= 2)
+                PerlIO_printf(DBILOGFP, "dbd_db_login6 skip connect\n");
+
+            /* tell our parent we've adopted an active child */
+            ++DBIc_ACTIVE_KIDS(DBIc_PARENT_COM(imp_dbh));
+
+            return 1;
+        }
+
+        /* not ACTIVE so connect not skipped */
+        if (DBIS->debug >= 2)
+           PerlIO_printf(DBILOGFP,
+               "dbd_db_login6 IMPSET but not ACTIVE so connect not skipped\n");
+    }
+
     imp_dbh->envhp = imp_drh->envhp;   /* will be NULL on first connect */

 #if defined(USE_ITHREADS) && defined(PERL_MAGIC_shared_scalar)
Index: Oracle.pm
===================================================================
--- Oracle.pm   (revision 10648)
+++ Oracle.pm   (working copy)
@@ -212,6 +212,7 @@
         (my $user_only = $user) =~ s:/.*::;
        my ($dbh, $dbh_inner) = DBI::_new_dbh($drh, {
            'Name' => $dbname,
+            'dbi_imp_data' => $attr->{dbi_imp_data},
            # these two are just for backwards compatibility
            'USER' => uc $user_only, 'CURRENT_USER' => uc $user_only,
            });
