MySQL > Oracle

rtd1978

Mitglied
hallo,

vielleicht kann mir jemand von euch helfen.

ich habe ein php-programm geschrieben, welches an eine my-sql-db angebunden ist. daten werden erfasst, geändert und gelöscht.

nun soll dieses programm bei einem kunden in betrieb gehen. dieser wünscht allerdings den betrieb mit einer oracle-db.

ich habe bis jetzt null erfahrung im umgang mit oracle-datenbanken.

meine frage:
wie unterscheiden sich die befehle der beiden datenbanksysteme? (mysql: mysql_query -> synonym in oracle? usw....)
was gibt es zu beachten? wird es grosse probleme geben?

hat vielleicht schon jemand erfahrungen mit einer solchen migration?

ps: daten müssen nicht export/importiert werden, die db ist noch leer.
 
Hallo,

1) Bring bitte Datenbank und Webserver nicht durcheinander
2) Welchen Typ haben Deine MySQL Tabellen - sicher MyISAM?
3) Auf welche Oracle Version musst DU gehen?

Generell:
Dein PHP Krams musst Du sicher auf ODBC "umbauen"
Die SQL Statements werden geringfügig anders werden ....

Chris
 
Bitte kein ODBC :-) Die OCI8 Funktionen in PHP sind wesentlich besser als ODBC. Auf der Oracle Seite gibt es ein eigenes Portal für PHP Entwickler.
http://www.oracle.com/technology/tech/php/index.html

Die Statements werden sich sehr wohl ändern, z.B. gibt es in Oracle z.B. kein LIMIT x, y sondern ein ROWNUM BETWEEN x AND y.
Es ist durchaus möglich, dass das Webtool etwas langsamer! wird. Das hängt mit der höheren Last beim Connect an eine Oracle Datenbank zusammen. Wenn du also jedesmal ein Connect an die DB machst wenn eine Seite aufgerufen wird, dann wird es sicherlich leichte Einbrüche in der Performance geben. Eine Lösung hierfür wäre z.B. Connection Pooling über den Webserver (persistente DB Connections ).

Zudem sollte sich idealerweise auch das Datenmodell an die neue Umgebung anpassen. Das fängt schon bei Objekten wie Sequenzen an, die es unter mySQL ja in der Form gar nicht gibt. Dafür gibt es bei Oracle wieder keine "Auto_increment Spalten".
Viele Berechnungen, die momentan mittels PHP ausgeführt werden sollten unter Oracle als Trigger bzw Stored Procedure umgesetzt werden.
 
also,
ich habe die standard-tabellen (MyISAM). die oracle-version ist die 9i.

durch stöbern im i-net habe ich erfahren, dass ein client nötig ist um auf eine oracle-db zuzugreifen.
verstehe ich das richtig?: ich habe einen webserver(apache) laufen, der mein script interpretiert. das script greift über den clienten auf die oracle-db zu. (die oracle-db ist im hausnetz schon vorhanden)

welchen client nimmt man am besten? ich habe mir jetzt einen 600mb-client geladen, mit dem ich überhaupt nicht klarkomme.

und wie bringe ich meinem php-script nun bei, dass es auf die oracle-db zugreifen soll? bis jetzt tut es dieser code (mysql-db):
Code:
$con = @mysql_connect("localhost","user","password")
   or die("Keine Verbindung zum Server<br>".mysql_error());

  $db = mysql_select_db("zeit", $con);
  if(!$db)
  {
   echo "Datenbank nicht vorhanden";
   exit;
  }

:confused: :( :confused:
 
Das mit dem 600 MB Client ist leider so. Es gibt zwar auch einen sog. Instant Client, aber wenn du ihn schonmal runtergeladen hast.. ;-) Der Client muss auf dem Webserver installiert werden, sofern dieser nicht derselbe wie der Datenbankserver ist. Da ist natürlich auch das Betriebssystem wichtig, also das des Webservers.

Um auf die Oracle DB zuzugreifen braucht du die OCI Funktionen, d.h. du musst diese in der PHP.ini erstmal freischalten. Infos und Beispiele im PHP Manual unter http://www.php.net/oci8

Beispiele für ein Connect und SQL Abfragen findet man genug, auch im PHP Manual, das Problem ist vielmehr eine bestehende Applikation von mySQL auf Oracle umzustricken. Besonders dann, wenn man Oracle überhaupt nocht kennt.

Wenn es für einen Kunden ist wird dieser mit Sicherheit Installationsscripte verlangen welche über SQL*Plus eingespielt werden müssen. Wenn er ein gutes Datenbankkonzept hat wird er Sicherheitsrichtlinien haben die eingehalten werden müssen. Außerdem wird er vielleicht noch andere Applikationen in der Datenbank laufen haben, d.h. einfach mal so ein Neustart der DB ist nicht, also Updates im laufenden Betrieb etc... Du musst dir halt im Klaren sein, dass eine Oracle Datenbank ein bisschen was anderes ist als eine mySQL und ohne mal die Doku in die Hand zu nehmen wirst du nicht weit kommen.
 
hallo,

habe es jetzt hinbekommen. die verbindung zur datenbank über den client(orahome92) steht. habe schon tabellen angelegt und mit werten befüllt, auch aus dem php-script heraus.

allerdings taucht nun ein problem auf. ich benötige die anzahl der zurückgelieferten zeilen einer select-anweisung. in mysql benutzt man dazu "mysql_num_rows". für oracle gibt es "oci-num-rows". diese funktion liefert aber lt. doku und lt. test nicht die anzahl der zurückgelieferten zeilen einer select-anweisung.
welche funktion kann ich an dieser stelle benutzen?

gruß, René
 
Zurück