Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Konfigurieren von Pentaho Data Integration zur Verwendung von Oracle Wallet für Oracle Cloud

Einführung

Oracle Cloud-Datenbanken verwenden die Oracle Wallet-Sicherheit. Das Oracle Wallet enthält kryptografische Zertifikate und Schlüssel, die verwendet werden, um eine sichere, verschlüsselte Kommunikation zwischen einem Oracle-Client und dem Ziel-Oracle-Datenbankserver herzustellen. Pentaho Data Integration kann so konfiguriert werden, dass Oracle Wallet verwendet wird, um eine sichere Kommunikation zwischen PDI und einem Oracle-Cloud-Server herzustellen.

Dieses Tutorial geht davon aus, dass Sie die folgenden Komponenten eingerichtet haben:

  • Ein Oracle Cloud-Konto mit mindestens einer ausgeführten Oracle-Datenbankinstanz. Dieses Tutorial (Link hier) enthält die Schritte zum Einrichten eines Oracle Cloud-Kontos und einer Autonomous Database. Die Konnektivität zwischen einem Client wie Oracle SQL Developer und der autonomen Datenbank sollte getestet und bestätigt werden.
  • Pentaho Data Integration Version 7.x oder 8.x auf Windows oder MacOSX installiert. Anweisungen zur Installation der neuesten Version von PDI finden Sie hier (Windows) und hier (MacOSX). Achten Sie besonders auf die verwendete Version des Java Development Kits. Ab Januar 2019 wurde Pentaho Data Integration 8.3, das auf dem Java Development Kit 1.8 ausgeführt wird, getestet und als ordnungsgemäß funktionierend befunden.

Dieses Tutorial geht davon aus, dass PDI unter C:\Pentaho\data-integration unter Windows oder /Users//Pentaho/data-integration unter MacOSX installiert wurde.

Im nächsten Abschnitt finden Sie Anweisungen zum Herunterladen und Installieren der Oracle JDBC-Treiber.

Installieren der Oracle JDBC-Treiber in Pentaho Data Integration

Pentaho Data Integration erfordert die Installation der Oracle JDBC-Treiber, um eine Verbindung zu einer beliebigen Oracle-Datenbank herzustellen. Neben der Hauptdatei ojdbc8.jar sind auch mehrere zusätzliche Dateien erforderlich, die Teil der vollständigen JDBC-Distribution sind. Stellen Sie sicher, dass Sie nur die JDBC-Treiberkomponenten herunterladen und installieren, die für JDK 1.8 kompiliert wurden. Diese haben eine „8“ im Dateinamen.
Um loszulegen, besuchen Sie die Download-Seite für Oracle 12c JDBC-Treiber unter:
https://www.oracle.com/database/technologies/jdbc-ucp -122-downloads.html

Scrollen Sie nach unten zu dem Bereich, in dem sich die einzelnen Downloads befinden.

Die herunterzuladenden Dateien sind:

ojdbc8.jaroraclepki.jarosdt_cert.jarosdt_core.jar

Jede dieser Dateien sollte heruntergeladen und in den Ordner Pentaho data-integration\lib kopiert werden.

Achten Sie wie immer darauf, Pentaho Data Integration neu zu starten, damit die neuen JAR-Dateien erkannt werden.

Auf der folgenden Seite wird das Oracle Wallet vom Cloud-Server heruntergeladen.

Oracle Wallet von Oracle Cloud herunterladen

Hinweis:Wenn Sie Safari unter MacOSX verwenden, ändern Sie die Einstellungen in Safari, um zu verhindern, dass „sichere“ Dateien nach dem Herunterladen automatisch geöffnet werden. Safari> Einstellungen> Deaktivieren Sie das Kontrollkästchen „Sichere“ Dateien nach dem Herunterladen öffnen.

Melden Sie sich bei Ihrer Oracle Cloud-Konsole an und navigieren Sie zur Seite Autonomous Database. Klicken Sie auf den Link unter dem Anzeigenamen für eine Ihrer Datenbanken.

Wenn der Bildschirm „Details“ angezeigt wird, klicken Sie auf die DB-Verbindung Schaltfläche.

Wenn das Datenbankverbindungsfenster erscheint, klicken Sie auf Wallet herunterladen Schaltfläche.

Geben Sie ein passendes Passwort für das Wallet ein und klicken Sie dann auf den blauen Herunterladen Schaltfläche.

