"Microsoft Power BI" als Self-Service BI Tool (BI: Business Intelligence) bietet die Anbindung an eine lange Liste von Datenquellen, welche stetig erweitert wird. Die Anbindung mancher Systeme bringt dabei gewisse Hürden mit sich. Hintergrundinformationen über Fehler und deren Ursache sind gelegentlich schwer zu finden. Bei Datenquellen, wie Excel-Dateien oder Microsoft SQL-Servern, können die Konnektoren ohne Weiteres verwendet werden. Bei der Anbindung von Systemen anderer Anbieter können weitere Konfigurationen erforderlich sein, um Fehler beim Verbindungsaufbau zu vermeiden. So bei der Anbindung der Oracle Autonomous Database (OADB) als Datenquelle für einen Power BI Bericht. Daher möchte ich in diesem Artikel darstellen, wie eine Verbindung zwischen Power BI Desktop und OADB erfolgreich hergestellt werden kann.
Warum einfach, wenn es auch mit Fehlern geht …
Gerade wenn es um die Verknüpfung zweier Systeme konkurrierender Anbieter geht, kann es gerne mal zu Schwierigkeiten kommen. In diesem Fall soll Microsofts Power BI auf Daten in einer Oracle Cloud-Datenbank zugreifen.
Wird versucht, wie üblich über einen Power BI Konnektor (Daten abrufen > Oracle-Datenbank) eine Verbindung zur Oracle Autonomous Database (OADB) herzustellen, so erscheint nach der Auswahl des Konnektors die erste Meldung, welche im ersten Schritt der Anleitung zu sehen ist. Diese bezieht sich auf den möglicherweise nicht ordnungsgemäß ausgeführten Oracle-Client und enthält einen relevanten Hinweis für die nächsten Schritte.
Im weiteren Verlauf meiner Verbindungsversuche sind einige weitere Fehlermeldungen erschienen, die es zu verstehen und zu beseitigen galt. Eine der schwerwiegendsten war folgende
„Fehler beim Lesen von Daten aus dem Anbieter: "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
“
Bei der Recherche zu dieser Meldung kamen Hinweise auf, dass möglicherweise die verwendete Power BI Desktop Version aus dem Windows Store installiert wurde. Aktuell muss Power BI Desktop allerdings von der offiziellen Microsoft Download-Seite heruntergeladen und installiert werden, um erfolgreich eine Verbindung zur OADB herstellen zu können.
Natürlich können nicht alle möglichen Fehlersituationen an dieser Stelle beschrieben werden und Microsoft bemüht sich sicherlich permanent um die Verbesserung des Services. Dennoch möchte ich noch zwei weitere Fehlermeldungen nennen, die in meiner Testumgebung gelöst werden mussten.
Die folgende Fehlermeldung konnte behoben werden, indem das Oracle Wallet (Zugangsdaten zur OADB), welches als ZIP-Verzeichnis vorliegt, entpackt wurde. Um von Power BI verwendet werden zu können, muss es, im Gegensatz zur Verwendung beim SQL-Developer, entpackt werden.
„Oracle: ORA-12154: TNS:could not resolve the connect identifier specified
“
Die dritte Fehlermeldung, die ich erwähnen möchte, ist die folgende:
„oracle ora-28759 failure to open file power bi
“
Sie bezieht sich auf den siebten Schritt dieser Anleitung. Bitte beachten Sie, dass hier in der sqlnet.ora des Wallets "?/network/admin
" angepasst werden muss. Hier sollte der entsprechende Pfad zu dem extrahierten Wallet definiert sein.
Der Weg, nein, die Verbindung ist das Ziel
Nach etlichen Versuchen, die Fehlermeldungen zu verstehen und die Probleme zu lösen, bin ich auf die unten verlinkte Dokumentation gestoßen. Sie erklärt grundlegend, was zu beachten ist, wenn eine Verbindung zur OADB aufgebaut werden soll.
Lösungsorientiert denken – die Schritte zum Ziel
Mit der richtigen Power BI Installation und einem funktionierenden Zugang (mit Wallet) zur OADB, können die folgenden Schritte abgearbeitet werden, um so erfolgreich eine Verbindung zwischen Power BI und der Oracle Autonomous Database herzustellen. Zu jedem Schritt gibt es eine Bildstrecke mit entsprechenden Beschreibungen und Details.
Schritt 1 – Benötigte ODP.NET Version prüfen
Hinweis: Für die folgenden Schritte 4 und 5 ist es relevant zu wissen, ob eine unmanaged oder eine managed Version des ODP.NET benötigt wird. Die Unterschiede liegen dabei in der Konfiguration von ODP.NET. Dies kann wie folgt herausgefunden werden.
Überprüfen Sie, ob Power BI eine managed oder eine unmanaged ODP.NET für die Verbindung zur OADB nutzt. Dazu wird der Oracle-Konnektor angeklickt – wie üblich über Daten abrufen > Datenbanken > Oracle Datenbank. (1/3)
Wenn die angezeigte Meldung versucht „Oracle.DataAccess.Client“ zu nutzen, muss die unmanaged ODP.NET verwendet werden. Wird „Oracle.ManagedDataAccess.Client“ ausgegeben, so ist die managed ODP.NET erforderlich. Die Meldung kann mit OK geschlossen werden. Der weitere Vorgang kann vorerst abgebrochen werden. (2/3)
Im Vorfeld ist zu klären, ob die 32- oder 64bit Version von Power BI verwendet wird. Sollte dies nicht bekannt sein, kann über Datei > Info die Version überprüft werden. Entsprechend dieser Information wird die 32-bit, bzw. 64-bit managed bzw. unmanaged ODP.NET benötigt. (3/3)
Schritt 2 – Download und Entpacken der ODP.NET bzw. des ODAC-Pakets
Auf der folgenden Webseite von Oracle kann eine ODAC (Oracle Data Access Components) Version heruntergeladen werden (Hinweis: Die hier verwendete Webseite wurde aktualisiert – siehe nächstes Bild).
https://www.oracle.com/database/technologies/dotnet-odacdev-downloads.html
In unserem Fall wird das Paket 64-bit ODAC 19.3 verwendet. Für den Download wird ein Oracle-Account benötigt. (1/3)
Ergänzung: Auf der aktuellen Webseite gibt es nur noch ODAC 21.c und 19.c (.c entspricht .3) zum Download. Die 32-bit und 64-bit Versionen befinden sich in einem Paket. (2/3)
Das heruntergeladene ZIP-Verzeichnis sollte in einer für den Anwendungsfall neu erstellten Verzeichnis-Struktur, z. B. unter C:\OADB\ entpackt werden (C:\OADB\ODAC193Xcopy_x64). Dieses Verzeichnis kann auch für alle weiteren Verzeichnisse und Dateien in diesem Zusammenhang genutzt werden. Wichtig ist, dass der Pfad weiterhin konsequent verwendet wird – in dem vorliegenden Beispiel wird der Einfachheit halber direkt unter C:\ gearbeitet (C:\ODAC193Xcopy_x64).
Schritt 3 – Installation der ODP.NET
Die Windows Eingabeaufforderung (cmd) wird mit Administrator-Rechten geöffnet und im Verzeichnis C:\ODAC193Xcopy_x64 (cd C:\ODAC193Xcopy_x64) wird der Befehl install.bat odp.net4 odp64 ausgeführt (in meinem Fall: install.bat odp.net4 C:\odp64 odp64).
Schritt 4.1 – Unmanaged: Befehle zur Konfiguration
[Bitte beachten: Nur für unmanaged]
Anschließend wird in das folgende Verzeichnis navigiert:
C:\ODAC193Xcopy_x64\odp.net4\odp.net\bin\4
Wird eine unmanaged Version verwendet, so müssen nun die folgenden beiden Befehle abgesetzt werden. Der erste lautet:
OraProvCfg /action:gac /providerpath:"Oracle.DataAccess.dll"
Alternativ kann dieser auch in dem Verzeichnis C:\odp64\odp.net\bin\4 abgesetzt werden.
Der zweite Befehl lautet:
OraProvCfg /action:config /product:odp /frameworkversion:v4.0.30319 /providerpath:"Oracle.DataAccess.dll"
Schritt 4.2 – Managed: Befehle zur Konfiguration
[Bitte beachten: Nur für managed]
Anschließend wird in das folgende Verzeichnis navigiert:
C:\ODAC193Xcopy_x64\odp.net4\odp.net\bin\4
Wird eine managed Version verwendet, so müssen nun die folgenden beiden Befehle abgesetzt werden:
OraProvCfg /action:gac
/providerpath:"../../managed/common/Oracle.ManagedDataAccess.dll"
(Alternativ kann dieser auch in dem Verzeichnis C:\odp64\odp.net\bin\4 abgesetzt werden).
Der zweite Befehl lautet:
OraProvCfg /action:config /product:odpm /frameworkversion:v4.0.30319
/providerpath:"../../managed/common/Oracle.ManagedDataAccess.dll"
Schritt 5 – Nur für Unmanaged: Umgebungsvariable setzen
Falls Sie den Schritt 4.1 ausgeführt haben, ist dieser Schritt zusätzlich notwendig. Über die Systemsteuerung oder die Suche 'Systemumgebungsvariablen bearbeiten' im Windows-Startmenü muss nun eine neue Umgebungsvariable angelegt werden. (1/4)
Im Reiter 'Erweitert' werden die 'Umgebungsvariablen' ausgewählt. (2/4)
Unter 'Systemvariablen' wird die Variable 'Path' markiert und auf 'Bearbeiten' geklickt. (3/4)
In dem Bearbeitungsfenster kann eine neue Variable mit dem Wert 'C:\odp64' erstellt und mit "OK" bestätigt werden. (4/4)
Schritt 6 – Oracle Wallet entpacken und in den Umgebungsvariablen hinterlegen
Das Oracle Wallet beinhaltet die Zugangsinformationen für die OADB. Es ist als ZIP-Datei gepackt und kann beispielsweise auch im SQL Developer genutzt werden, um Zugriff auf die OADB zu erlangen. Für unseren Anwendungsfall muss das Wallet entpackt werden. In diesem Beispiel wurde es unter C:\ abgelegt und entpackt (angelegte Pfad-Struktur C:\OADB\ verwenden). (1/5)
Als Nächstes muss das Fenster der Windows Umgebungsvariablen aufgerufen werden (Systemumgebungsvariablen bearbeiten > Erweitert > Umgebungsvariablen – vgl. Schritt 5). Hier wird eine neue Benutzervariable mit dem Namen 'TNS_ADMIN' erstellt. Als Wert wird der Pfad angegeben, unter dem das Wallet abgelegt wurde – in diesem Fall 'C:\Wallet_BIDB'. (2/5)
Die Variable wird angelegt und in der Liste angezeigt, nachdem mit "OK" bestätigt wurde. (3/5)
Sollen Verbindungen zu mehreren Autonomous Datenbanken mit unterschiedlichen Wallets hergestellt werden, so muss in der 'tnsnames.ora' des jeweiligen entpackten Wallet-Verzeichnisses die 'description' der Connection-Strings um den Pfad zum jeweiligen Wallet erweitert werden (Beispiel im nächsten Bild). (4/5)
Als letzter Eintrag unter 'description' wird (MY_WALLET_DIRECTORY= ) eingetragen. Das Bild zeigt eine originale 'tnsnames.ora', welche in einem Editor-Fenster geöffnet wurde. Eine Zeile im Editor bildet dabei einen Connection-String ab. Innerhalb dieses Fensters sind zwei Beispiel-tnsnames.ora abgebildet, bei denen der gesamte String sichtbar ist. Der einzufügende Eintrag ist rot unterstrichen.
Als Beispiel in der tnsnames.ora des Wallets Wallet_BIDB für den String 'bidb_high': (description = … (security= … (MY_WALLET_DIRECTORY=C:\Wallets\Wallet_BIDB))) und in der tnsnames.ora des Wallets Wallet_test wird der String 'test_low' mit dem Pfad C:\Wallets\Wallet_test erweitert. (5/5)
Schritt 7 – Zum Schluss kommt das Ziel – Verbindung zur OADB herstellen
Der 'tnsnames.ora' können die Namen der Connection-Strings entnommen werden, die zur Verfügung stehen. Hier im Beispiel wird der erste Eintrag verwendet ('bidb_high'). Die Namen weichen bei unterschiedlichen Wallet-Namen ab. (1/6)
Falls nicht ohnehin schon geschehen, sollte Power BI Desktop geschlossen und neu gestartet werden. Anschließend wird über 'Daten abrufen' wieder der Oracle-Konnektor ausgewählt. Möglicherweise erscheint nochmals die Meldung, dass der empfohlene Anbieter nicht installiert ist. Diese kann mit "OK" bestätigt werden. (2/6)
Der Dialog zur Eingabe des Datenbank-Servers erscheint. Hier wird der Name des Connection-Strings eingetragen: "bidb_high". (3/6)
Im nächsten Dialog müssen die Zugangsdaten für die Datenbank eingegeben werden, zu der die Verbindung hergestellt werden soll (Reiter 'Datenbank', nicht 'Windows'). Hier wurde neben dem 'admin'-Nutzer auch ein zusätzlicher Account erstellt, welcher nun verwendet wird: 'NYC_TAXI_DATA'. Mit der Eingabe des zugehörigen Kennworts ist schließlich eine Verbindung möglich. Sollte der Verbindungsaufbau länger dauern oder eine Fehlermeldung aufkommen, so muss möglicherweise zusätzlich die Datei 'sqlnet.ora' angepasst werden. (4/6)
Die 'sqlnet.ora' ist ebenfalls im entpackten Wallet-Verzeichnis zu finden. Hier ist gegebenenfalls der Eintrag 'WALLET_LOCATION' als 'DIRECTORY' folgendes eingetragen:
?/network/admin
Dies muss durch den Pfad des Wallets ersetzt werden. Hier im Beispiel:
DIRECTORY=?/network/admin ➔ DIRECTORY="C:\Wallet_BIDB" (5/6)
Anschließend sollte nach der Eingabe der Zugangsdaten bei einer erfolgreichen Verbindung zur OADB der Navigator geöffnet werden, um die gewünschten Tabellen der Datenbank auswählen zu können. (6/6)
Damit ist die Verbindung von Power BI Desktop zu der Oracle Autonomous Database erfolgreich hergestellt!
Zum guten (Ab)-Schluss
Laut der oben verlinkten Anleitung kann die "FetchSize" einen erheblichen Einfluss auf die Performance beim Datenaustausch zwischen der OADB und Power BI haben. Dies ist naturgemäß erst bei größeren Datenmengen relevant. Aufgrund des Umfangs wurde dies hier nicht getestet, weshalb dazu keine genaueren Angaben und Schritte gezeigt werden.
Insgesamt wird deutlich, dass eine "einfache" Verbindung zwischen Anwendungen zweier konkurrierender Anbieter manchmal Hürden mit sich bringt. Es sind einige Schritte und Einstellungen nötig, damit Daten aus der Oracle Autonomous Database in Power BI Desktop über den Oracle-Konnektor importiert werden können. Mit dem richtigen Hintergrundwissen können diese Hürden jedoch überwunden werden und die Power BI Verbindung zur OADB wird zum Erfolg.
Seminarempfehlung
ORACLE DATENBANKADMINISTRATION GRUNDLAGEN DB-ORA-03
Zum Seminar
Kommentare