sql >> Databasteknik >  >> RDS >> Oracle

Konfigurera Pentaho Data Integration för att använda Oracle Wallet för Oracle Cloud

Introduktion

Oracle Cloud-databaser använder Oracle plånbokssäkerhet. Oracle Wallet innehåller kryptografiska certifikat och nycklar som används för att upprätta säker, krypterad kommunikation mellan en Oracle-klient och mål-Oracle-databasservern. Pentaho Data Integration kan konfigureras för att använda Oracle Wallet för att upprätta säker kommunikation mellan PDI och en Oracle-molnserver.

Denna handledning förutsätter att du har följande komponenter inställda:

  • Ett Oracle Cloud-konto med minst en Oracle-databasinstans igång. Denna handledning (länk här) innehåller stegen för att konfigurera ett Oracle Cloud-konto och autonom databas. Anslutning mellan en klient som Oracle SQL Developer och den autonoma databasen bör testas och bekräftas.
  • Pentaho Data Integration version 7.x eller 8.x installerad på Windows eller MacOSX. Instruktioner för att installera den senaste versionen av PDI finns här (Windows) och här (MacOSX). Var särskilt uppmärksam på vilken version av Java Development Kit som används. Från och med januari 2019 har Pentaho Data Integration 8.3 som körs på Java Development Kit 1.8 testats och funnits fungera korrekt.

Denna handledning förutsätter att PDI har installerats i C:\Pentaho\data-integration på Windows eller /Users//Pentaho/data-integration på MacOSX.

I nästa avsnitt finns instruktioner för nedladdning och installation av Oracle JDBC-drivrutiner.

Installera Oracle JDBC-drivrutiner i Pentaho Data Integration

Pentaho Data Integration kräver att Oracle JDBC-drivrutinerna är installerade för att kunna ansluta till någon Oracle-databas. Utöver huvudfilen ojdbc8.jar krävs också flera ytterligare filer som ingår i den fullständiga JDBC-distributionen. Se till att endast ladda ner och installera JDBC-drivrutinskomponenterna som är kompilerade för JDK 1.8. Dessa kommer att ha en "8" i filnamnet.
För att komma igång besök sidan för nedladdning av drivrutiner för Oracle 12c JDBC på:
https://www.oracle.com/database/technologies/jdbc-ucp -122-downloads.html

Scrolla ner till avsnittet där de enskilda nedladdningarna finns.

Filerna att ladda ner är:

ojdbc8.jaroraclepki.jarosdt_cert.jarosdt_core.jar

Var och en av dessa filer bör laddas ner och kopieras till mappen Pentaho data-integration\lib.

Som alltid, se till att starta om Pentaho data Integration så att de nya jar-filerna känns igen.

På följande sida kommer Oracle Wallet att laddas ner från molnservern.

Hämta Oracle Wallet från Oracle Cloud

Obs:Om du använder Safari på MacOSX, ändra inställningarna i Safari för att förhindra att "säkra" filer öppnas automatiskt efter nedladdning. Safari> Inställningar> Avmarkera kryssrutan Öppna "säkra" filer efter nedladdning.

Logga in på din Oracle Cloud-konsol och navigera till sidan Autonomous Database. Klicka på länken under Visningsnamn för en av dina databaser.

När informationsskärmen visas klickar du på DB-anslutning knapp.

När fönstret Databasanslutning visas klickar du på Hämta plånbok knapp.

Ange ett matchande lösenord för plånboken och klicka sedan på den blå Ladda ner knapp.

Observera att plånbokens filnamn består av verket "Plånbok" med namnet på de autonoma databaserna som lagts till. För det här exemplet är filen:Wallet_ATPDatabase1.zip.
Se till att spara din Wallet-fil på en säker och säker plats.