Beachten Sie, dass der Name der Wallet-Datei aus dem Werk „Wallet“ besteht, dem der Name der autonomen Datenbanken hinzugefügt wird. In diesem Beispiel lautet die Datei:Wallet_ATPDatabase1.zip.
Achten Sie darauf, Ihre Wallet-Datei an einem sicheren Ort zu speichern.

Gehen Sie zurück zum Bildschirm Datenbankdetails erscheint, klicken Sie auf DB-Verbindung Taste erneut. Scrollen Sie nach unten, bis Sie den Abschnitt mit dem Titel Verbindungszeichenfolgen sehen . Beachten Sie, dass eine Verbindungszeichenfolge einem bestimmten Verbindungstyp entspricht, der in der Datei tnsnames.ora gespeichert ist, die in der Brieftasche enthalten ist. Notieren Sie sich diese Namen wie den mit _HIGH am Ende. Diese Namen sollten aus dem Namen Ihrer Datenbank (ohne Leerzeichen) bestehen, gefolgt von entweder _HIGH, _MEDIUM oder _LOW. In diesem Beispiel ist der Name der Datenbank „ATP Database1“, also heißt die erste Verbindungszeichenfolge:ATPDatabase1_HIGH. Notieren oder kopieren und speichern Sie den Eintrag unter TNS Name für Ihre Datenbank.

Schritte zur Integration des Oracle Wallet in PDI finden Sie auf der nächsten Seite.

Integration von Oracle Cloud Wallet in Pentaho Data Integration

Eine Reihe von Schritten muss befolgt werden, um die Pentaho-Datenintegration für die Verwendung von Oracle Wallet zu leiten.

Stellen Sie sicher, dass Pentaho Data Integration mit den erforderlichen Oracle JDBC-Treibern installiert ist. PDI sollte zu diesem Zeitpunkt nicht ausgeführt werden.

Bearbeiten Sie die custom.properties Datei

Suchen Sie die Datei custom.properties im Ordner data-integration\system\karaf\etc\.

Verwenden Sie Notepad (Windows) oder TextEdit (MacOSX), um die Datei custom.properties zu bearbeiten, und fügen Sie die folgende Zeile am Ende der Datei hinzu (falls sie noch nicht vorhanden ist).
org.apache.karaf.security.providers =oracle.security.pki.OraclePKIProvider

Speichern Sie die Datei custom.properties und beenden Sie den Texteditor.

Bearbeiten Sie die Spoon.bat oder spoon.sh Dateien

Bearbeiten Sie für Windows-Installationen die Datei Spoon.bat (verwenden Sie Notepad oder einen anderen Texteditor). Scrollen Sie bis ungefähr zu Zeile 112 vor der Abschnitt mit REM ** Run… **

Fügen Sie die folgenden Zeilen hinzu (gelb hervorgehoben).

REM ************************************************* ********************REM ** Java-Laufzeitoptionen setzen **REM ** Ändern Sie 2048m auf höhere Werte, falls Ihnen der Speicher ausgeht **REM ** oder Setzen Sie die Umgebungsvariable PENTAHO_DI_JAVA_OPTIONS **REM ****************************************** ************************if "%PENTAHO_DI_JAVA_OPTIONS%"=="" setze PENTAHO_DI_JAVA_OPTIONS="-Xms1024m" "-Xmx2048m" "-XX:MaxPermSize =256m"set OPT=%OPT% %PENTAHO_DI_JAVA_OPTIONS% "-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2" "-Djava.library.path=%LIBSPATH%" "-DKETTLE_HOME=%KETTLE_HOME%" "- DKETTLE_REPOSITORY=%KETTLE_REPOSITORY%" "-DKETTLE_USER=%KETTLE_USER%" "-DKETTLE_PASSWORD=%KETTLE_PASSWORD%" "-DKETTLE_PLUGIN_PACKAGES=%KETTLE_PLUGIN_PACKAGES%" "-DKETTLE_LOG_SIZE_LIMIT=%KETTLE_LOG_SIZE_LIMIT%" "-DKETTLE_LOG_SIZE_LIMIT=%KETTLE_LOG_SIZE_LIMIT%" "-DKETTLE_OOTRJN@JNDIKE_Optionen_ zur Unterstützung von Oracle Wallet Secure Connections@REM Geht davon aus, dass sich die Datei cwallet.sso im Ordner data-integration\Wallet\ befindet OPT="-Djavax.net.ssl.trustStore=%KETTLE_DIR%\Wallet\cwallet.sso" %OPT%set OPT="-Djavax.net.ssl.trustStoreType=SSO" %OPT%set OPT="-Djavax. net.ssl.keyStore=%KETTLE_DIR%\Wallet\cwallet.sso" %OPT%set OPT="-Djavax.net.ssl.keyStoreType=SSO" %OPT%set OPT="-Doracle.net.tns_admin=%KETTLE_DIR %\Wallet" %OPT%REM **************REM ** Ausführen... **REM **************

