Wie Model (DDL) in Datenbank erzeugen bzw. updaten?

Christoph1972

Benutzer
Beiträge
18
Hallo Leute,

ich bin neu im Oracle Bereich und tue mich gerade schwer ein Model, das ich mittels Data Modeler erzeugt habe, in die Datenbank zu übertragen.

Ich habe mich an diesem Tutorial orientiert: Re-engineering Your Database Using Oracle SQL Developer Data Modeler

Mein Model ist fertig, nun erzeuge ich eine DDL im Modeler, die DDL speichere ich. Wenn ich diese, wie in dem Tutorial beschrieben, laden möchte, kann ich nur eine DDL auswählen, das Tutorial zeigt hier SQL. DDL ist nicht als Script ausführbar. Wenn ich das SQL kopiere, einfüge und ausführe werden meine Tabellen erzeugt, sehr schön! Ist das Vorgehen so üblich, oder geht das auch eleganter?

Wie muss ich vorgehen, wenn ich ein überarbeitetes Modell aktualisieren möchte? Bei der Generierung der DDL wird wieder Create Table erzeugt, das gibt beim ausführen natürlich einen Fehler.

Über eure Unterstützung würde ich mich sehr freuen!

Herzliche Grüße
Christoph
 
Werbung:
Wenn ich das SQL kopiere, einfüge und ausführe werden meine Tabellen erzeugt, sehr schön! Ist das Vorgehen so üblich, oder geht das auch eleganter?

Es ist üblich, DDL-Befehle in eine Datei zu schreiben und diese dann durch die DB ausführen zu lassen, ja. Was genau empfindest Du daran unelegant?

Wie muss ich vorgehen, wenn ich ein überarbeitetes Modell aktualisieren möchte? Bei der Generierung der DDL wird wieder Create Table erzeugt, das gibt beim ausführen natürlich einen Fehler.

Zur Gruppe der DDL-Befehle zählt auch ALTER TABLE und weitere ALTER - Befehle. Die Doku kennt sie alle.
 
Hallo Akretschmer,

danke für die Antwort!

Mit unelegant meinte ich, dass ich die .ddl nicht eingelesen bekomme, bzw. nur so das sie nicht ausführbar ist. In dem Tutorial wird gezeigt das seine .sql im Developer importiert wird, die wird bei mir nicht erzeugt. Deswegen hole ich mir aktuell das SQL per Copy & Paste in den Developer, was ja funktioniert.

Zur Gruppe der DDL-Befehle zählt auch ALTER TABLE und weitere ALTER - Befehle. Die Doku kennt sie alle.

Ich würde gerne wissen wie ich mit dem Data Modeler SQL mit alter [.....] generieren kann.

Herzliche Grüße
Christoph
 
Vermutlich hat Dein Tool da auch eine Bedienungsanleitung.

Ansonsten: man kann solche Dateien auch sehr einfach und effektiv mit einem sogenannten Editor erstellen und bearbeiten. Um das mal zu zeigen, ich habe 2 Dateien angelegt:

Code:
create table so_geht_das (id serial primary key, data text);

und

Code:
alter table so_geht_das add column ts timestamp default now();

Diese habe ich christoph_1.sql und christoph_2.sql genannt. Mit psql (ich arbeite mit PostgreSQL, psql ist das CLI dazu) kann ich dann das ausführen:

Code:
psql -X test -f christoph_1.sql
psql -X test -f christoph_2.sql

Oracle hat auch ein CLI, ich bin mir aber über den Namen da grad unsicher. Jedenfalls habe ich nun eine Tabelle mit diesem Aufbau:

Code:
test=# \d so_geht_das
  Table "public.so_geht_das"
 Column |  Type  | Collation | Nullable |  Default   
--------+-----------------------------+-----------+----------+-----------------------------------------
 id  | integer  |  | not null | nextval('so_geht_das_id_seq'::regclass)
 data  | text  |  |  |
 ts  | timestamp without time zone |  |  | now()
Indexes:
  "so_geht_das_pkey" PRIMARY KEY, btree (id)

test=#

Zusammengefaßt: ich benötige keine GUI, die ich nicht bedienen kann, um eine Tabelle zu erstellen und diese später noch um eine Spalte zu ergänzen. Das geht effektiver über die reinen SQL-Kommandos. Aber wer weiß, wer Oracle bezahlen kann braucht vielleicht auch eine bunte und unbenutzbare GUI, um zu sehen, was er bezahlt hat ...
 
Hi,

ich kann Oracle nicht bezahlen, ich arbeite nur für jemanden der das kann. ;-)

Das man das alles direkt mit SQL machen kann ist mir klar. Ich hätte gerne konkrete Hilfe zu der "unbrauchbaren GUI". Ich nutze immer wieder mal das GUI vom SQL Server. Das ist sehr gut zu gebrauchen, das hatte ich mir von den Oracle Tools auch versprochen, aber mein erster Eindruck ist - das Oracle da nicht mithalten kann.

