#! /usr/local/bin/perl # ---------------------------------------------------------------------------- # Read an Oracle TNSNAMES.ORA file and load the definitions into a list # of Oracle Name Servers. This is similar to executing the LOAD_TNSNAMES # command, available from Oracle8i, on all Name Servers. # # Usage: ./namesload.pl | namesctl # # 23 Nov '99 - Frank Naude # ---------------------------------------------------------------------------- $TNSNAMES = "./tnsnames.ora"; @NAMESERVERS = (oranamesrvr0,oranamesrvr1,oranamesrvr2); foreach $NS (@NAMESERVERS) { print "\nset server " . $NS . "\n\n"; ®ister_name_servers; &load_tnsnames; } print "\n\nexit\n"; exit; #-------------------------------------------------------------------------- sub register_name_servers { # # Register all NameServers. The defualt port is 1575. # print "register oranamesrvr0.world -t ORACLE_NAMESERVER -d " . "(ADDRESS=(PROTOCOL=TCP)(HOST=oranamesrvr0)(PORT=1575))\n\n"; print "register oranamesrvr1.world -t ORACLE_NAMESERVER -d " . "(ADDRESS=(PROTOCOL=TCP)(HOST=oranamesrvr1)(PORT=1575))\n\n"; print "register oranamesrvr2.world -t ORACLE_NAMESERVER -d " . "(ADDRESS=(PROTOCOL=TCP)(HOST=oranamesrvr2)(PORT=1575))\n"; } #-------------------------------------------------------------------------- sub load_tnsnames { # # Read the TNSNAMES.ORA file and generate NAMESCTL register commands # $service = ""; open(FIL, $TNSNAMES); while () { if ( substr($_, 0, 1) eq '#' ) { # Ignore comments... } elsif ( substr($_, 0, 1) eq ' ' || substr($_, 1, 1) eq '\t' ) { s/ //g; s/\n//g; $body = $body . $_; } else { if ( $service ne "" ) { print "\n\nREGISTER ".$service." -t ORACLE_DATABASE -d ".$body; } $service = substr($_, 0, index($_, ' ')); $body = ''; } } print "\n\nREGISTER ".$service." -t ORACLE_DATABASE -d ".$body; close(FIL); } #EOF