Gå tillbaka till skärmen Databas Details visas, klicka på DB Connection knappen igen. Rulla ned tills du ser avsnittet med titeln Anslutningssträngar . Observera att en anslutningssträng motsvarar en specifik anslutningstyp sparad i filen tnsnames.ora som ingår i plånboken. Anteckna dessa namn, till exempel det med _HIGH i slutet av det. Dessa namn bör bestå av namnet på din databas (utan mellanslag) följt av antingen _HIGH, _MEDIUM eller _LOW. I det här exemplet är namnet på databasen "ATP Database1" så den första anslutningssträngen heter:ATPDatabase1_HIGH. Skriv ner eller kopiera och spara posten under TNS-namn för din databas.

Steg för att integrera Oracle Wallet i PDI finns på nästa sida.

Integrera Oracle Cloud Wallet i Pentaho Data Integration

Ett antal steg måste följas för att styra Pentaho-dataintegration för att använda Oracle Wallet.

Se till att Pentaho Data Integration är installerad, med nödvändiga Oracle JDBC-drivrutiner. PDI bör inte köras vid denna tidpunkt.

Redigera custom.properties fil

Leta upp filen custom.properties som finns i mappen data-integration\system\karaf\etc\.

Använd Notepad (windows) eller TextEdit (MacOSX) för att redigera filen custom.properties och lägg till följande rad längst ner i filen (om den inte redan finns där).
org.apache.karaf.security.providers =oracle.security.pki.OraclePKIprovider

Spara filen custom.properties och avsluta textredigeraren.

Redigera Spoon.bat eller spoon.sh filer

För Windows-installationer redigera filen Spoon.bat (Använd Notepad eller annan textredigerare). Scrolla ner till ungefär rad 112 precis före avsnittet med REM ** Kör... **

Lägg till följande rader (markerade i gult).

REM ********************************************** ********************REM ** Ställ in java runtime-alternativ **REM ** Ändra 2048m till högre värden om du får ont om minne **REM ** eller ställ in PENTAHO_DI_JAVA_OPTIONS miljövariabel **REM ********************************************* ************************ om "%PENTAHO_DI_JAVA_OPTIONS%"=="" ställ in 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_JNDI_ROOT=%KETTLE_JNDI_ROOT%"@REM Java options för att stödja Oracle Wallet säkra anslutningar@REM Antar att filen cwallet.sso finns i dataintegration\Wallet\ folderset 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 ** Kör... **REM *************** 

Spara filen spoon.bat och avsluta textredigeraren.

På MacOSX, högerklicka på filen spoon.sh, markera Öppna med och välj sedan TextEdit-app .

Scrolla ner i filen tills du hittar avsnittet med "# valfri rad för att bifoga en debugger". Koden som ska läggas till kommer att finnas i utrymmet precis före denna rad.
Lägg till följande rader (markerade i blått i bilden nedan):

# Java-alternativ för att stödja säkra anslutningar för Oracle Wallet# Antar att filen cwallet.sso finns i data-integration/Wallet/ folderOPT="-Djavax.net.ssl.trustStore=${BASEDIR}/Wallet/cwallet.sso ${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}/plånbok ${OPT}"

Spara filen spoon.sh och avsluta TextEdit-appen.

Kopiera plånboksfilerna till PDI

Se till att du har Oracle-plånboken nedladdad från molnet (se föregående sida). I det här exemplet heter databasen "ATPDatabase1" och plånboksfilnamnet är:Wallet_ATPDatabase1.zip
Packa upp plånboksfilen och leta upp följande fyra filer i:

cwallet.ssosqlnet.oratnsnames.oratrustore.jks

Dessa filer visas också i figuren nedan:

Markera dessa fyra filer och kopiera dem.

Navigera till mappen Pentaho Data Integration. Skapa en undermapp som heter "Plånbok". Klistra in de fyra Oracle Wallet-filerna i den här Wallet-mappen enligt nedan (Windows):

På MacOSX kopiera de fyra plånboksfilerna och klistra in dem i /Users//Pentaho/data-integration/Wallet-mappen.

