@run_reap_dbs.for_db('oracle')
def _reap_oracle_dbs(url, idents):
    log.info('db reaper connecting to %r', url)
    eng = create_engine(url)
    with eng.connect() as conn:
        log.info('identifiers in file: %s', ', '.join(idents))
        to_reap = conn.execute("select u.username from all_users u where username like 'TEST_%' and not exists (select username from v$session where username=u.username)")
        all_names = {username.lower() for (username,) in to_reap}
        to_drop = set()
        for name in all_names:
            if (name.endswith('_ts1') or name.endswith('_ts2')):
                continue
            elif (name in idents):
                to_drop.add(name)
                if (('%s_ts1' % name) in all_names):
                    to_drop.add(('%s_ts1' % name))
                if (('%s_ts2' % name) in all_names):
                    to_drop.add(('%s_ts2' % name))
        dropped = total = 0
        for (total, username) in enumerate(to_drop, 1):
            if _ora_drop_ignore(conn, username):
                dropped += 1
        log.info('Dropped %d out of %d stale databases detected', dropped, total)
@run_reap_dbs.for_db('oracle')
def _reap_oracle_dbs(url, idents):
    log.info('db reaper connecting to %r', url)
    eng = create_engine(url)
    with eng.connect() as conn:
        log.info('identifiers in file: %s', ', '.join(idents))
        to_reap = conn.execute("select u.username from all_users u where username like 'TEST_%' and not exists (select username from v$session where username=u.username)")
        all_names = {username.lower() for (username,) in to_reap}
        to_drop = set()
        for name in all_names:
            if (name.endswith('_ts1') or name.endswith('_ts2')):
                continue
            elif (name in idents):
                to_drop.add(name)
                if (('%s_ts1' % name) in all_names):
                    to_drop.add(('%s_ts1' % name))
                if (('%s_ts2' % name) in all_names):
                    to_drop.add(('%s_ts2' % name))
        dropped = total = 0
        for (total, username) in enumerate(to_drop, 1):
            if _ora_drop_ignore(conn, username):
                dropped += 1
        log.info('Dropped %d out of %d stale databases detected', dropped, total)