Using tnsnames.ora with Oracle database collections

Managed by | Updated .

Oracle databases have support for distributed databases via the user of a TNS names file.

Funnelback can be configured to use the tnsnames.ora file when crawling.

The following steps should be followed:

Download the Oracle JDBC drivers (note you must use the Oracle JDBC driver v10.2.0.1.0 or newer)

  • Create a database collection as per normal  
  • Copy the tnsnames.ora file to the collection's config folder  
  • Add the following to the collection.cfg for the database collection:

  •     java_options= -Doracle.net.tns_admin=$SEARCH_HOME/conf/$COLLECTION_NAME    
  • Update the db.jdbc_url to be the following format: jdbc:oracle:thin:@<TNSNAME>  (replace <TNSNAME> with the identifier from the tnsnames.ora file).  

Note: if using Funnelback 12.4 or earlier you also need to patch the database.pm (approx line 243) to ensure that java_options are applied to the database command:

$SEARCH_HOME/lib/perl/Funnelback/Collection/Database.pm
    # build our dbgather command
    my @dbgather_command = ( $java_binary,
                             '-Xms' . $max_heap . 'm', # min / initial heap size
                             '-Xmx' . $max_heap . 'm', # max heap size
                             '-Dfile.encoding=UTF-8',
                 "-cp",
                 "$classpath_string");

    if ($java_options ne "") {
        my @java_opts = split(' ', $java_options);
        push @dbgather_command, @java_opts;
    }

    push @dbgather_command, "com.funnelback.dbgather.Main";
    if (wantarray()) {
Was this artcle helpful?