Speichern Sie die Datei spoon.bat und beenden Sie den Texteditor.

Klicken Sie unter MacOSX mit der rechten Maustaste auf die Datei spoon.sh und markieren Sie Öffnen mit und wählen Sie dann TextEdit-App aus .

Scrollen Sie in der Datei nach unten, bis Sie den Abschnitt mit „# optionale Zeile zum Anhängen eines Debuggers“ finden. Der hinzuzufügende Code wird in das Leerzeichen vor eingefügt diese Zeile.
Fügen Sie die folgenden Zeilen hinzu (im Bild unten blau hervorgehoben):

# Java-Optionen zur Unterstützung sicherer Oracle Wallet-Verbindungen# Geht davon aus, dass sich die Datei cwallet.sso in data-integration/Wallet/folderOPT="-Djavax.net.ssl.trustStore=${BASEDIR}/Wallet/cwallet.sso befindet ${OPT}"OPT="-Djavax.net.ssl.trustStoreType=SSO ${OPT}"OPT="-Djavax.net.ssl.keyStore=${BASEDIR}/Wallet/cwallet.sso ${OPT}" OPT="-Djavax.net.ssl.keyStoreType=SSO ${OPT}"OPT="-Doracle.net.tns_admin=${BASEDIR}/Wallet ${OPT}"

Speichern Sie die Datei spoon.sh und beenden Sie die TextEdit-App.

Kopieren Sie die Wallet-Dateien nach PDI

Stellen Sie sicher, dass Sie die Oracle Wallet aus der Cloud heruntergeladen haben (siehe vorherige Seite). In diesem Beispiel heißt die Datenbank „ATPDatabase1“ und der Name der Wallet-Datei lautet:Wallet_ATPDatabase1.zip
Entpacken Sie die Wallet-Datei und suchen Sie die folgenden vier Dateien darin:

cwallet.ssosqlnet.oratnsnames.oratrustore.jks

Diese Dateien sind auch in der folgenden Abbildung dargestellt:

Markieren Sie diese vier Dateien und kopieren Sie sie.

Navigieren Sie zum Pentaho Data Integration-Ordner. Erstellen Sie einen Unterordner mit dem Namen „Wallet“. Fügen Sie die vier Oracle Wallet-Dateien wie unten gezeigt in diesen Wallet-Ordner ein (Windows):

Kopieren Sie unter MacOSX die vier Wallet-Dateien und fügen Sie sie in den Ordner /Users//Pentaho/data-integration/Wallet ein.

PDI ausführen

Sobald diese Dateien vorhanden sind, können Sie Pentaho Data Integration normal starten, indem Sie die Datei Spoon.bat (oder spoon.sh für MacOSX-Benutzer) ausführen.
Um Pentaho Data Integration unter Windows auszuführen, doppelklicken Sie auf den Löffel. bat-Programm.

Um Pentaho Data Integration auf MacOSX auszuführen, klicken Sie mit der rechten Maustaste auf das Programm spoon.sh und wählen Sie Open with> Other... Ändern Sie den Filter auf „Alle Anwendungen“ und dann innerhalb von Dienstprogramme Ordner wählen Sie Terminal . Klicken Sie dann auf Öffnen Schaltfläche.

Im nächsten Abschnitt wird das Einrichten einer neuen Datenbankverbindung innerhalb von Pentaho Data Integration erläutert.

Erstellen einer neuen Datenbankverbindung in Pentaho Data Integration

Um das Oracle Wallet in Pentaho Data Integration zu verwenden, muss eine Verbindung vom Typ „Generic Database“ konfiguriert werden. Die folgenden Schritte beschreiben diesen Vorgang.

