#!/usr/bin/perl
# requires psexec from sysinternals
# exp should not be used for backup purposes... but that is exactly w
+hat I am doing here :-(
# Any and all advice is greatly appreciated
require DBI;
my ($dbh, $sth);
$dbh = DBI->connect('DBI:ODBC:DSN,'system','pass'); # ODBC connect
unless ($dbh->ping) {
print "Error opening database: $DBI::errstr\n";
exit;
} else {
#print "\n\nQuerying DB\n\n";
}
my $connected = $dbh->ping;
$sql = "SELECT username FROM all_users";
my $sth = $dbh->prepare($sql);
$sth->execute() or die $dbh->errstr;
while(my @result=$sth->fetchrow_array) {
push @username, $result[0];
}
foreach( @username ) {
if ( (not($_ =~ /(SQLNAV$)/)) and (not($_ =~ /(ENTMGR$)/))
and (not($_ =~ /(SYS$)/)) and (not($_ =~ /(SYSTEM$)/))
and (not($_ =~ /(SQLNAV$)/)) and (not($_ =~ /(PUBLIC$)/))
and (not($_ =~ /(ORA_MONITOR$)/)) and (not($_ =~ /(OSE\$HTTP\$ADM
+IN$)/))
and (not($_ =~ /(ORA_MONITOR$)/)) and (not($_ =~ /(OUTLN$)/))
and (not($_ =~ /(ENTMGR2$)/)) and (not($_ =~ /(AURORA\$JIS\$UTILI
+TY\$$)/))
and (not($_ =~ /(AURORA\$ORB\$UNAUTHENTICATED$)/)) and (not($_ =~
+ /(DBSNMP$)/))
and (not($_ =~ /(QUEST$)/)) and (not($_ =~ /(QNXO$)/)) ) {
print $_ . "\n";
system ("psexec \\\\oracle_server_IP_or_NetBIOS -u domain\\adm
+inistrator -p password exp " . $_ . "/" . $_ . "\@DB_Instance file=D:
+\\orabacks\\" . "$_" . ".dmp grants=Y owner=" . $_ . " rows=Y compres
+s=Y");
print "\n";
#die;
}
}
|