Hallo,
um mehrere große Tabellen (in unterschiedlichen Schemata auf der gleichen Datenbank) möglichst "rasant" zu befüllen habe ich ein C-Programm geschrieben, das mittels Pro*C auf Oracle zugreift.
Läuft auch prinzipiell gut (und schnell), nur würde ich die Mehrprozessormaschine gerne besser auslasten und mehrere Tabellen zeitgleich befüllen (wie gesagt, die Zieltabellen sind völlig unahängig voneinander, aber Teile der Daten werden zunächst aus ein und der selben Tabelle gelesen, die folglich parallele Lesezugriffe zulassen muss).
Wenn ich die einzelnen Füllroutinen von PThreads ausführen lasse, funktioniert zunächst auch noch alles, so lange die Befüllung sequentiell vorgenommen wird (d.h. jeweils ein pthread_join(letzterThread) vor jedem pthread_create(naechsterThread)), sobald die Theads aber parallel laufen (wie sie es sollen), bekomme ich den Fehler: "ORA_24550: signal received: [si_signo=11][si_errno=0][si_code=1][si_addr=0x18] Aborted".
Woran liegt das? Was mit Zugriffsrechten? Viel ist über den ORA-24550 online nicht zu finden, ausser, dass es "serious" und "internal" ist, und häufiger Leuten passiert, die mit Pro*C arbeiten ... ich bin für jede Hilfe dankbar ...
um mehrere große Tabellen (in unterschiedlichen Schemata auf der gleichen Datenbank) möglichst "rasant" zu befüllen habe ich ein C-Programm geschrieben, das mittels Pro*C auf Oracle zugreift.
Läuft auch prinzipiell gut (und schnell), nur würde ich die Mehrprozessormaschine gerne besser auslasten und mehrere Tabellen zeitgleich befüllen (wie gesagt, die Zieltabellen sind völlig unahängig voneinander, aber Teile der Daten werden zunächst aus ein und der selben Tabelle gelesen, die folglich parallele Lesezugriffe zulassen muss).
Wenn ich die einzelnen Füllroutinen von PThreads ausführen lasse, funktioniert zunächst auch noch alles, so lange die Befüllung sequentiell vorgenommen wird (d.h. jeweils ein pthread_join(letzterThread) vor jedem pthread_create(naechsterThread)), sobald die Theads aber parallel laufen (wie sie es sollen), bekomme ich den Fehler: "ORA_24550: signal received: [si_signo=11][si_errno=0][si_code=1][si_addr=0x18] Aborted".
Woran liegt das? Was mit Zugriffsrechten? Viel ist über den ORA-24550 online nicht zu finden, ausser, dass es "serious" und "internal" ist, und häufiger Leuten passiert, die mit Pro*C arbeiten ... ich bin für jede Hilfe dankbar ...
Comment