Erstellen Sie eine neue Datenbankverbindung, wenn Sie einen Tabelleneingabe-, Tabellenausgabe- oder Dimensionssuch-/Aktualisierungsschritt einrichten.

  • Geben Sie der neuen Verbindung einen Namen (Sie erfinden ihn).
  • Ändern Sie den Verbindungstyp zur generischen Datenbank.
  • Ändern Sie den Dialekt an Oracle.
  • Füllen Sie die Benutzerdefinierte Verbindungs-URL ein wie folgt:
    jdbc:oracle:thin:@atpdatabase1_high
    Wobei atpdatabase1_high ist der Name einer Ihrer Verbindungen zu Ihrer Oracle Cloud-Datenbank (überprüft auf der vorherigen Seite). Es besteht aus Ihrem Datenbanknamen mit angehängtem _high. Wenn Ihr Datenbankname beispielsweise „DB 123456789“ lautet, lautet eine mögliche Verbindungs-URL:
    jdbc:oracle:thin:@DB123456789_high
  • Geben Sie den Namen der benutzerdefinierten Treiberklasse ein wie folgt:
    oracle.jdbc.driver.OracleDriver
  • Geben Sie Ihren Benutzernamen und Ihr Passwort für Ihre Oracle Cloud-Datenbank ein.
  • Klicken Sie auf den Test Schaltfläche, um die Verbindung zu testen.

Das Testergebnis sollte wie unten gezeigt erfolgreich erscheinen.

Klicken Sie auf OK Schaltfläche, um den Verbindungstest zu schließen. Klicken Sie auf OK Schaltfläche, um diese Datenbankverbindung zu speichern.

Auf der nächsten Seite finden Sie einige häufige Verbindungsfehler.

Häufige Oracle Wallet-Verbindungsfehler und -probleme

Es gibt mehrere häufige Fehler und Probleme, die bei der Verwendung von PDI und Oracle Cloud auftreten können. Die Fehler und Lösungen / Workarounds sind unten aufgeführt.

IO-Fehler:Verbindungskennung konnte nicht aufgelöst werden

Wenn Sie eine Fehlermeldung wie „IO-Fehler:Verbindungskennung konnte nicht aufgelöst werden“ erhalten, kann entweder Ihre tnsnames.ora-Datei nicht gefunden werden oder der angegebene TNS-Name stimmt nicht mit einer der Verbindungen überein. Zum Beispiel:

Fehler beim Herstellen einer Verbindung zur Datenbank [OracleCloud] :org.pentaho.di.core.exception.KettleDatabaseException:Beim Versuch, eine Verbindung zur Datenbank herzustellen, ist ein Fehler aufgetreten. konnte die Verbindungskennung "atpdatabase1_hig"
nicht auflösen

Überprüfen Sie Ihre tnsnames.ora-Datei und stellen Sie sicher, dass Sie einen Verbindungsnamen verwenden, der in der tnsnames.ora-Datei erscheint. Verwenden Sie auf einem Windows-Betriebssystem das NotePad-Programm, um die Datei tnsnames.ora zu öffnen. Verwenden Sie unter MacOSX das Programm TextEdit, um die Datei tnsnames.ora zu öffnen.

ORA-01017:Ungültiger Benutzername/Passwort; Anmeldung verweigert

Wenn Sie eine Fehlermeldung wie „ORA-01017:ungültiger Benutzername/Passwort; Anmeldung verweigert“ bedeutet dies, dass der angegebene Oracle-Benutzername oder das Kennwort ungültig ist. Zum Beispiel:

Fehler beim Herstellen einer Verbindung zur Datenbank [OracleCloud] :org.pentaho.di.core.exception.KettleDatabaseException:Beim Versuch, eine Verbindung zur Datenbank herzustellen, ist ein Fehler aufgetreten :falscher Benutzername / falsches Passwort; Anmeldung verweigert

Überprüfen Sie den Benutzernamen und das Kennwort auf der Oracle-Datenbankinstanz, um sicherzustellen, dass sie korrekt sind. Beachten Sie, dass sich der Benutzername und das Kennwort der Oracle-Datenbank von Ihrem Konto auf der Oracle Cloud-Website unterscheiden. Normalerweise verwenden wir zum Testen den ADMIN-Benutzer und dieses Passwort wurde festgelegt, als die Autonomous Database oder das Autonomous Data Warehouse erstellt wurde. Zum Beispiel auf Seite 4 dieses Tutorials.
Stellen Sie sicher, dass das Passwort keines der folgenden Zeichen enthält:@ / \ ?

