#!/usr/bin/perl use strict; use warnings; use Time::Piece; use Time::Seconds; package DB_Query_Monitoring_DB; # ---------------------------------------------------------------------------------------- # Variables my $TS; my $Uebergebene_PS = $ARGV[0]; my $Uebergebene_SSTs = $ARGV[1]; my $Uebergebene_Flows = $ARGV[2]; my $Uebergebene_MTs = $ARGV[3]; my $Uebergebene_Parameter = $ARGV[4]; my $TS_YY_Von ; my $TS_YY_Bis; my $TS_MM_Von ; my $TS_MM_Bis; my $TS_DD_Von ; my $TS_DD_Bis; my $TS_HH_Von ; my $TS_HH_Bis; my $TS_MI_Von ; my $TS_MI_Bis; my $TS_SS_Von ; my $TS_SS_Bis; my $Konvertierung_TS_I; my $Konvertierung_TS_II; my $DATEFORMAT = '%d.%m.%y %H:%M:%S'; my $Ausgabe_Ueberpruefung = "N"; my $Ausgabe_Inhalte = "N"; my $DBH_Monitoring_DB; my $SEL_Monitoring_DB; my $STH_Monitoring_DB; my @Ergebnis_SQL_Monitoring_DB; my @DB_Rueckgabe_Parameter; my $Anzeige_DB_Rueckgabe_Parameter; my $Schalter_DB_Rueckgabe = "DB Verarbeitung"; # ---------------------------------------------------------------------------------------- system('CLS'); print "\n"; print "----------------------------------------------------------" , "\n"; print "\n"; print "Uebergabe - Parameter fuer die DB - Abfrage [ $ARGV[0] ] :" , "\n"; print "\n"; print "----------------------------------------------------------" , "\n"; print "\n"; &TS(); # Überprüfung : FERTIG # -------------------------------------------------------------------------------------------------------------------------------------- # Eingabe des Time - Stamps für die Abfrage auf der ( Monitoring - ) DB sub TS { # system('CLS'); print "\n"; print "----------------------------------------------------------" , "\n"; print "\n"; print "Erkannte Kunden - Nummer : OFFEN" , "\n"; print "Erkannte Auftrags - Nummer : OFFEN" , "\n"; print "Erkannte KLS - ID : OFFEN" , "\n"; print "Erkannte S6 Recherche - ID : OFFEN" , "\n"; print "\n"; print "----------------------------------------------------------" , "\n"; print "\n"; print "Eingabe des Time - Stamps fuer die" , "\n"; print "Bestellung ( In GMT + 1 Zeit - Zone )" , "\n"; print "Beispiel : 20141205120000 20141205120500" , "\n"; print "\n"; print "Eingabe : "; my $Eingabe_TS = ; chomp $Eingabe_TS; $TS = "20141205120000 20141205120500"; # Automatisierte Angabe des Time - Stamps für die DB - Abfrage ( DEAKTIVIERT ) chomp $TS; print "\n"; print "-------------------------------" , "\n"; print "\n"; if ( substr( $TS , length( $TS ) - 29 , 14 ) =~ /^\d+$/ ) { # Prüfung des Strings - [ 0 - 9 ] , TS nur Ziffern print "Pruefung des Time - Stamps : OK" , "\n"; } else { print "Pruefung des Time - Stamps : " , "\n"; print "\n"; print "Nicht OK" , "\n"; print "Pruefen Sie die Zeit - Angabe" , "\n"; print "in der Von - Zeile !" , "\n"; } if ( substr( $TS , length( $TS ) - 14 , 14 ) =~ /^\d+$/ ) { # Prüfung des Strings - [ 0 - 9 ] , TS nur Ziffern print "Pruefung des Time - Stamps : OK" , "\n"; } else { print "Pruefung des Time - Stamps : " , "\n"; print "\n"; print "Nicht OK" , "\n"; print "Pruefen Sie die Zeit - Angabe" , "\n"; print "in der Bis - Zeile !" , "\n"; } print "\n"; print "-------------------------------" , "\n"; print "\n"; # -------------------------------------------------- # Zerpflückung der Zeit - Angabe # in einzelne Teile zur Verarbeitung # Bereich Von - Angabe print "Von - Bereich : "; $TS_YY_Von = substr( $TS , length( $TS ) - 29 , 4 ); # Trennung des Jahres print "$TS_YY_Von"; $TS_MM_Von = substr( $TS , length( $TS ) - 25 , 2 ); # Trennung der Monats print "$TS_MM_Von"; $TS_DD_Von = substr( $TS , length( $TS ) - 23 , 2 ); # Trennung der Tages print "$TS_DD_Von"; $TS_HH_Von = substr( $TS , length( $TS ) - 21 , 2 ); # Trennung des Jahres print "$TS_HH_Von"; $TS_MI_Von = substr( $TS , length( $TS ) - 19 , 2 ); # Trennung der Monats print "$TS_MI_Von"; $TS_SS_Von = substr( $TS , length( $TS ) - 17 , 2 ); # Trennung der Tages print "$TS_SS_Von"; print "\n"; # --------------------------------------------------- # Bereich Bis - Angabe print "Bis - Bereich : "; $TS_YY_Bis = substr( $TS , length( $TS ) - 14 , 4 ); # Trennung des Jahres print "$TS_YY_Bis"; $TS_MM_Bis = substr( $TS , length( $TS ) - 10 , 2 ); # Trennung der Monats print "$TS_MM_Bis"; $TS_DD_Bis = substr( $TS , length( $TS ) - 8 , 2 ); # Trennung der Tages print "$TS_DD_Bis"; $TS_HH_Bis = substr( $TS , length( $TS ) - 6 , 2 ); # Trennung des Jahres print "$TS_HH_Bis"; $TS_MI_Bis = substr( $TS , length( $TS ) - 4 , 2 ); # Trennung der Monats print "$TS_MI_Bis"; $TS_SS_Bis = substr( $TS , length( $TS ) - 2 , 2 ); # Trennung der Tages print "$TS_SS_Bis"; print "\n"; &DB_Abfrage_Monitoring_DB(); } # Überprüfung : FERTIG # -------------------------------------------------------------------------------------------------------------------------------------- # Ausführung der SQL Abfrage auf der ( Monitoring - ) DB sub DB_Abfrage_Monitoring_DB { # system('CLS'); my $DBUser = "XXXXX"; # WICHTIG : Entfernung des Eintrags nach Fertigstellung des Scripts my $DBPW = "XXXXX"; # WICHTIG : Entfernung des Eintrags nach Fertigstellung des Scripts # -------------------------------------------------------------------------------------------------------------------------------------- use DBI; $DBH_Monitoring_DB = DBI -> connect ( "AUS DATENSCHUTZGRÜNDEN ENTFERNT", ); print "\n"; print "----------------------------------------------------------" , "\n"; print "\n"; $DBH_Monitoring_DB -> {AutoCommit} = 1; $DBH_Monitoring_DB -> {RaiseError} = 0; $DBH_Monitoring_DB -> {ora_check_sql} = 1; $DBH_Monitoring_DB -> {RowCacheSize} = 16; $SEL_Monitoring_DB = "DB Abfrage - AUS DATENSCHUTZGRÜNDEN ENTFERNT"; $STH_Monitoring_DB = $DBH_Monitoring_DB -> prepare( $SEL_Monitoring_DB ); $STH_Monitoring_DB -> execute(); my $i = 0; while ( my @row = $STH_Monitoring_DB -> fetchrow_array() ) { my $Anzahl = @row; my $x = 0; for ( $x = 0; $x < $Anzahl; $x++ ) { if ( $Ausgabe_Ueberpruefung eq 'Y' and $row[4] == $ARGV[3] ) { print "Quelle = " . $i . " | " . $x . "\n"; } if ( defined( $row[$x] ) ) { $Ergebnis_SQL_Monitoring_DB[$i][$x] = $row[$x] . ""; } else { $Ergebnis_SQL_Monitoring_DB[$i][$x] = ""; } } # Nur bei Aktivierung des Entwickler - Schalters if ( $Ausgabe_Ueberpruefung eq 'Y' and $row[4] == $ARGV[3] ) { print "\n" . "----------------------------------------------------------" . "\n" , "\n"; } $i++; } $i = 0; foreach( @Ergebnis_SQL_Monitoring_DB ) { my $Anzahl = 18; my $x = 0; for ( $x = 0; $x < $Anzahl; $x++ ) { if ( $Ausgabe_Inhalte eq 'Y' and $Ergebnis_SQL_Monitoring_DB[$i][4] == $ARGV[3] ) { print "Ziel = " . $Ergebnis_SQL_Monitoring_DB[$i][$x] . "\n"; } } # Nur bei Aktivierung des Entwickler - Schalters if ( $Ausgabe_Inhalte eq 'Y' and $Ergebnis_SQL_Monitoring_DB[$i][4] == $ARGV[3] ) { print "\n" . "----------------------------------------------------------" . "\n" , "\n"; } $i++; } print "Inhalte des FREEFORMTEXTS : " , "\n"; print "\n"; $i = 0; foreach( @Ergebnis_SQL_Monitoring_DB ) { my $Anzahl = 1; my $x = 0; for ( $x = 0; $x < $Anzahl; $x++ ) { if ( defined( $Ergebnis_SQL_Monitoring_DB[$i][$x] ) and $Ergebnis_SQL_Monitoring_DB[$i][4] == $ARGV[3] ) { print $Ergebnis_SQL_Monitoring_DB[$i][14] , "\n"; # Ausgabe der Inhalte aus der Abfrage push( @DB_Rueckgabe_Parameter, $Ergebnis_SQL_Monitoring_DB[$i][14] ); # Erweiterung des Arrays um die Inhalte aus der Abfrage print "\n"; print "TS aus DB - I : $Ergebnis_SQL_Monitoring_DB[$i][9]" , "\n"; # Lese genaue Zeit - Angabe ( V ) aus DB print "TS aus DB - II : $Ergebnis_SQL_Monitoring_DB[$i][10]" , "\n"; # Lese genaue Zeit - Angabe ( B ) aus DB $Konvertierung_TS_I = $Ergebnis_SQL_Monitoring_DB[$i][9]; # Umwandlung des Strings in Variable $Konvertierung_TS_II = $Ergebnis_SQL_Monitoring_DB[$i][10]; # Umwandlung des Strings in Variable &TS_Kovertierung(); # Aufruf der Sub zur Kovertierung des TS &Pruefung_Strings( $Ergebnis_SQL_Monitoring_DB[$i][14] , $Ergebnis_SQL_Monitoring_DB[$i][4] ); # Aufruf der Sub zur Erkennung der Semicolons } } $i++; } &DB_Rueckgabe_PS(); } # Überprüfung : FERTIG # -------------------------------------------------------------------------------------------------------------------------------------- sub TS_Kovertierung { # my $Konvertierung_TS_I = "05.12.14 12:00:44,050000"; # my $Konvertierung_TS_II = "05.12.14 12:00:44,070425"; my $TS_I_Date_Konvertierung = substr( $Konvertierung_TS_I , length( $Konvertierung_TS_I ) - 24 , 17 ); # Separierung des Datums print "$TS_I_Date_Konvertierung" , "\n"; $TS_I_Date_Konvertierung =~ s/,\d+//; # ------------------------------------------------------------------------------------------------------------ my $TS_II_Date_Konvertierung = substr( $Konvertierung_TS_II , length( $Konvertierung_TS_II ) - 24 , 17 ); # Separierung des Datums print "$TS_II_Date_Konvertierung" , "\n"; $TS_II_Date_Konvertierung =~ s/,\d+//; # ------------------------------------------------------------------------------------------------------------ my $t1 = Time::Piece->strptime( $TS_I_Date_Konvertierung, $DATEFORMAT ); my $t2 = Time::Piece->strptime( $TS_II_Date_Konvertierung, $DATEFORMAT ); if ( $t1 == $t2 ) { $t1 += ONE_MINUTE; $t1 = $t1->strftime($DATEFORMAT); $t2 -= ONE_MINUTE; $t2 = $t2->strftime($DATEFORMAT); } print $t1, "\n", $t2, "\n"; } # -------------------------------------------------------------------------------------------------------------------------------------- sub DB_Rueckgabe_PS { print "Inhalte fuer die Auswertung : " , "\n"; print "\n"; foreach $Anzeige_DB_Rueckgabe_Parameter ( @DB_Rueckgabe_Parameter ) { print $Anzeige_DB_Rueckgabe_Parameter . "\n"; } system( "$Uebergebene_PS.pl" , $Schalter_DB_Rueckgabe , $Uebergebene_PS , $Uebergebene_SSTs , $Uebergebene_MTs , @DB_Rueckgabe_Parameter ); } # --------------------------------------------------------------------------------------------------------------------------------------