Kör PDI

När dessa filer är på plats kan du starta Pentaho Data Integration normalt genom att köra filen Spoon.bat (eller spoon.sh för MacOSX-användare).
För att köra Pentaho Data Integration på Windows, dubbelklicka på skeden. bat-program.

För att köra Pentaho Data Integration på MacOSX, högerklicka på programmet spoon.sh, välj Öppna med> Annat... Ändra filtret till "Alla applikationer" och sedan inom Verktyg mapp väljer du Terminal . Klicka sedan på Öppna knapp.

Nästa avsnitt kommer att diskutera hur man ställer in en ny databasanslutning från Pentaho Data Integration.

Skapa en ny databasanslutning i Pentaho Data Integration

För att kunna använda Oracle Wallet i Pentaho Data Integration måste en anslutning av typen "Generisk databas" konfigureras. Följande steg beskriver denna process.

När du ställer in en tabellingång, tabellutgång eller dimensionssökning/uppdateringssteg, skapa en ny databasanslutning.

  • Ge den nya anslutningen ett namn (du hittar på det).
  • Ändra Anslutningstyp till Generisk databas.
  • Ändra dialekt till Oracle.
  • Fyll i Webbadress för anpassad anslutning enligt följande:
    jdbc:oracle:thin:@atpdatabase1_high
    Där atpdatabase1_high är namnet på en av dina anslutningar till din Oracle Cloud-databas (Recenserad på föregående sida). Den kommer att bestå av ditt databasnamn med _high bifogat. Om ditt databasnamn till exempel är "DB 123456789" kommer en möjlig anslutnings-URL att vara:
    jdbc:oracle:thin:@DB123456789_high
  • Fyll i Anpassad förarklassnamn enligt följande:
    oracle.jdbc.driver.OracleDriver
  • Fyll i ditt användarnamn och lösenord för din Oracle Cloud-databas.
  • Klicka på Test för att testa anslutningen.

Testresultatet bör verka framgångsrikt enligt nedan.

Klicka på OK knappen för att stänga anslutningstestet. Klicka på OK knappen för att spara denna databasanslutning.

Några vanliga anslutningsfel finns på nästa sida.

Vanliga Oracle Wallet-anslutningsfel och problem

Det finns flera vanliga fel och problem som du kan uppleva när du använder PDI och Oracle Cloud. Felen och lösningarna/lösningarna presenteras nedan.

IO-fel:kunde inte lösa anslutningsidentifieraren

Om du får ett felmeddelande som "IO-fel:kunde inte lösa anslutningsidentifieraren" kan antingen din tnsnames.ora-fil inte hittas eller så matchar inte det angivna TNS-namnet någon av anslutningarna. Till exempel:

Fel vid anslutning till databasen [OracleCloud] :org.pentaho.di.core.exception.KettleDatabaseException:Ett fel uppstod vid försök att ansluta till databasen.Fel vid anslutning till databasen:(med klassen oracle.jdbc.driver.OracleDriver)IO Fel:kunde inte lösa anslutningsidentifieraren "atpdatabase1_hig"

Dubbelkolla filen tnsnames.ora och se till att du använder ett anslutningsnamn som visas i filen tnsnames.ora. I Windows operativsystem använder du NotePad-programmet för att öppna filen tnsnames.ora. På MacOSX, använd programmet TextEdit för att öppna filen tnsnames.ora.

ORA-01017:ogiltigt användarnamn/lösenord; inloggning nekad

Om du får ett felmeddelande som "ORA-01017:ogiltigt användarnamn/lösenord; inloggning nekad” betyder det att Oracle-användarnamnet eller lösenordet är ogiltigt. Till exempel:

Fel vid anslutning till databasen [OracleCloud] :org.pentaho.di.core.exception.KettleDatabaseException:Ett fel uppstod vid försök att ansluta till databasen.Fel vid anslutning till databasen:(med klassen oracle.jdbc.driver.OracleDriver)ORA-01017 :ogiltigt användarnamn / lösenord; inloggning nekad