Zum Testen kann es am einfachsten sein, den ADMIN-Benutzer mit einem relativ „einfachen“ Passwort wie Pw123Pw123Pw123 zu verwenden .
Stellen Sie sicher, dass Sie das Passwort nach Abschluss des Tests in ein sichereres ändern.

Treiberklasse 'oracle.jdbc.driver.OracleDriver' konnte nicht gefunden werden

Wenn Sie eine Fehlermeldung erhalten wie:„Treiberklasse ‚oracle.jdbc.driver.OracleDriver‘ konnte nicht gefunden werden“, vergewissern Sie sich, dass die JDBC-Treiber in den Ordner „data-integration\lib“ kopiert und PDI neu gestartet wurden. Achten Sie auch darauf, keine Leerzeichen vor dem ‚o‘ in oracle.jdbc.driver... zu setzen Zum Beispiel:

Fehler beim Verbinden mit der Datenbank [OracleCloud] :org.pentaho.di.core.exception.KettleDatabaseException:Beim Versuch, eine Verbindung zur Datenbanktreiberklasse „oracle.jdbc.driver.OracleDriver“ herzustellen, ist ein Fehler aufgetreten. Stellen Sie sicher, dass die Der Treiber „Generische Datenbank“ (JAR-Datei) ist installiert. oracle.jdbc.driver.OracleDriver

ORA-12529 TNS:Connect-Anfrage basierend auf aktuellen Filterregeln zurückgewiesen

Oder Sie erhalten eine Fehlermeldung wie:„ORA-12529 TNS:Connect-Anfrage abgelehnt basierend auf aktuellen Filterregeln ” Wenn Sie sich mit der Datenbank verbinden, kann es sein, dass Ihre Netzwerksicherheitseinstellungen für die autonome Datenbank Verbindungen verhindern. Die vollständige Fehlermeldung kann wie folgt aussehen:

Fehler beim Herstellen einer Verbindung zur Datenbank [OracleCloud] :org.pentaho.di.core.exception.KettleDatabaseException:Beim Versuch, eine Verbindung zur Datenbank herzustellen, ist ein Fehler aufgetreten Verbindung mit folgendem Fehler:ORA-12529, TNS:Verbindungsanforderung basierend auf aktuellen Filterregeln zurückgewiesen

Melden Sie sich bei der Oracle Cloud-Verwaltungsschnittstelle an und überprüfen Sie den Bildschirm Autonomous Database Information für Ihre Datenbank. Überprüfen Sie den Zugriffstyp und Zugriffskontrollliste um sicherzustellen, dass Remote-Anmeldesitzungen von Ihrem Standort aus zulässig sind. Möglicherweise müssen Sie die Datenbank neu starten

IO-Fehler:Schwerwiegende Warnung erhalten:handshake_failure, Verbindungsablauf 188 ms, Authentifizierungsablauf 0 ms.

Dieser Fehler kann auftreten, wenn die Version des Java Development Kit und des Oracle-Servers nicht übereinstimmen. Es kann mit den Codebibliotheken zusammenhängen, die verwendet werden, um den Kommunikationskanal zwischen Client und Server zu sichern (z. B. TLS). Stellen Sie sicher, dass Sie über die neueste Version des Oracle Java Development Kit 8 verfügen. Beispiel:

Fehler beim Herstellen einer Verbindung zur Datenbank [oracle_cloud_atp] :org.pentaho.di.core.exception.KettleDatabaseException:Beim Versuch, eine Verbindung zur Datenbank herzustellen, ist ein Fehler aufgetreten. Fatal Alert erhalten:handshake_failure, connect lapse 188 ms., Authentication lapse 0 ms.org.pentaho.di.core.exception.KettleDatabaseException:Beim Versuch, eine Verbindung zur Datenbank herzustellen, ist ein Fehler aufgetreten .OracleDriver)IO-Fehler:Schwerwiegende Warnung erhalten:handshake_failure, Verbindungsablauf 188 ms, Authentifizierungsablauf 0 ms.

IO-Fehler:Eingang geschlossen, bevor close_notify des Peers empfangen wurde

Wenn Sie beim Ausführen einer Transformation eine Fehlermeldung wie „IO-Fehler:Inbound geschlossen, bevor Peer’s close_notify empfangen wird“ erhalten, kann es sein, dass Sie zu viele offene Datenbankverbindungen zum Oracle-Server haben. Dies kann der Fall sein, wenn Sie die „Always Free“-Services in Oracle Cloud nutzen. diese Dienste haben eine begrenzte Anzahl gleichzeitiger Verbindungen.

