{"id":31,"date":"2011-07-19T15:01:01","date_gmt":"2011-07-19T14:01:01","guid":{"rendered":"http:\/\/www.hman-projects.de\/?p=31"},"modified":"2011-09-08T11:22:35","modified_gmt":"2011-09-08T10:22:35","slug":"oracle-und-mysql-vereinigen-hs-service-und-datenbanklink","status":"publish","type":"post","link":"https:\/\/www.hman-projects.de\/?p=31","title":{"rendered":"Oracle und MySQL vereinigen, &#8211; HS Service und Datenbanklink"},"content":{"rendered":"<h2>Problemstellung<\/h2>\n<div>\n<ul>\n<li>Bestimmte Gesch\u00e4ftsbereiche erwarten ein Reporting \u00fcber Informationsquellen, die auf mehrere Applikationen und Datenbankserver verteilt sind<\/li>\n<li>In der Praxis kann dieses Problem auf der Clientseite \u2013 oder auf der Serverseite gel\u00f6st werden.<!--more--><\/li>\n<\/ul>\n<\/div>\n<p>Eine Serverseitige L\u00f6sung hat denn Vorteil, dass auch SQL-Abfragen \u00fcber mehrere Datenbanken hinweg m\u00f6glich sind.<\/p>\n<div>\n<ol>\n<li>Welche Ger\u00e4te sind die Datenbank A aufgef\u00fchrt, die in Datenbank B nicht enthalten sind.<\/li>\n<li>Eine Clientseitige L\u00f6sung hat den Vorteil, dass sich die Server nicht gegenseitig \u201esehen\u201c m\u00fcssen<\/li>\n<li>Die Alternative der Replikation der Daten von einer Datenbank in ein anderes DBMS kann als Alternative bei intensiven Abfragen \u00fcber gemeinsame Zusammenh\u00e4nge in Betracht gezogen werden.<\/li>\n<\/ol>\n<figure id=\"attachment_32\" aria-describedby=\"caption-attachment-32\" style=\"width: 783px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/www.hman-projects.de\/wp-content\/uploads\/2011\/07\/db1.png\"><\/a><a href=\"http:\/\/www.hman-projects.de\/wp-content\/uploads\/2011\/07\/db11.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-33\" title=\"Methoden der Datenbank-Kopplung 2\" src=\"http:\/\/www.hman-projects.de\/wp-content\/uploads\/2011\/07\/db11.png\" alt=\"Methoden der Datenbank-Kopplung 2\" width=\"783\" height=\"305\" srcset=\"https:\/\/www.hman-projects.de\/wp-content\/uploads\/2011\/07\/db11.png 783w, https:\/\/www.hman-projects.de\/wp-content\/uploads\/2011\/07\/db11-300x116.png 300w\" sizes=\"(max-width: 783px) 100vw, 783px\" \/><\/a><figcaption id=\"caption-attachment-32\" class=\"wp-caption-text\">Methoden der Datenbank-Kopplung<\/figcaption><\/figure>\n<h2>Die Basis, Oracle &#8211; zu Oracle &#8211; Database-Link<\/h2>\n<p>Eine Oracle Datenbank kann sich auf einer anderen Datenbank als Client connecten.<br \/>\nUm dieses Script zu verwenden, muss der DB-Name der entfernten Datenbank in der der Datei TNSNAMES.ORA hinterlegt sein.<\/p>\n<div>CREATE public DATABASE LINK<br \/>\nDbLinkName<br \/>\nCONNECT TO USERNAME IDENTIFIED BY PASSWORT<br \/>\nUSING \u2018DB_Name&#8216;;<\/div>\n<div>\n<div>Danach kann auf Tabellen in der Form<br \/>\nselect * from tabellenName@DbLinkName;<br \/>\nzugegriffen werden<\/div>\n<\/div>\n<div>\n<div>\u2013TNS-Names \u2013 Beispiel<\/div>\n<p>MEINE_CMDB =<br \/>\n(DESCRIPTION =<br \/>\n(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.5.2)(PORT = 1521))<br \/>\n(CONNECT_DATA =<br \/>\n(SERVER = DEDICATED)<br \/>\n(SERVICE_NAME = XE)<br \/>\n)<br \/>\n)<\/p>\n<h2>Oracle zu MySQL-Datebase-Link<\/h2>\n<\/div>\n<div>Will man nun einen Datenbanklink von einer Oracle auf eine MySQL-Datenbank realisiseren, muss man die HS-Services der Oracle-Datenbank nutzen, die aus der MySQL dann eine Oracle-Instanz machen,\u00a0 .. nat\u00fcrlich nur virtuell.<\/div>\n<div>\n<div>\n<ul>\n<li>Kernst\u00fcck sind HS-Services (Middleware) der Oracle-Datenbank, die fremde Datenbanken wie einen Client connecten und diese Fremde Datenbank dann wie eine Oracle-Datenbank dann verf\u00fcgbar machen.<\/li>\n<li>Auf Grund unterschiedlichen Datentypen und Syntax sollte man jede in der Oracle-DB verf\u00fcgbar gemachte fremde MySQL-Tabelle \u00fcber einen View verf\u00fcgbar machen<\/li>\n<\/ul>\n<p><a href=\"http:\/\/www.hman-projects.de\/wp-content\/uploads\/2011\/07\/db2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-34\" title=\"HS-Service, von Oracle zu MySQL\" src=\"http:\/\/www.hman-projects.de\/wp-content\/uploads\/2011\/07\/db2.png\" alt=\"HS-Service, von Oracle zu MySQL\" width=\"350\" height=\"534\" srcset=\"https:\/\/www.hman-projects.de\/wp-content\/uploads\/2011\/07\/db2.png 350w, https:\/\/www.hman-projects.de\/wp-content\/uploads\/2011\/07\/db2-196x300.png 196w\" sizes=\"(max-width: 350px) 100vw, 350px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2>Installationsschritte<\/h2>\n<ol>\n<li>Zugriff auf die MySQL-Datenbank erm\u00f6glichen mittels<br \/>\nGrant select on &#8230;. ,und anschlie\u00dfend flush privileges&#8230;<\/li>\n<li>MySQL-ODBC-Treiber unter Windows installieren, auf dem die Oracle-DB l\u00e4uft. In der Systemsteuerung\n<div>\n<ul>\n<li>ODBC Data Source Administrator<\/li>\n<li>System DSN -&gt; Ad<\/li>\n<\/ul>\n<\/div>\n<\/li>\n<li>HS Service konfigurieren (unter Oracle XE)<br \/>\nC:\\oraclexe\\app\\oracle\\product\\10.2.0\\server\\hs\\admin<br \/>\nNeue Datei &#8222;initmyodbc.ora&#8220; anlegen, Inhalt:&nbsp;<\/p>\n<pre># HS init parameters\r\nHS_FDS_CONNECT_INFO = myodbc\r\nHS_FDS_TRACE_LEVEL = 0<\/pre>\n<\/li>\n<li>TNSNAMES.ora konfigurieren, MyODBC-Eintrag hinzuf\u00fcgen<br \/>\nmyodbc =<br \/>\n(DESCRIPTION =<br \/>\n(ADDRESS_LIST =<br \/>\n(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(Port = 1521))<br \/>\n)<br \/>\n(CONNECT_DATA =(SERVICE_NAME = myodbc)<br \/>\n)<br \/>\n(HS = OK)<br \/>\n)<\/li>\n<li>Listener.ora im gleichen Verzeichnis anpassen und SID_LIST erweitern<br \/>\n(SID_DESC =<br \/>\n(ORACLE_HOME = C:\\oraclexe\\app\\oracle\\product\\10.2.0\\server)<br \/>\n(SID_NAME = myodbc)<br \/>\n(PROGRAM = hsodbc)<br \/>\n)<br \/>\nGgf. Dienste neu starten!<\/li>\n<li>DB-Link unter Oracle einrichten\n<div>\u2013create database link myodbc connect to &#8222;mysqlusername&#8220; identified by &#8222;mysqluserpassword&#8220; using &#8218;myodbc&#8216;;<\/div>\n<\/li>\n<li>Kontrolle, &#8211; select * from mysqltabelle@myodbc; geht.<\/li>\n<\/ol>\n<h2>Oracle- zu MySQL-Views erstellen<\/h2>\n<p>Viele Tests haben zu dem Ergebnis gef\u00fchrt, dass die Nutzung der MySQL-Tabellen in komplexen SQL-Statements in der Oracle-DB nur \u00fcber Views in der dargestellten Form m\u00f6glich ist. Ggf. muss auf der MySQL-Seite eine Typkonvertierung stattfinden, so dass nur kompatible Datentypen sichtbar gemacht werden!<br \/>\nJe nach ODBC-Connection kann man eine implizite Typkonvertrierung im ODBC-Treiber aktivieren.<\/p>\n<pre>Create or replace view v_on_mysql_table_a as\r\nSelect\r\n\u00a0\"spalte_a\"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 as spalte_a\r\n,\"spalte_b\"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 as spalte_b\r\n....\r\nfrom mysqltable_a@myodbc;<\/pre>\n<p>Will man Daten aus einer gro\u00dfen MySQL-Datenbank mittels APEX in einer Oracle-Datenbank verf\u00fcgbar machen, reicht als Oracle-Datennbank schon Oracle-XE.<\/p>\n<p>Die Views kann man nun einzelnen Rollen und Usern verf\u00fcgbar machen<\/p>\n<p>Grant select\u00a0\u00a0 on v_on_mysql_table_a \u00a0 to\u00a0\u00a0\u00a0 username|rolename;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Problemstellung Bestimmte Gesch\u00e4ftsbereiche erwarten ein Reporting \u00fcber Informationsquellen, die auf mehrere Applikationen und Datenbankserver verteilt sind In der Praxis kann dieses Problem auf der Clientseite \u2013 oder auf der Serverseite gel\u00f6st werden.<\/p>\n","protected":false},"author":1,"featured_media":32,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-31","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oracle-sql"],"_links":{"self":[{"href":"https:\/\/www.hman-projects.de\/index.php?rest_route=\/wp\/v2\/posts\/31"}],"collection":[{"href":"https:\/\/www.hman-projects.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hman-projects.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hman-projects.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hman-projects.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=31"}],"version-history":[{"count":5,"href":"https:\/\/www.hman-projects.de\/index.php?rest_route=\/wp\/v2\/posts\/31\/revisions"}],"predecessor-version":[{"id":36,"href":"https:\/\/www.hman-projects.de\/index.php?rest_route=\/wp\/v2\/posts\/31\/revisions\/36"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hman-projects.de\/index.php?rest_route=\/wp\/v2\/media\/32"}],"wp:attachment":[{"href":"https:\/\/www.hman-projects.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=31"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hman-projects.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=31"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hman-projects.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=31"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}