Kontrollera användarnamnet och lösenordet på Oracle-databasinstansen för att säkerställa att det är korrekt. Observera att Oracle-databasens användarnamn och lösenord skiljer sig från ditt Oracle Cloud-webbplatskonto. Vanligtvis för testning använder vi ADMIN-användaren och detta lösenord ställdes in när den autonoma databasen eller det autonoma datalagret skapades. Till exempel på sidan 4 i denna handledning.
Se till att lösenordet inte innehåller något av följande tecken:@ / \ ?

Det kan vara enklast för att testa att använda ADMIN-användaren med ett relativt "vanligt" lösenord som Pw123Pw123Pw123 .
Se till att ändra lösenordet till något säkrare efter att testningen är klar.

Drivrutinsklassen 'oracle.jdbc.driver.OracleDriver' kunde inte hittas

Om du får ett felmeddelande som:"Drivrutinsklassen 'oracle.jdbc.driver.OracleDriver' kunde inte hittas", se till att JDBC-drivrutinerna har kopierats till mappen data-integration\lib och att PDI har startats om. Se också till att inte placera några mellanslag före "o" i oracle.jdbc.driver... Till exempel:

Fel vid anslutning till databasen [OracleCloud] :org.pentaho.di.core.exception.KettleDatabaseException:Ett fel uppstod vid försök att ansluta till databaseDriver-klassen 'oracle.jdbc.driver.OracleDriver' kunde inte hittas, se till att 'Generisk databas'-drivrutin (jar-fil) är installerad. oracle.jdbc.driver.OracleDriver

ORA-12529 TNS:Anslutningsbegäran avvisades baserat på nuvarande filtreringsregler

Av du får ett felmeddelande som:"ORA-12529 TNS:Anslutningsbegäran avvisades baserat på nuvarande filtreringsregler ” när du ansluter till databasen kan det vara så att dina nätverkssäkerhetsinställningar för den autonoma databasen förhindrar anslutningar. Det fullständiga felmeddelandet kan visas enligt följande:

Fel vid anslutning till databasen [OracleCloud] :org.pentaho.di.core.exception.KettleDatabaseException:Fel uppstod vid försök att ansluta till databasen.Fel vid anslutning till databasen:(med klassen oracle.jdbc.driver.OracleDriver)Lyssnaren vägrade anslutning med följande fel:ORA-12529, TNS:anslutningsbegäran avvisades baserat på aktuella filtreringsregler

Logga in på Oracle Cloud-hanteringsgränssnittet och granska skärmen Autonomous Database Information för din databas. Kontrollera Åtkomsttyp och Åtkomstkontrolllista för att säkerställa att fjärrinloggningssessioner är tillåtna från din plats. Du kan behöva starta om databasen

IO-fel:Mottog dödlig varning:handshake_failure, anslutning upphör 188 ms., autentisering upphör 0 ms.

Det här felet kan uppstå när det finns en felmatchning mellan versionen av Java Development Kit och Oracle-servern. Det kan vara relaterat till kodbiblioteken som används för att säkra kommunikationskanalen mellan klient och server (t.ex. TLS). Se till att du har den senaste versionen av Oracle Java Development Kit 8. Till exempel:

Fel vid anslutning till databasen [oracle_cloud_atp] :org.pentaho.di.core.exception.KettleDatabaseException:Fel uppstod vid försök att ansluta till databasen.Fel vid anslutning till databasen:(med klassen oracle.jdbc.driver.OracleDriver)IO Fel:Fick dödlig varning:handshake_failure, anslutning upphör 188 ms., autentisering upphör 0 ms.org.pentaho.di.core.exception.KettleDatabaseException:Ett fel uppstod vid försök att ansluta till databasen. Fel vid anslutning till databasen:(med klassen oracle.jdbc.driver .OracleDriver)IO-fel:Mottog dödlig varning:handshake_failure, anslutning upphör 188 ms., autentisering upphör 0 ms.