Schließen Sie alle zusätzlichen Transformationsregisterkarten, die Sie geöffnet haben. Beenden Sie Spoon und starten Sie es neu. Öffnen Sie nur die Transformation, an der Sie gearbeitet haben, und versuchen Sie, sie erneut auszuführen. Zum Beispiel im PDI-Log:

19.01.2020 15:44:43 – Promotion Dim Lookup.0 – FEHLER (Version 8.2.0.0-342, Build 8.2.0.0-342 vom 14.11.2018 30.10.55 von buildguy):Ein Fehler aufgetreten, Verarbeitung wird gestoppt:2020/01/19 15:44:43 – Promotion Dim Lookup.0 – Fehler beim Versuch, eine Verbindung zur Datenbank herzustellen2020/01/19 15:44:43 – Promotion Dim Lookup.0 – IO Fehler:Eingehend geschlossen, bevor close_notify des Peers empfangen wurde:möglicher Trunkierungsangriff?, Authentifizierungsverzug 0 ms.

In einigen seltenen Fällen kann dies auch durch eine Nichtübereinstimmung in der Revision des verwendeten JDK verursacht werden. Mit der PKI-Unterstützung in Version 1.8 des Java Development Kit wurden einige Inkompatibilitäten eingeführt. Die Installation eines aktualisierten 1.8 JDK scheint diese Probleme zu lösen.

Wenn das Problem weiterhin besteht (und Sie sich mit einem Nicht-Produktionsserver verbinden), versuchen Sie, die autonome Oracle-Datenbank neu zu starten, da dies möglicherweise verbleibende Verbindungen freigibt.

ORA-00018:maximale Anzahl an Sitzungen überschritten

Der ORA-00018:maximale Anzahl von Sitzungen überschritten Fehler kann auftreten, wenn Ihre Datenbank keine verfügbaren Verbindungen mehr hat. Dies kann ein Problem sein, wenn Sie mit der „Always Free“-Ebene der Oracle Autonomous-Datenbank arbeiten. Der Fehler kann wie folgt aussehen:

org.pentaho.di.trans.steps.dimensionlookup.DimensionLookupMeta@75df4b1d – FEHLER (Version 8.2.0.0-342, Build 8.2.0.0-342 vom 14.11.2018 10.30.55 von buildguy):Ein Datenbankfehler aufgetreten:org.pentaho.di.trans.steps.dimensionlookup.DimensionLookupMeta@75df4b1d - Beim Versuch, eine Verbindung zur Datenbank org.pentaho.di.trans.steps.dimensionlookup.DimensionLookupMeta@75df4b1d herzustellen, ist ein Fehler aufgetreten -org.pentaho.di.trans. steps.dimensionlookup.DimensionLookupMeta@75df4b1d – Fehler beim Herstellen einer Verbindung zur Datenbank:(unter Verwendung der Klasse oracle.jdbc.driver.OracleDriver)org.pentaho.di.trans.steps.dimensionlookup.DimensionLookupMeta@75df4b1d – ORA-00018:maximale Anzahl von Sitzungen überschritten

Schließen Sie alle zusätzlichen Transformationsregisterkarten, die Sie geöffnet haben. Beenden Sie Spoon und starten Sie es neu. Öffnen Sie nur die Transformation, an der Sie gearbeitet haben, und versuchen Sie, sie erneut auszuführen.
Wenn das Problem weiterhin besteht (und Sie eine Verbindung zu einem Nicht-Produktionsserver herstellen), versuchen Sie, die autonome Oracle-Datenbank neu zu starten, da dies eventuell vorhandene Daten freigibt Verbindungen.

Falsche Datentypen beim Erstellen von Tabellen

