Massenlöschung (überflüssige Imports) -> SQL?



  • hi,

    dank OCS und Jdics habe ich einiges an Objekten, die nicht benötigt werden. So habe ich z.B. 100 Rechner, die über eine eth0 und eine eth1 verfügen. Die eth1 ist nur für Crossover gedacht und wird nicht für die Dokumentation benötigt.  Die eth1 hat auch auf jedem Host  die gleiche Hostadresse. Bisher habe ich jeden Client angeklickt und von eth1 die Hostadresse archiviert/gelöscht. Dies jedoch für 106 Clients zu machen, ist jedoch eine Höllenarbeit. Lässt sich das in einem Schwung erledigen? Also Interface + Hostadresse zu löschen?

    Das gleiche Prozedere gilt dann auch für das Betriebssystem, da I-Doit 106 Objekte mit dem gleichen Namen angelegt hat.


  • i-doit Kenner

    Hallo rbg,

    die Betriebssysteme kannst Du doch direkt ueber die Weboberflaeche loeschen. Einfach alle Betriebssysteme auswaehlen, archivieren, loeschen, purgen. Dabei werden auch die Verknuepfungen geloescht (falls vorhanden).

    Um alle "eth1"-Ports inklusive der zugehoerigen IP zu loeschen kannst Du folgendes Statement nutzen:
    DELETE isys_catg_ip_list, isys_catg_port_list FROM isys_catg_ip_list LEFT JOIN isys_catg_port_list ON isys_catg_port_list__id = isys_catg_ip_list__isys_catg_port_list__id LEFT JOIN isys_obj ON isys_obj__id = isys_catg_ip_list__isys_obj__id WHERE isys_obj__isys_obj_type__id = "57" AND isys_catg_port_list__title = "eth1";

    Du musst lediglich die "57" gegen die Objekttyp-ID Deiner Rechner austauschen.

    Gruss,
    jkondek



  • hi,

    danke. Das werde ich morgen früh gleich mal testen. Im Entwickler Forum habe ich allerdings mal den Vorschlag gemacht, dass man den Import vorab prüfen kann, bevor importiert wird.



  • hi,

    kann es sein, dass da irgendwo ein Fehler bei den Tabellen ist?

    Ich habe mir eine Shell Schleife erstellt und ausgeführt, aber es wurden keine Datensätze entfernt.


  • i-doit Kenner

    Bei mir hat der Befehl funktioniert…

    Dann schau doch mal in Deinen Tabellen, was da so drin steht... Dafuer kannst Du Dir die Objekt-ID von einem der betroffenen Rechner nehmen und folgendes ausfuehren:

    select * from isys_catg_ip_list where isys_catg_ip_list__isys_obj__id = "Objekt-ID"\G
    select * from isys_catg_port_list where isys_catg_port_list__isys_obj__id = "Objekt-ID"\G

    Bei der ersten Abfrage muesstest Du so viele Eintraege raus kriegen wie in Kategorie "Hostadresse" drin stehen, bei der zweiten Abfrage so viele wie in Kategorie "Port".

    Prinzipiell muss die Abfrage auch gar nicht mehr in eine Schleife, weil sie alle betroffenen Eintraege aufgreifen sollte...

    Gruss,
    jkondek



  • hi,

    SQL Nummer 1 ergibt:

    
    INSERT INTO `isys_catg_ip_list` (`isys_catg_ip_list__id`, `isys_catg_ip_list__isys_obj__id`, `isys_catg_ip_list__isys_connection__id`, `isys_catg_ip_list__isys_ip_assignment__id`, `isys_catg_ip_list__isys_ipv6_assignment__id`, `isys_catg_ip_list__isys_ipv6_scope__id`, `isys_catg_ip_list__isys_net_dns_server__id`, `isys_catg_ip_list__isys_net_dns_domain__id`, `isys_catg_ip_list__isys_net_type__id`, `isys_catg_ip_list__description`, `isys_catg_ip_list__status`, `isys_catg_ip_list__property`, `isys_catg_ip_list__hostname`, `isys_catg_ip_list__dhcp`, `isys_catg_ip_list__address`, `isys_catg_ip_list__mask`, `isys_catg_ip_list__primary`, `isys_catg_ip_list__gateway`, `isys_catg_ip_list__dns_domain`, `isys_catg_ip_list__dns_server`, `isys_catg_ip_list__active`, `isys_catg_ip_list__isys_catg_relation_list__id`, `isys_catg_ip_list__isys_cats_net_ip_addresses_list__id`, `isys_catg_ip_list__isys_catg_port_list__id`, `isys_catg_ip_list__isys_catg_log_port_list__id`) VALUES
    (967, 2929, NULL, 2, 1, 1, NULL, NULL, 1, NULL, 2, 0, 'client31', 0, NULL, NULL, 0, NULL, NULL, NULL, 1, 1855, 967, 1729, NULL),
    (970, 2929, NULL, 2, 1, 1, NULL, NULL, 1, NULL, 2, 0, 'client31', 0, NULL, NULL, 1, NULL, NULL, NULL, 1, 1858, 970, 1732, NULL);
    
    

    SQL 2

    
    INSERT INTO `isys_catg_port_list` (`isys_catg_port_list__id`, `isys_catg_port_list__isys_catg_connector_list__id`, `isys_catg_port_list__isys_obj__id`, `isys_catg_port_list__isys_port_negotiation__id`, `isys_catg_port_list__isys_port_standard__id`, `isys_catg_port_list__isys_port_duplex__id`, `isys_catg_port_list__isys_plug_type__id`, `isys_catg_port_list__cable_name`, `isys_catg_port_list__isys_port_type__id`, `isys_catg_port_list__isys_port_mode__id`, `isys_catg_port_list__isys_port_speed__id`, `isys_catg_port_list__isys_catg_netp_list__id`, `isys_catg_port_list__isys_catg_hba_list__id`, `isys_catg_port_list__port_speed_value`, `isys_catg_port_list__title`, `isys_catg_port_list__description`, `isys_catg_port_list__mac`, `isys_catg_port_list__state_enabled`, `isys_catg_port_list__number`, `isys_catg_port_list__status`, `isys_catg_port_list__property`) VALUES
    (1729, 8218, 2929, NULL, NULL, NULL, NULL, NULL, 3, 1, NULL, 1630, NULL, 0, 'Port 0', '', '00:01:2e:35:c8:9e', 1, 0, 2, NULL),
    (1732, 8221, 2929, NULL, NULL, NULL, NULL, NULL, 3, 1, NULL, 1633, NULL, 0, 'Port 1', '', '00:87:10:48:07:53', 1, 0, 2, NULL);
    
    

    Das der Port "Port 1" heißt, habe ich allerdings schon gesehen und bei der Delete Anweisung angegeben, nachdem "eth1" ins Leere ging

    cu denny

    ps. Danke für deine Hilfe 🙂



  • Hallo Denny,

    aktuell muss ich deine ursprüngliche Frage mit "Nein" beantworten. Es gibt derzeit keine Möglichkeit Datensätze verschiedener Objekte gleichzeitig zu löschen. Allerdings möchte ich auch ausdrücklich davor warnen direkt in der Datenbank zu arbeiten! Es kann hierbei schnell passieren das nur die Hälfte deiner Daten entfernt werden - Grade bei Kategorien welche über Verknüpfungen und/oder implizite Beziehungen verfügen.

    Um Daten "schneller" löschen zu können hatten wir vor kurzem den "quickpurge" Button eingefügt, den du über die Verwaltung aktivieren kannst - Dadurch fällt zumindest das "archivieren" und "löschen" weg.

    Viele Grüße
    Leo



  • hi,

    das Löschen auf SQL Ebene sehe ich ohnehin als "letzten" Ausweg 🙂 Allerdings ist das Nervige die Klickorgie:

    -> Clients -> Client auswählen -> Hostdresse -> Archivieren

    Besonders nervig ist dann, dass man wieder auf Seite 1, von "n" landet und spätestens bei Client26 zzgl. noch einen Klick hat, um wieder auf die passende Seite zu kommen.


  • i-doit Kenner

    Besonders nervig ist dann, dass man wieder auf Seite 1, von "n" landet und spätestens bei Client26 zzgl. noch einen Klick hat, um wieder auf die passende Seite zu kommen.

    Dagegen hilft die Einträge pro Seite in den Objektlisten zu erhoehen 😉

    Gruss,
    jkondek


 


Datenschutz / Privacy Policy