Verknüpfung einer Oracle-Tabelle mit Microsoft Access über ODBC
Hintergrund:
Vor einiger Zeit hatten wir eine kleine Datenbank-Anwendung auf Basis von Microsoft Access implementiert, die nur von wenigen Nutzern gleichzeitig genutzt wurde. Die Access-Mappe mit den Tabellen lag auf einem Windows-Share. Die Anwendung mit den Formularen wurde in einer lokalen Access-Instanz ausgeführt. Die Tabellen wurden von der Version auf dem Windows-Share mit der lokalen Instanz verknüpft.
Als die Anzahl der Nutzer stieg, stellte sich heraus, dass die Datenbank auf dem Windows-Share nicht gut genug skalierte, um den gleichzeitigen Zugriff flüssig zu ermöglichen. Mittels eines VBA-Makros haben wir die Access-Tabellen exportiert und in eine Oracle-Instanz importiert.
Die Verknüpfung mit der Oracle-Datenbank über ODBC (Open Database Connectivity) gestaltete sich jedoch schwierig, da für diese Datenbank kein TNS-Name (Transparent Network Substrate) im ODBC-Treiber konfiguriert war und mangels Zugriffsrechten auf den Clients auch nicht konfiguriert werden konnte. Der Access-Client sollte die Oracle-Datenbank daher direkt über die IP-Adresse und den Port ansprechen.
Leider hat die Google-Recherche dazu nur bruchstückhafte Ergebnisse geliefert. Daher haben wir diesen speziellen Fall in einem eigenen VBA-Makro umgesetzt:
Anleitung:
Weitere informationen zu Installation finden sie hier:
- Systemsteuerung > Verwaltung > ODBC-Datenquellen (64-Bit)
Bei uns war dies der Treiber „Oracle in OraClient12Home1“. Dieser Wert muss in das Makro in geschweiften Klammern übernommen werden.
ggf. beim DB-Admin erfragen
http://gist.github.com/AntonGoedecke/d97974e7aaed101b5e6f58923a3b7bec
Die weiteren Parameter des Makros sind so eingestellt, dass die Tabelle von Oracle nicht kopiert, sondern nur verlinkt wird (acLink). In diesem Fall wird auch das Passwort mit in der Client-DB gespeichert (StoreLogin), was aber nur für Funktionsuser sinnvoll ist. Ggf. sollte man diesen Parameter aus Sicherheitsgründen ändern.
http://gist.github.com/AntonGoedecke/4be0f7bd0e68e463cf1236dc1f230673
Weitere hilfe finden sie hier:
Wir hoffen, dass Euch dieses Makro in ähnlichen Situationen weiterhilft. Falls Ihr weitere Tipps dazu habt, lasst es uns gerne wissen. Wir veröffentlichen Sie gerne an dieser Stelle.