PDI sollte die entsprechenden Oracle-Datentypen (INTEGER, NUMBER, DATE, VARCHAR) verwenden, wenn Tabellen über die Schritte „Dimensionssuche/-aktualisierung“ oder „Tabellenausgabe“ erstellt werden. Wenn Sie die Verwendung von Datentypen wie BIGSERIAL oder anderen Nicht-Oracle-Datentypen sehen, versuchen Sie Folgendes:

  • Gehen Sie zurück zu Ihrem Quellschritt, z. B. CSV-Leseschritt, und deaktivieren Sie das Kontrollkästchen für „Lazy Conversion“
  • Kehren Sie zum Schritt Dimensionssuche/-aktualisierung oder Tabellenausgabe zurück und bearbeiten Sie die Datenbankverbindung. Achten Sie auf den Dialekt auf Oracle eingestellt ist .
    Klicken Sie auf die Schaltfläche TEST, um sicherzustellen, dass die Anmeldeinformationen noch funktionieren. Schließen Sie das Dialogfeld Datenbankverbindung.
  • Klicken Sie auf die Schaltfläche SQL und überprüfen Sie die vorgeschlagene SQL CREATE TABLE-Anweisung, um sicherzustellen, dass die Datentypen jetzt korrekt sind.
  • Wenn die Datentypen immer noch nicht korrekt sind, versuchen Sie, PDI neu zu starten, und führen Sie die obigen Schritte erneut aus.

Langsame Antwort bei Verwendung des PDI Database Explorer mit Oracle Cloud

Möglicherweise stellen Sie fest, dass Pentaho Data Integration sehr lange dauert (und möglicherweise abstürzt), wenn Sie Tools> Database> Explore verwenden Funktion zum Erkunden einer Oracle Cloud-Datenbank. Der Hauptgrund ist, dass die meisten Oracle Cloud-Instanzen über eine große Anzahl integrierter Datenbankschemata verfügen, die der PDI Database Explorer zu lesen versucht.

Anstatt den Datenbank-Explorer von PDI zu verwenden, verwenden Sie das SQL Developer-Tool von Oracle, um Ihr Schema zu untersuchen, alte Tabellen zu löschen und Daten abzufragen, um zu sehen, wie Transformationen funktionieren. Oracle Cloud verfügt über eine integrierte SQL Developer-Webanwendung, die für diesen Zweck einfach zu verwenden ist.

Ungültiger Cache mit Dimensionssuche/Aktualisierungsschritt, verursacht durch Fehler beim Serialisieren von Zeile zu Byte-Array

Beim Aktualisieren von Daten mit einem Dimension Lookup/Update-Schritt kann ein Fehler in Bezug auf den technischen Schlüssel (Ersatzschlüssel) und Error serializing row to byte array auftreten . Ein Beispiel für diesen Fehler wäre:

Dimension lookup/update.0 – ERROR (Version 8.2.0.0-342, build 8.2.0.0-342 from 2018-11-14 10.30.55 by buildguy):Unexpected errorDimension lookup/update.0 – ERROR (version 8.2 .0.0-342, Build 8.2.0.0-342 vom 14.11.2018 30.10.55 von buildguy):java.lang.RuntimeException:Error serializing row to byte arrayDimension lookup/update.0 - at org.pentaho.di.core .row.RowMeta.extractData(RowMeta.java:1134)Dimension lookup/update.0 - bei org.pentaho.di.trans.steps.dimensionlookup.DimensionLookup.addToCache(DimensionLookup.java:1522)Dimension lookup/update.0 - at org.pentaho.di.trans.steps.dimensionlookup.DimensionLookup.lookupValues(DimensionLookup.java:754)Dimension lookup/update.0 - at org.pentaho.di.trans.steps.dimensionlookup.DimensionLookup.processRow(DimensionLookup.java :232)Dimensionssuche/update.0 - bei org.pentaho.di.trans.step.RunThread.run(RunThread.java:62)Dimensionssuche/update.0 - bei java.lang.Thread.run(Thread.java :748)Dimensionssuche/aktualisierung.0 - Verursacht durch:java.l ang.RuntimeException:CUSTOMER_DIM_ID BigNumber(38) :Es gab einen Datentypfehler:Der Datentyp des Objekts java.lang.Long [320] entspricht nicht dem Wert meta [BigNumber(38)]

Dieser Fehler kann durch einen falschen Wert des technischen Schlüssels im Cache oder durch die Unfähigkeit des Schritts Dimensionssuche/-aktualisierung verursacht werden, auf den Cache eindeutiger technischer Schlüsselwerte zuzugreifen.

Um dieses Problem zu beheben, versuchen Sie die Umwandlung mit Cache aktivieren erneut Option im Schritt Dimensionssuche/-aktualisierung deaktiviert. Sie können auch den Cache leeren, indem Sie auf SQL klicken Schaltfläche und klicken Sie dann auf Cache leeren Schaltfläche.