Hat ja sonst noch jemand brauchbare Tipps?

Herzliche Grüße
Christoph
 
Moin. Der Datamodeller ist eigentlich nicht wirklich brauchbar.
Was die GUI Sachen betrifft ist Oracle definitiv weit hinter MS zurück, nicht jedoch was die Datenbank betrifft ;)

Wenn du wirklich modellieren möchtest und das Datenmodell revisionistischer verwalten und dokumentieren möchtest, dann würde ich dir ein echtes ER Modellierungstool empfehlen. ERWin ist sicherlich einer der bekanntesten Anbieter, es gibt aber sicherlich noch andere, ggf. preiswertere Anbieter.
 
Guten Morgen!

Danke für die Antwort!

Moin. Der Datamodeller ist eigentlich nicht wirklich brauchbar.
Was die GUI Sachen betrifft ist Oracle definitiv weit hinter MS zurück, nicht jedoch was die Datenbank betrifft ;).

Was ist an der Oracle Datenbank besser? Ich kann das als CRUD User leider nicht beurteilen. Bei der täglichen Arbeit spüre ich erstmal keinen Unterschied.

[Off topic]
Ich habe mich jetzt einige Stunden mit den Tools von Oracle beschäftigt und muss leider sagen, dass ich mehr als enttäuscht bin. Kaum zu glauben dass ein so namhafter Anbieter so schwache Administartionstools liefert. Wenn ich mit den Tools arbeite, habe ich das Gefühl mich wieder im Jahre 2000 zu befinden. Es ist ja nicht mal möglich eine Spalte per Checkox automatisch zu inkementieren. Wenn ich das alles mit dem MS SQL-Server vergleiche, dann kann Oracle in Sachen Produktivität einpacken. Für Orakle ist nach wie vor sehr viel spezial Wissen nötig, das hat MS dank "buntem" GUI schon lange aufgelöst und sein System damit sehr überschaubar und vor allem produktiv gemacht. Als Softwareentwickler möchte ich meine Zeit und mein Knowhow lieber in das zu entwickelnde Produkt investieren, als mich mit irgendwelchen SQL-Spezialitäten aufzuhalten. Aus unternehmerischer Sicht würde ich jetzt immer den MS SQL-Server wählen, da - es einfacher ist Leute zu finden die den Server beherrschen - Softwareentwickler können produktiver arbeiten da sie besser die eigentliche Aufgabe fokussieren können - die Administration einfacher ist. Wie es um die Kosten steht kann ich leider nicht vergleichen, dass wäre aber sicher auch sehr interessant!
[/Off topic]


So, genug gejammert, ich muss mich jetzt mit dem "Ding" anfreunden. :)
 
Es hat halt jedes Produkt seine Zielgruppe. An sowas die "Produktivität" einer Datenbank festzumachen halte ich allerdings für gewagt.

Das Auto Increment ist nur ein Punkt, der aller einfachste. Woran machst du Produktivität fest, wenn ich fragen darf? Komplexes SQL tippen finde ich jedenfalls wenig Produktiv. Wer ist denn die Zielgruppe für so ein System? Als Softwareentwickler bin ich jedenfalls froh, wenn ein Hersteller mir die Arbeit so einfach und zuverlässig wie möglich macht, das erwaten auch meine Auftraggeber von mir. Je weniger ich mit SQL zu tun habe, desto besser kann ich mich auf die eigentlichen Aufgaben konzentrieren und somit bessere Produkte liefern. Und ich möchte nicht anhängig von einem Fachmann sein, der in seinem Kämmerchen schlaues SQL tippen kann. Ich befürchte aber, dass du einer dieser Fachmänner bist und wir deswegen auf keinen gemeinsamen Nenner kommen!? :)
 
Das Auto Increment ist nur ein Punkt, der aller einfachste. Woran machst du Produktivität fest, wenn ich fragen darf?

an dem, was die DB an Features bietet. Indexmöglichkeiten, interne Programmiersprachen, intelligenter Planer etc. Plattformunabhängigkeit. Stabilität.

Komplexes SQL tippen finde ich jedenfalls wenig Produktiv.

Das wird oft automatisch generiert. Ja, dabei kommt oft auch Murks bei raus.

Wer ist denn die Zielgruppe für so ein System? Als Softwareentwickler bin ich jedenfalls froh, wenn ein Hersteller mir die Arbeit so einfach und zuverlässig wie möglich macht, das erwaten auch meine Auftraggeber von mir. Je weniger ich mit SQL zu tun habe, desto besser kann ich mich auf die eigentlichen Aufgaben konzentrieren und somit bessere Produkte liefern.

Ja. Für Dich ist die DB eine Blackbox. Das geht sicherlich auch eine ganze Weile auch gut. Irgendwann kommt aber der Punkt, wo man auf die oben genannten Dinge zurückgreifen will und muß. Da hilft irgendwann eine bunte GUI nicht weiter.
 