IO-fel:Inkommande stängdes innan mottagande av peers close_notify

Om du får ett felmeddelande som:"IO Error:Inbound closed before receiving peer's close_notify" när du kör en transformation, kan det vara så att du har för många öppna databasanslutningar till Oracle-servern. Detta kan vara fallet om du använder tjänsterna "Alltid gratis" på Oracle Cloud. dessa tjänster har ett begränsat antal samtidiga anslutningar.

Stäng alla extra transformationsflikar som du har öppna. Avsluta Spoon och starta om den. Öppna bara transformationen du har arbetat med och försök köra den igen. Till exempel i PDI-loggen:

2020/01/19 15:44:43 - Promotion Dim Lookup.0 - ERROR (version 8.2.0.0-342, build 8.2.0.0-342 från 2018-11-14 10.30.55 av buildguy) :Ett fel inträffade, kommer behandlingen att stoppas:2020/01/19 15:44:43 - Promotion Dim Lookup.0 - Ett fel uppstod när du försökte ansluta till databasen2020/01/19 15:44:43 - Promotion Dim Lookup.0 - IO Fel:Inkommande stängt innan mottagande av peers close_notify:möjlig trunkeringsattack?, Autentisering upphör 0 ms.

I vissa sällsynta fall kan detta också orsakas av en felaktig överensstämmelse i revisionen av JDK som används. Vissa inkompatibiliteter infördes med PKI-stödet i Java Development Kit version 1.8. Installation av en uppdaterad 1.8 JDK verkar lösa dessa problem.

Om problemet kvarstår (och du ansluter till en icke-produktionsserver), försök att starta om den autonoma Oracle-databasen eftersom det kan frigöra kvardröjande anslutningar.

ORA-00018:maximalt antal sessioner har överskridits

ORA-00018:maximalt antal sessioner har överskridits fel kan visas om din databas får slut på tillgängliga anslutningar. Detta kan vara ett problem när du arbetar med "Always Free"-nivån i Oracle Autonomous-databasen. Felet kan visas enligt följande:

org.pentaho.di.trans.steps.dimensionlookup.DimensionLookupMeta@75df4b1d - FEL (version 8.2.0.0-342, build 8.2.0.0-342 från 2018-11-14 10.30.55 av buildguy):occurred:org.pentaho.di.trans.steps.dimensionlookup.DimensionLookupMeta@75df4b1d - Ett fel uppstod när du försökte ansluta till databasenorg.pentaho.di.trans.steps.dimensionlookup.DimensionLookupMeta@75df4b1d -org.pentaho.di.trans. steps.dimensionlookup.DimensionLookupMeta@75df4b1d - Fel vid anslutning till databasen:(med klassen oracle.jdbc.driver.OracleDriver)org.pentaho.di.trans.steps.dimensionlookup.DimensionLookupMeta@75df4b1d - ORA-00018 överskridit maximalt antal sessioner /pre> 

Stäng alla extra transformationsflikar som du har öppna. Avsluta Spoon och starta om den. Öppna bara transformationen du har arbetat med och försök köra den igen.
Om problemet kvarstår (och du ansluter till en icke-produktionsserver), försök att starta om den autonoma Oracle-databasen eftersom det kan frigöra kvardröjning anslutningar.

Felaktiga datatyper när du skapar tabeller

