Zum Inhalt springen

dr.dimitri

Mitglieder
  • Gesamte Inhalte

    1.276
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von dr.dimitri

  1. Nun ich kenne zumindest jemanden, der den Quli gemacht hat, dann diese F10 Klasse (oder wie das genau heißt) und damit die Mittlerer Reife und anschließend auf die FOS in den technischen Zweig ging. Zwei Jahre später haben wir dann zusammen Fachabi geschrieben und beide bestanden. Ich würds zumindest nicht als unrealistisch bezeichnen Allerdings halt ich ein richtiges Abi noch für ein ganzes Stück schwerer. Vor allem die 2. Fremdsprache (da ich selbst bis zur 10. auf dem Gym war) dürfte da für die meisten ein harter Brocken sein - von den anderen Anforderungen mal abgesehen. Dim
  2. Das geht nur, wenn die Werte auch stimmen würde, aber die Lohnsteuer passt nicht zum Bruttogehalt. Damit passt auch alles andere nicht mehr. Ich vermute, der Arbeitgeberanteil wurde nicht korrekt einberechnet. Dim
  3. Also selber schreiben geht sicherlich schneller: create table t1( id number primary key, c1 varchar2(10); create table t2(id number primary key, fk_col number references t1); Ansonsten Rechtsklick auf die Tabelle->Constraint->Add Primary/Foreign Key Dann kannst du Pks, bzw. FKs anlegen. Dim
  4. Hi, für dich macht es keinen Unterschied ob Du mit 9 oder 10 anfängst. Da diese Versionen die beiden am häufigst eingesetzten Versionen sind, ist die 11er zwar schön zum Einsteigen, aber ich halten den Weg 10g->11g besser als 11g->10g. Bei beiden Büchern werden keine großen Voraussetzungen erwartet. Es sind aber auch keine reinen SQL Lehrbücher nach dem Motto "wie baue ich ein SELECT auf" etc. dafür gibt es die Doku. Du lernst aber wie man mit sqlplus umgeht etc. und lernst von Grund auf wie die DB funktioniert (durchaus auch wichtige technische Internas). Beide Bücher sind sehr gut zu lesen. Es ist kein kryptisches Englisch, eine deutsche Übersetzung gibt es nicht. Oh warte mal ab bis du die beiden Bücher mehrmals durchgearbeitet hast Dim
  5. Lass die Finger von dem Zeug. Spar dir das Geld. Kauf die diese beiden Bücher (in der angegebenen Reihenfolge): Effective Oracle By Design. Oracle PL/SQL Programming Wenn Du die beiden durchgearbeitet hast und auch nur 10% davon wirklich beherrscht und anwenden kannst, dann weißt Du mehr als 90% der sog. "Oracle-Programmierer". Des weiteren ist die Oracle Doku ein sehr guter Einstiegspunkt: Oracle Database Online Documentation 10g Release 2 (10.2) Dort gibt es neben der reinen API Dokumentation auch diverse Bücher zu PL/SQL Programmierung, Performance Tuning und natürlich den guten alten Concepts Guid. Wichtig ist, dass Du dir selbst eine DB installierst (z.B. die XE Version für den Anfang) und damit dann auch die Bücher durcharbeitest und selbst probierst wie manche Dinge funktionieren. Der Satz hat mir gut gefallen: Bedeutet das ihr nicht mal ne eigene Oracle DB installiert bzw. sie verkaufen die Teilnehmer auch noch für blöd, denn die ganze Oracle Software läßt sich für Entwicklungs- und Testzwecke uneingeschränkt herunterladen. Das allein wär schon ein Grund das Kursprogramm in die Rundablage zu legen. Dim PS: für den Angebotenen Umfang 12 Monate anzusetzen halt ich für reine Geldmacherrei. Wenn Du jeden Tag nur 2 Stunden die von mir genannten Bücher durcharbeitest, dann hast in einem Monat mehr drauf als die dir da eintrichtern wollen.
  6. Zuerst kommt WHERE dann GROUP BY (und ggf. HAVING) dann ORDER BY. Siehe auch die Doku zum SELECT Ja, sofern er nicht auch in einer Aggregatsfunktion verwendet wird. Also etwa in max,sum,agv etc. Dim
  7. Es gibt die Möglichkeit mit dem Befehl convert unter RMAN Transportable Tablespaces in ein anderes Format umzuwandeln, was auch direkt auch ein plattformabhängiges Format impliziert. Daher denke ich nicht, dass es einfach so möglich ist eine RMAN Sicherung auf einer anderen Plattform einzuspielen - hab es allerdings auch noch nie versucht. Im allgemeinen verwendet man dazu exp/imp bzw. datapump ab Oracle 10. Dim
  8. Weil HAVING benutzt wird um eine Gruppe zu filtern. Dementsprechend ist auch die Reihenfolge der Ausführung. Bei einem WHERE wird vorher gefiltert, bei einem HAVING erst danach. Mal ein Beispiel: SQL> explain plan for SELECT TABELLE,SCHLUESSEL,MAX(SORTIERUNG) 2 FROM TBLSYNCHISTORY 3 GROUP BY TABELLE,SCHLUESSEL 4 HAVING TABELLE='TBL0200ALLGVERTRAG' AND SCHLUESSEL='1234567'; EXPLAIN PLAN ausgeführt. SQL> select * from table(dbms_xplan.display); ----------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost | Pstart| Pstop | ----------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 43 | 241K| | | | 1 | FILTER | | | | | | | | 2 | SORT GROUP BY | | 1 | 43 | 241K| | | | 3 | PARTITION RANGE ALL | | | | | 1 | 51 | | 4 | INDEX FAST FULL SCAN| TBLSYNCHISTORY_IX2 | 110M| 4524M| 173K| 1 | 51 | ----------------------------------------------------------------------------------------------- Wie Du siehst, wird ganz zum Schluss nochmal extra gefiltert. Es wurden also (unnötiger weise) alle Daten verarbeitet (zur Info: Die im Plan angegebenen Zahlen sind korrekt!). Jetzt die korrekte Schreibweise mit WHERE: SQL> explain plan for SELECT TABELLE,SCHLUESSEL,MAX(SORTIERUNG) 2 FROM TBLSYNCHISTORY 3 WHERE TABELLE='TBL0200ALLGVERTRAG' AND SCHLUESSEL='1234567' 4 GROUP BY TABELLE,SCHLUESSEL; EXPLAIN PLAN ausgeführt. SQL> select * from table(dbms_xplan.display); ----------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost | Pstart| Pstop | ----------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 43 | 78 | | | | 1 | SORT GROUP BY NOSORT | | 1 | 43 | 78 | | | | 2 | PARTITION RANGE ALL | | | | | 51 | 1 | | 3 | FIRST ROW | | 1 | 43 | 155 | | | | 4 | INDEX RANGE SCAN (MIN/MAX)| TBLSYNCHISTORY_IX2 | 1 | | 155 | 51 | 1 | ----------------------------------------------------------------------------------------------------- Ich denke der Unterschied ist klar oder? Auch hier sind die vom Optimizer geschätzten Zahlen korrekt. Darum ist es grausam einem Einsteiger direkt zu zeigen wie man es falsch mach. Nimm die Spalte in das SELECT und die GROUP BY Klausel auf. Und verwende WHERE anstatt HAVING!! Dim
  9. Nur anstatt HAVING bitte WHERE verwenden. das ist ja grausam Dim
  10. Ok. Dann habe ich das Wort "komplett" wohl falsch verstanden Dim
  11. Hi, wenn Du alle Zeilen der Tabelle löschen möchtest, dann kannst auch einfach ein TRUNCATE TABLE verwenden. In PL/SQL musst es nur als dynamisches SQL einbauen: execute immediate 'TRUNCATE TABLE xyz'; Ein COMMIT danach brauchst auch nicht und "etwas" schneller sollte es auch gehen. Dim
  12. Du sollst daraus herauslesen, dass wir mehr spezifische Informationen brauchen und zwar die, nach denen ich schon mehrfach gefragt habe. Wärst du nicht "erwünscht" würd dir einfach niemand antworten. Dim
  13. Select count(ip),ip, user from mitglied group by ip,user having count(ip) > 1 order by desk limit 0,10 Ob das Limit so stimmt weiß ich nicht, da ich die mysql Syntax nicht so genau kenne. Evtl muss es auch direkt nach dem SELECT hin. Dim
  14. Mich würd interessieren wo Du das gelesen haben möchtest? Normale Indizes verwenden im allgemeinen einen ausbalancierten BTree (vereinfacht gesagt). Und das ist auch gut so, denn Hashwerte wären absoluter Unsinn. 2., 3. und 4. erledigen sich damit. Ein Datum wird in der Datenbank als interner binärer Wert gespeichert. Dieser hat nichts damit zu tun wie er angezeigt oder eingegeben wurde. Solange Du nicht LIKE '%xyz%' verwendest, ist es möglich, dass die DB einen vorhandenen Index verwendet. Das wäre sicherlich ein geeigneter Index. Versteh ich nicht ganz. Ein Index verändert niemals die Ergebnismenge. Er kann die Abfragedauer veringern. Grundsätzlich kann ich hier nein sagen, auch wenn es Ausnahmen gibt wie z.B. den Bitmap Join Index ab Oracle 9i. Das ist allerdings wie gesagt eine datenbankabhängige Ausnahme (die es vielleicht auch bei anderen DBs gibt) allerdings sollte man genau wissen wann und warum man so einen Index einsetzt. Ok ich nehme an, Du verwendest das Internet bereits seit einer Weile und bist recht zufrieden damit. Jetzt ist es Zeit ans Eingemachte zu gehen und eine Suchmaschiene zu verwenden: mysql index verwendung - Google-Suche Dim
  15. Das bedeutet, dass Du nicht nur Propleme mit dem Verständnis von SQL hast, sondern auch immer noch nicht gelernt hast wie man richtig frägt. Die Aussage: das SQL ist erfolglos ist keine ausreichende Fehlerbeschreibung mit der irgendjemand etwas anfangen könnte. Ebensowenig wie es ist ein Fehler aufgetreten und es funktioniert nicht Des weiteren sage ich nochmal, dass das SQL welches dir von dbwizard bereits vor 4 Tagen gepostet wurde exakt das macht was Du haben möchtest (bzw. was Du uns beschrieben hast was Du machen möchtest). Dim
  16. Wenn du denn jdbc:thin Treiber verwendest, dann gibts keine Probleme. Nur mit dem "dicken" OCI Treiber krachts. Dim
  17. Ich hab noch nie was mit SQLJ gemacht, allerdings gibt es Probleme, wenn man mit einer JDBC Version 10.2.0.1 über den jdbc:oci Treiber auf eine bereits gepatchte 10.2.0.3er DB zugreift. Falls das bei dir der Fall ist, solltest auch Deinen Client patchen bzw. patchen lassen oder dir von wo anderes eine entsprechende Version holen. Dim
  18. Das Statement macht genau das was Du möchtest. Nach der Ausführung sind in Tabelle1 die Tupel {1,a}, {2,b}, {3,c} vorhanden. Seufz. Jetzt schreibst schon seit Monaten immer wieder hier im Forum (und auch in anderen) und was musst Du immer mitangeben??? Aber was red' ich. Manche Leute lernen es einfach NIE. Und was bedeutet bei Dir wenn Du sagst das SQL war "erfolglos"?? Dim
  19. Und das ist das was im allgemeinen in einem Callcenter erledigt wird. Die Arbeit der Kollegen ist sicherlich sehr wichtig, denn sie hält uns Entwicklern die ganzen Fehlermeldungen die auf unser Konto gehen vom Leib aber im allgemeinen ist es eher eine Arbeit die ohne großes Fachwissen erledigt werden kann bzw. wird. Größere Probleme werden an den Second Level weitergegeben, der ggf. dann an uns herantritt, eine Anleitung erstellt wie das Problem gelöst wird (oder wir machen das) und diese dann weitergibt. Dim
  20. Naja das ist eine recht dürftige Fehlerbeschreibung. Ich nehme an, die Doku ist dir bekannt. Dim
  21. dr.dimitri

    chmod in Java

    Hi, ich mach es über Process: File f=new File(filename); String cmd[]={"chmod","777",f.getAbsolutePath()}; Process p=Runtime.getRuntime().exec(cmd); p.waitFor(); Fertig. Dim
  22. Es muss natürlich heißen keine Persistenzschicht. Dim
  23. Du hast Dir die Antwort doch schon selbst gegeben: Hättest Du es an einem kleinen Beispiel versucht wie ich vorgeschlagen habe, dann hättest Du sofort einen ORA-00904 invalid identifier Fehler bekommen. Dim
  24. Ok so seltsame Anforderungen hab ich noch nie gesehen. Ich würd mich verabschieden, denn der Kunde möchte kein IT System sondern einen Karteikartenkasten. Dort kann sich jemand eine Akte rausnehmen, die wird dann nicht mehr von anderen gesehen und kann auch nur von ihm geändert werden. Eine Datenbankgestützte Multiuseranwendung ist keine Lösung für sein Problem. Aber mal im Ernst: Du redest von einer eigenen Locktabelle, in der Du deine Informationen hineinschreibst und deren Änderungen zurückgerollt werden soll wenn die Anwendung abgeschossen wird. Jetzt ist es aber so, dass eine Transktion nur zurückgerollt wird wenn Sie noch nicht committet ist. Ist sie nicht committed wird sie von anderen Sessions aber nicht gesehen. H2 "unterstützt" einen sog. Dirty Read. damit kann eine Session auch uncommittete Daten lesen was im ersten Augenblick wie eine "Lösung" für dein Problem aussieht, allerdings verwendet H2 standardmäßig Table Locking: Und Bedeute im Klartext: Solange eine offene Transaktion auf einer Tabelle ist, kann keine andere Transaktion in dieser Tabelle etwas ändern. Und jetzt die Frage: Wie soll das mit der offenen Transaktion in deiner Locktabelle funktionieren, wenn mehr als ein Satz (unterschiedlich) geändert werden sollen? Jedem logisch denkenden Menschen sollte klar sein, dass hier irgendwo ein "Problemchen" liegt. Machst Du es mit einer anderen selbstgebauten Methode, dann hast immer das Problem, dass Du mit dem gleichzeitigen Zugriff klarkommen musst. Irgendwann werden mal zwei User gleichzeitig auf den Satz zugreifen und nichts voneinander mitbekommen. Das passiert vielleicht nur selten, aber es reicht um das Vertrauen in das Programm leicht zu erschüttern. Im übrigen hilft da auch eine Persistenzschicht, denn die kann auch nur das unterstützen was auch die Datenbank mitmacht. Daher meine Aussage: Das wird nicht funktionieren. Es gibt für solche Fälle das sog. optimistische und pessimistische Locking, welches für solche Anforderungen verwendet wird um sicherzutellen, dass keine Änderungen verloren gehen. Allerdings braucht man dazu eine wirkliche Datenbank. Dim
  25. Hi, ich muss dir leider sagen: Es wird nicht funktionieren. Bevor ich mich hier aber in diverse Erklärungen verliere und Du dich evtl. daran machst eine eigene Transaktionssteuerung (die nie wirklich 100%ig funktionieren kann) zu entwickeln, solltest Du deinem Kunden lieber eine richtige multiuserfähige DB schmackhaft machen. Da wären z-B. postgreSQL oder die kostenlose Oracle XE (lass auch die Finger von mysql). Bei beiden Datenbanken kannst Du dein Problem ohne eine einzige Zeile zusätzlichen Quellcode lösen und spartst somit natürlich auch dem Kunden wieder Zeit, Geld und ehöhst so nebenbei die Wartbarkeit deines Programms (das in der Hinsicht auch korrekt arbeiten kann). Dim

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...