Ja. Für Dich ist die DB eine Blackbox.

Wegen meiner darf die DB gerne eine Blackbox werden, sie soll nur das liefern was ich erwarte, das hat man in anderen Bereichen seines Lebens auch tagtäglich, man kann und muss nicht alles beherrschen. Wie gesagt, ich möchte Software entwickeln und mich nicht mit SQL aufhalten, das mich nicht zwingend etwas angeht. Ich bin für Business Logik und GUI zuständig und nicht für irgendwelche Server Interna.


Das geht sicherlich auch eine ganze Weile auch gut. Irgendwann kommt aber der Punkt, wo man auf die oben genannten Dinge zurückgreifen will und muß. Da hilft irgendwann eine bunte GUI nicht weiter.

Das ist jetzt die letzten 10 Jahre immer gut gegangen und von Kollegen habe ich bisher auch nichts negatives gehört, zumindest beim MS SQL-Server, das spricht für sich. :)
 
Wegen meiner darf die DB gerne eine Blackbox werden, sie soll nur das liefern was ich erwarte, das hat man in anderen Bereichen seines Lebens auch tagtäglich, man kann und muss nicht alles beherrschen. Wie gesagt, ich möchte Software entwickeln und mich nicht mit SQL aufhalten, das mich nicht zwingend etwas angeht. Ich bin für Business Logik und GUI zuständig und nicht für irgendwelche Server Interna.

Gut, da sehe ich auch nix verwerfliches. Aber Datenbanken können u.U. groß werden, und dann ist es schon von Interesse, was die DB mir liefert, wie ich Performance-Probleme erkennen kann etc. Oracle ist schon sehr mächtig in dieser Beziehung. Ich mag übrigens die Preispolitik von Oracle, finde ich einfach superklasse.

Das ist jetzt die letzten 10 Jahre immer gut gegangen und von Kollegen habe ich bisher auch nichts negatives gehört, zumindest beim MS SQL-Server, das spricht für sich. :)

Wie gesagt, Datenmengen können mit der Zeit größer werden als erst gedacht, Pläne können 'kippen', man will vielleicht neue Dinge nutzen, die es vor 10 Jahre nicht gab u.s.w. Wenn Eure Kunden nach 10 Jahre noch happy sind mit dem, was man vor 10 Jahren hingestellt hat (was viele unserer auch sind), dann kann das auch für wenig Wachstum sprechen und damit keine gesteigerten Anforderungen. Egal. Ich bin kein GUI-Typ.
 
Im Vergleich zu MSSQL läuft Oracle nicht nur auf Windows und Linux, sondern auch auf diversen Unix Systemen und zOS. Dort gibts z.T. einfach keine Oberfläche.
SQL Developer und Data Modeler sind auch keine Admintools. Das ist sqlplus bzw. der Oracle Enterprise Manager (Weboberfläche). Ich geb dir aber (erneut) Recht, dass MSSQL da die schöneren Oberflächen hat.
Bei Bedarf kann man aber auch auf Drittanbieter wie z.B. Toad ausweichen.

Wegen meiner darf die DB gerne eine Blackbox werden, sie soll nur das liefern was ich erwarte, das hat man in anderen Bereichen seines Lebens auch tagtäglich, man kann und muss nicht alles beherrschen. Wie gesagt, ich möchte Software entwickeln und mich nicht mit SQL aufhalten, das mich nicht zwingend etwas angeht. Ich bin für Business Logik und GUI zuständig und nicht für irgendwelche Server Interna

Ich entwickle sowohl in Java als auch in Oracle (PLSQL) und du wärst erstaunt, wie viel produktiver man ist, wenn man das was in der Datenbank steckt (und wofür auch Lizenz- und Wartungskosten bezahlt werden) auch nutzen kann.
Ein paar Punkte, die jeden betreffen der Multiuseranwendungen entwickelt:
- Wie implementiert die DB ACID?
- Welche Eigenheiten gibt es bei Locking& Concurrency?
- Gibt es DB seitige Programmiersprachen?
- Welche SQL Erweiterungen kennt die DB (z.B. analytische Funktionen etc.)

Wenn du also MSSQL kennst, kann es gut sein, dass sich Oracle manchmal etwas anders verhält als Du es vielleicht erwartest. Evtl. ist dir auch schon aufgefallen, dass es kein BEGIN TRANSACTION gibt.

Hier findest übrigens noch deine Checkbox :)
 
Werbung:
Vielen Dank für die Hinweise, sehr nett! Produkte von Drittanbietern kommen erstmal nicht in Frage, da ich aktuell nur dieses eine Projekt mit Oracle habe. Ich habe jetzt alles mit dem SQL Developer fertig gemacht, das geht ja auch und mit etwas Übung auch recht schnell. ;-)

Also vielen Dank so weit!

Herzliche Grüße
Christoph
 
Zurück
Oben