PDI bör använda lämpliga Oracle-datatyper (INTEGER, NUMBER, DATE, VARCHAR) när du skapar tabeller genom stegen Dimension Lookup/Update eller Table Output. Om du ser användningen av datatyper som BIGSERIAL eller andra datatyper som inte kommer från Oracle, prova följande:

  • Gå tillbaka till ditt källsteg, t.ex. CSV-lässteget och avmarkera rutan för "Lazy Conversion"
  • Återgå till steget för dimensionssökning/uppdatering eller tabellutdata och redigera databasanslutningen. Se till att dialekten är är inställd på Oracle .
    Klicka på TEST-knappen för att se till att inloggningsuppgifterna fortfarande fungerar. Stäng dialogrutan Databasanslutning.
  • Klicka på SQL-knappen och kontrollera den föreslagna SQL CREATE TABLE-satsen för att se till att datatyperna nu är korrekta.
  • Om datatyperna fortfarande inte är korrekta, försök att starta om PDI och följ stegen ovan igen.

Långsam respons när du använder PDI Database Explorer med Oracle Cloud

Du kanske märker att Pentaho Data Integration kommer att ta lång tid (och kan krascha) när du använder Verktyg> Databas> Utforska funktion för att utforska en Oracle Cloud-databas. Den främsta anledningen är att de flesta Oracle Cloud-instanser har ett stort antal inbyggda databasscheman som PDI Database Explorer försöker läsa.

Istället för att använda PDI:s Databas Explorer, använd Oracles SQL Developer-verktyg för att utforska ditt schema, släppa gamla tabeller och fråga data för att se hur transformationer fungerar. Oracle Cloud har en inbyggd SQL Developer-webbapplikation som är enkel att använda för detta ändamål.

Ogiltig cache med dimensionssökning/uppdateringssteg orsakat av Fel vid serialisering av rad till bytearray

När du uppdaterar data med hjälp av ett Dimension Lookup/Update-steg kan du stöta på ett fel relaterat till den tekniska nyckeln (surrogatnyckel) och Fel vid serialisering av rad till byte-array . Ett exempel på detta fel skulle vara:

Dimension lookup/update.0 - ERROR (version 8.2.0.0-342, build 8.2.0.0-342 från 2018-11-14 10.30.55 av buildguy) :Oväntat felDimension lookup/update.0 - ERROR (version 8.2) .0.0-342, build 8.2.0.0-342 från 2018-11-14 10.30.55 av buildguy) :java.lang.RuntimeException:Fel vid serialisering av rad till byte arrayDimension lookup/update.0 - på org.pentaho.di. .row.RowMeta.extractData(RowMeta.java:1134)Dimension lookup/update.0 - på org.pentaho.di.trans.steps.dimensionlookup.DimensionLookup.addToCache(DimensionLookup.java:1522)Dimension Lookup/update.0 - på org.pentaho.di.trans.steps.dimensionlookup.DimensionLookup.lookupValues(DimensionLookup.java:754)Dimension lookup/update.0 - på org.pentaho.di.trans.steps.dimensionlookup.DimensionLookup.processRow(DimensionLookup.java. :232)Dimension lookup/update.0 - at org.pentaho.di.trans.step.RunThread.run(RunThread.java:62)Dimension lookup/update.0 - at java.lang.Thread.run(Thread.java) :748)Dimensionssökning/uppdatering.0 - Orsakat av:java.l ang.RuntimeException:CUSTOMER_DIM_ID BigNumber(38) :Det uppstod ett datatypfel:datatypen för java.lang.Long-objektet [320] motsvarar inte värdet meta [BigNumber(38)]

Det här felet kan orsakas av ett felaktigt tekniskt nyckelvärde i cachen eller av oförmågan hos steget Dimension Lookup/Update att komma åt cachen för unika tekniska nyckelvärden.

För att lösa det här problemet, försök omvandlingen igen med Aktivera cachen alternativet avstängt i steget Dimension Lookup/Update. Du kanske också vill rensa cacheminnet genom att klicka på SQL och klicka sedan på Rensa cache knappen.


  1. Guide för att designa databas för anställdas ledningssystem i MySQL

  2. Skapa nya moduler med PostgreSQL Create Extension

  3. Hur man snabbt släpper en användare med befintliga privilegier

  4. Kapslad select-sats i SQL Server