sql >> Database teknologi >  >> RDS >> Oracle

Konfiguration af Pentaho Data Integration til at bruge Oracle Wallet til Oracle Cloud

Introduktion

Oracle Cloud-databaser bruger Oracle-pungsikkerheden. Oracle Wallet indeholder kryptografiske certifikater og nøgler, der bruges til at etablere sikker, krypteret kommunikation mellem en Oracle-klient og mål-Oracle-databaseserveren. Pentaho Data Integration kan konfigureres til at bruge Oracle Wallet til at etablere sikker kommunikation mellem PDI og en Oracle cloud-server.

Denne vejledning forudsætter, at du har følgende komponenter opsat:

  • En Oracle Cloud-konto med mindst én Oracle-databaseinstans, der kører. Denne vejledning (link her) indeholder trinene til at konfigurere en Oracle Cloud-konto og en autonom database. Forbindelse mellem en klient såsom Oracle SQL Developer og den autonome database bør testes og bekræftes.
  • Pentaho Data Integration version 7.x eller 8.x installeret på Windows eller MacOSX. Vejledning til installation af den seneste version af PDI kan findes her (Windows) og her (MacOSX). Vær særlig opmærksom på den anvendte version af Java Development Kit. Fra januar 2019 er Pentaho Data Integration 8.3, der kører på Java Development Kit 1.8, blevet testet og fundet at fungere korrekt.

Denne vejledning antager, at PDI er blevet installeret i C:\Pentaho\data-integration på Windows eller /Users//Pentaho/data-integration på MacOSX.

I det næste afsnit findes instruktioner til download og installation af Oracle JDBC-drivere.

Installation af Oracle JDBC-driverne i Pentaho Data Integration

Pentaho Data Integration kræver, at Oracle JDBC-driverne er installeret for at kunne oprette forbindelse til enhver Oracle-database. Ud over hovedfilen ojdbc8.jar kræves der også flere yderligere filer, som er en del af den fulde JDBC-distribution. Sørg for kun at downloade og installere JDBC-driverkomponenterne, der er kompileret til JDK 1.8. Disse vil have en "8" i filnavnet.
For at komme i gang besøg siden Oracle 12c JDBC Driver Downloads på:
https://www.oracle.com/database/technologies/jdbc-ucp -122-downloads.html

Rul ned til det afsnit, hvor de enkelte downloads er placeret.

De filer, der skal downloades, er:

ojdbc8.jaroraclepki.jarosdt_cert.jarosdt_core.jar

Hver af disse filer skal downloades og kopieres til mappen Pentaho data-integration\lib.

Som altid skal du sørge for at genstarte Pentaho dataintegration, så de nye jar-filer genkendes.

På den følgende side vil Oracle Wallet blive downloadet fra skyserveren.

Download af Oracle Wallet fra Oracle Cloud

Bemærk:Hvis du bruger Safari på MacOSX, skal du ændre præferencerne i Safari for at forhindre, at "sikre" filer automatisk åbnes efter download. Safari> Præferencer> Fjern markeringen i afkrydsningsfeltet Åbn "sikre" filer efter download.

Log ind på din Oracle Cloud-konsol, og naviger til siden Autonomous Database. Klik på linket under Visningsnavn for en af ​​dine databaser.

Når skærmbilledet Detaljer vises, skal du klikke på DB-forbindelse knap.

Når vinduet Databaseforbindelse vises, skal du klikke på Download tegnebog knap.

Angiv en matchende adgangskode til tegnebogen, og klik derefter på den blå Download knap.

Bemærk, at tegnebogens filnavn består af værket "Wallet" med navnet på de autonome databaser tilføjet. For dette eksempel er filen:Wallet_ATPDatabase1.zip.
Sørg for at gemme din Wallet-fil på et sikkert, sikkert sted.

Gå tilbage til skærmen Database Details vises, klik på DB Connection knappen igen. Rul ned, indtil du ser afsnittet med titlen Forbindelsesstrenge . Bemærk, at en forbindelsesstreng svarer til en bestemt forbindelsestype, der er gemt i filen tnsnames.ora, der er inkluderet i tegnebogen. Noter disse navne, såsom det med _HIGH i slutningen af ​​det. Disse navne skal bestå af navnet på din database (uden mellemrum) efterfulgt af enten _HIGH, _MEDIUM eller _LOW. I dette eksempel er navnet på databasen "ATP Database1", så den første forbindelsesstreng hedder:ATPDatabase1_HIGH. Skriv ned eller kopier og gem posten under TNS-navn til din database.

Trin til integration af Oracle Wallet i PDI findes på næste side.

Integration af Oracle Cloud Wallet i Pentaho Data Integration

En række trin skal følges for at lede Pentaho-dataintegration til at bruge Oracle Wallet.

Sørg for, at Pentaho Data Integration er installeret med de nødvendige Oracle JDBC-drivere. PDI bør ikke køre på dette tidspunkt.

Rediger custom.properties fil

Find filen custom.properties, der findes i mappen data-integration\system\karaf\etc\.

Brug Notesblok (windows) eller TextEdit (MacOSX) til at redigere filen custom.properties og tilføj følgende linje nederst i filen (hvis den ikke allerede er der).
org.apache.karaf.security.providers =oracle.security.pki.OraclePKIProvider

Gem filen custom.properties og afslut teksteditoren.

Rediger Spoon.bat eller spoon.sh filer

For Windows-installationer rediger Spoon.bat-filen (Brug Notesblok eller anden teksteditor). Rul ned til omkring linje 112 lige før afsnittet med REM ** Kør... **

Tilføj følgende linjer (markeret med gult).

REM ********************************************** ********************REM ** Indstil java runtime-indstillinger **REM ** Skift 2048m til højere værdier, hvis du løber tør for hukommelse **REM ** eller indstil PENTAHO_DI_JAVA_OPTIONS miljøvariablen **REM ********************************************* ************************hvis "%PENTAHO_DI_JAVA_OPTIONS%"=="" sæt 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_package for at understøtte Oracle Wallet sikre forbindelser@REM Antager, at filen cwallet.sso er i data-integration\Wallet\ mappesæt 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 *************** 

Gem filen spoon.bat, og afslut teksteditoren.

På MacOSX skal du højreklikke på filen spoon.sh, markere Åbn med og vælg derefter Tekstrediger-app .

Rul ned i filen, indtil du finder sektionen med "# valgfri linje til at vedhæfte en debugger". Koden, der skal tilføjes, vil ligge i rummet lige før denne linje.
Tilføj følgende linjer (markeret med blåt på billedet nedenfor):

# Java-indstillinger for at understøtte Oracle Wallet sikre forbindelser# Antager, at filen cwallet.sso er 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}/Wallet ${OPT}"

Gem filen spoon.sh, og afslut TextEdit-appen.

Kopiér tegnebogsfilerne til PDI

Sørg for, at du har Oracle-pungen downloadet fra skyen (se foregående side). I dette eksempel hedder databasen "ATPDatabase1", og tegnebogens filnavn er:Wallet_ATPDatabase1.zip
Udpak Wallet-filen, og find følgende fire filer i:

cwallet.ssosqlnet.oratnsnames.oratrustore.jks

Disse filer er også vist i figuren nedenfor:

Fremhæv disse fire filer og kopier dem.

Naviger til mappen Pentaho Data Integration. Opret en undermappe med navnet "Wallet". Indsæt de fire Oracle Wallet-filer i denne Wallet-mappe som vist nedenfor (Windows):

På MacOSX skal du kopiere de fire tegnebogsfiler og indsætte dem i /Users//Pentaho/data-integration/Wallet-mappen.

Kører PDI

Når disse filer er på plads, kan du starte Pentaho Data Integration normalt ved at køre filen Spoon.bat (eller spoon.sh for MacOSX-brugere).
For at køre Pentaho Data Integration på Windows skal du dobbeltklikke på skeen. bat-program.

For at køre Pentaho Data Integration på MacOSX skal du højreklikke på programmet spoon.sh, vælge Åbn med> Andet... Skift filteret til "Alle applikationer" og derefter i Hjælpeprogrammer mappe, vælg Terminal . Klik derefter på Åbn knap.

Det næste afsnit vil diskutere opsætning af en ny databaseforbindelse fra Pentaho Data Integration.

Oprettelse af en ny databaseforbindelse i Pentaho Data Integration

For at bruge Oracle Wallet i Pentaho Data Integration skal en "Generisk Database"-type forbindelse konfigureres. De følgende trin beskriver denne proces.

Når du opsætter en tabelinput, tabeloutput eller dimensionsopslag/opdateringstrin, skal du oprette en ny databaseforbindelse.

  • Giv den nye forbindelse et navn (du finder på).
  • Skift Forbindelsestype til generisk database.
  • Skift dialekten til Oracle.
  • Udfyld Tilpasset forbindelses-URL som følger:
    jdbc:oracle:thin:@atpdatabase1_high
    Hvor atpdatabase1_high er navnet på en af ​​dine forbindelser til din Oracle Cloud-database (gennemgået på den foregående side). Det vil bestå af dit databasenavn med _high knyttet til det. For eksempel, hvis dit databasenavn er "DB 123456789", så vil en mulig forbindelses-URL være:
    jdbc:oracle:thin:@DB123456789_high
  • Udfyld Tilpasset driverklassenavn som følger:
    oracle.jdbc.driver.OracleDriver
  • Fyld dit brugernavn og din adgangskode til din Oracle Cloud-database.
  • Klik på Test knappen for at teste forbindelsen.

Testresultatet skulle fremstå som vellykket som vist nedenfor.

Klik på OK knappen for at lukke forbindelsestesten. Klik på OK knappen for at gemme denne databaseforbindelse.

Nogle almindelige forbindelsesfejl findes på næste side.

Almindelige Oracle Wallet-forbindelsesfejl og -problemer

Der er flere almindelige fejl og problemer, som du kan opleve, når du bruger PDI og Oracle Cloud. Fejlene og løsninger/løsninger er præsenteret nedenfor.

IO-fejl:kunne ikke løse forbindelses-id'et

Hvis du modtager en fejl, såsom "IO-fejl:kunne ikke løse forbindelses-id'en", kan din tnsnames.ora-fil enten ikke findes, eller det angivne TNS-navn matcher ikke en af ​​forbindelserne. For eksempel:

Fejl ved forbindelse til databasen [OracleCloud] :org.pentaho.di.core.exception.KettleDatabaseException:Der opstod en fejl under forsøg på at oprette forbindelse til databasen. Fejl ved forbindelse til databasen:(ved brug af klassen oracle.jdbc.driver.OracleDriver)IO Fejl:kunne ikke løse forbindelses-id'et "atpdatabase1_hig"

Dobbelttjek din tnsnames.ora-fil, og sørg for, at du bruger et forbindelsesnavn, der vises i filen tnsnames.ora. På Windows-operativsystemet skal du bruge NotePad-programmet til at åbne filen tnsnames.ora. På MacOSX skal du bruge programmet TextEdit til at åbne filen tnsnames.ora.

ORA-01017:ugyldigt brugernavn/adgangskode; logon nægtet

Hvis du modtager en fejl, såsom "ORA-01017:ugyldigt brugernavn/adgangskode; logon denied” betyder det, at Oracle-brugernavnet eller adgangskoden er ugyldig. For eksempel:

Fejl ved forbindelse til databasen [OracleCloud] :org.pentaho.di.core.exception.KettleDatabaseException:Der opstod en fejl under forsøg på at oprette forbindelse til databasen. :ugyldigt brugernavn / kodeord; logon nægtet

Tjek brugernavnet og adgangskoden på Oracle-databaseforekomsten for at sikre, at det er korrekt. Bemærk, at brugernavnet og adgangskoden til Oracle-databasen er forskellig fra din Oracle Cloud-webstedskonto. Til test bruger vi typisk ADMIN-brugeren, og denne adgangskode blev indstillet, da den autonome database eller det autonome datavarehus blev oprettet. For eksempel på side 4 i denne vejledning.
Sørg for, at adgangskoden ikke indeholder nogen af ​​følgende tegn:@ / \ ?

Det kan være nemmest at teste at bruge ADMIN-brugeren med en relativt "almindelig" adgangskode såsom Pw123Pw123Pw123 .
Sørg for at ændre adgangskoden til noget mere sikkert, efter at testen er fuldført.

Driverklassen 'oracle.jdbc.driver.OracleDriver' kunne ikke findes

Hvis du modtager en fejl, såsom:"Driverklassen 'oracle.jdbc.driver.OracleDriver' kunne ikke findes", skal du sørge for, at JDBC-driverne er blevet kopieret til mappen data-integration\lib, og at PDI er blevet genstartet. Sørg også for ikke at placere mellemrum før 'o' i oracle.jdbc.driver... For eksempel:

Fejl ved forbindelse til databasen [OracleCloud] :org.pentaho.di.core.exception.KettleDatabaseException:Der opstod en fejl under forsøg på at oprette forbindelse til databaseDriver-klassen 'oracle.jdbc.driver.OracleDriver' kunne ikke findes, sørg for at 'Generisk database'-driver (jar-fil) er installeret. oracle.jdbc.driver.OracleDriver

ORA-12529 TNS:Forbindelsesanmodning afvist baseret på aktuelle filtreringsregler

Af du modtager en fejl, såsom:"ORA-12529 TNS:Forbindelsesanmodning afvist baseret på nuværende filtreringsregler ” når du opretter forbindelse til databasen, kan det være tilfældet, at dine netværkssikkerhedsindstillinger for den autonome database forhindrer forbindelser. Den komplette fejlmeddelelse kan vises som følger:

Fejl ved forbindelse til databasen [OracleCloud] :org.pentaho.di.core.exception.KettleDatabaseException:Der opstod en fejl under forsøg på at oprette forbindelse til databasen. Fejl ved forbindelse til databasen:(ved brug af klassen oracle.jdbc.driver.OracleDriver) Lytteren nægtede forbindelse med følgende fejl:ORA-12529, TNS:forbindelsesanmodning afvist baseret på aktuelle filtreringsregler

Log ind på Oracle Cloud-administrationsgrænsefladen, og se skærmen Autonome databaseoplysninger for din database. Tjek Adgangstype og Adgangskontrolliste for at sikre fjernlogin-sessioner er tilladt fra din placering. Du skal muligvis genstarte databasen

IO-fejl:Modtaget fatal alarm:handshake_failure, forbindelsen udløber 188 ms., godkendelsen udløber 0 ms.

Denne fejl kan opstå, når der er et misforhold mellem versionen af ​​Java Development Kit og Oracle-serveren. Det kan være relateret til de kodebiblioteker, der bruges til at sikre kommunikationskanalen mellem klient og server (f.eks. TLS). Sørg for, at du har den seneste udgave af Oracle Java Development Kit 8. For eksempel:

Fejl ved forbindelse til databasen [oracle_cloud_atp] :org.pentaho.di.core.exception.KettleDatabaseException:Der opstod en fejl under forsøg på at oprette forbindelse til databasen. Modtaget fatal alarm:handshake_failure, forbindelse udløber 188 ms., godkendelse udløber 0 ms.org.pentaho.di.core.exception.KettleDatabaseException:Der opstod en fejl under forsøg på at oprette forbindelse til databasen. Fejl ved forbindelse til databasen:(ved brug af klassen oracle.jdbc.driver) .OracleDriver)IO-fejl:Modtaget fatal advarsel:handshake_failure, forbindelse udløber 188 ms., godkendelse udløber 0 ms.

IO-fejl:Indgående lukket før modtagelse af peers close_notify

Hvis du modtager en fejl, såsom:"IO-fejl:Indgående lukket før modtagelse af peers close_notify", når du kører en transformation, kan det være tilfældet, at du har for mange åbne databaseforbindelser til Oracle-serveren. Dette kan være tilfældet, hvis du bruger tjenesterne "Altid gratis" på Oracle Cloud. disse tjenester har et begrænset antal samtidige forbindelser.

Luk op for eventuelle ekstra transformationsfaner, du har åbne. Afslut Spoon og genstart den. Åbn kun den transformation, du har arbejdet på, og prøv at køre den igen. For eksempel i PDI-loggen:

2020/01/19 15:44:43 - Promotion Dim Lookup.0 - FEJL (version 8.2.0.0-342, build 8.2.0.0-342 fra 2018-11-14 10.30.55 af buildguy) :En fejl opstod, vil behandlingen blive stoppet:2020/01/19 15:44:43 - Promotion Dim Lookup.0 - Der opstod en fejl under forsøg på at oprette forbindelse til databasen2020/01/19 15:44:43 - Promotion Dim Lookup.0 - IO Fejl:Indgående lukket før modtagelse af peers close_notify:muligt trunkeringsangreb?, Godkendelse udløber 0 ms.

I nogle sjældne tilfælde kan dette også være forårsaget af et misforhold i den revision af JDK, der bruges. Der var nogle inkompatibiliteter introduceret med PKI-understøttelsen i Java Development Kit version 1.8. Installation af en opdateret 1.8 JDK ser ud til at løse disse problemer.

Hvis problemet fortsætter (og du opretter forbindelse til en ikke-produktionsserver), så prøv at genstarte den autonome Oracle-database, da dette kan frigøre eventuelle langvarige forbindelser.

ORA-00018:det maksimale antal sessioner er overskredet

ORA-00018:det maksimale antal sessioner er overskredet fejl kan opstå, hvis din database løber tør for tilgængelige forbindelser. Dette kan være et problem, når du arbejder med "Always Free"-laget i Oracle Autonomous-databasen. Fejlen kan forekomme som følger:

org.pentaho.di.trans.steps.dimensionlookup.DimensionLookupMeta@75df4b1d - FEJL (version 8.2.0.0-342, build 8.2.0.0-342 fra 2018-11-14 10.30.55 af buildguy):occurred:org.pentaho.di.trans.steps.dimensionlookup.DimensionLookupMeta@75df4b1d - Der opstod en fejl under forsøg på at oprette forbindelse til databasenorg.pentaho.di.trans.steps.dimensionlookup.DimensionLookupMeta@75df4b1d -org.pentaho.di.trans. steps.dimensionlookup.DimensionLookupMeta@75df4b1d - Fejl ved forbindelse til databasen:(ved brug af klassen oracle.jdbc.driver.OracleDriver)org.pentaho.di.trans.steps.dimensionlookup.DimensionLookupMeta@75df4b1d - ORA-00018 overskredet: 

Luk op for eventuelle ekstra transformationsfaner, du har åbne. Afslut Spoon og genstart den. Åbn kun den transformation, du har arbejdet på, og prøv at køre den igen.
Hvis problemet fortsætter (og du opretter forbindelse til en ikke-produktionsserver), prøv at genstarte den autonome Oracle-database, da dette kan frigøre eventuel dvælning forbindelser.

Forkerte datatyper ved oprettelse af tabeller

PDI skal bruge de relevante Oracle-datatyper (INTEGER, NUMBER, DATE, VARCHAR), når du opretter tabeller via Dimension Lookup/Update eller Table Output-trin. Hvis du ser brugen af ​​datatyper såsom BIGSERIAL eller andre ikke-Oracle datatyper, prøv følgende:

  • Gå tilbage til dit kildetrin, såsom CSV-læsningstrin, og fjern markeringen i afkrydsningsfeltet for "Doven konvertering"
  • Vend tilbage til dit dimensionsopslag/opdaterings- eller tabeloutputtrin, og rediger databaseforbindelsen. Sørg for at dialekten er er indstillet til Oracle .
    Klik på knappen TEST for at sikre dig, at legitimationsoplysningerne stadig fungerer. Luk dialogboksen Databaseforbindelse op.
  • Klik på SQL-knappen, og tjek den foreslåede SQL CREATE TABLE-sætning for at sikre, at datatyperne nu er korrekte.
  • Hvis datatyperne stadig ikke er korrekte, kan du prøve at genstarte PDI og følge ovenstående trin igen.

Langsom reaktion ved brug af PDI Database Explorer med Oracle Cloud

Du vil muligvis bemærke, at Pentaho Data Integration vil tage lang tid (og kan gå ned), når du bruger Værktøjer> Database> Udforsk funktion til at udforske en Oracle Cloud-database. Hovedårsagen er, at de fleste Oracle Cloud-forekomster har et stort antal indbyggede databaseskemaer, som PDI Database Explorer forsøger at læse.

I stedet for at bruge PDI's Database Explorer, skal du bruge Oracles SQL Developer-værktøj til at udforske dit skema, slippe gamle tabeller og forespørge data for at se, hvordan transformationer fungerer. Oracle Cloud har en indbygget SQL Developer-webapplikation, der er nem at bruge til dette formål.

Ugyldig cache med dimensionsopslag/opdateringstrin forårsaget af Fejl ved serialisering af række til byte-array

Mens du opdaterer data ved hjælp af et Dimension Lookup/Update-trin, kan du støde på en fejl relateret til den tekniske nøgle (surrogatnøgle) og Fejl ved serialisering af række til byte-array . Et eksempel på denne fejl ville være:

Dimensionsopslag/update.0 - FEJL (version 8.2.0.0-342, build 8.2.0.0-342 fra 2018-11-14 10.30.55 af buildguy) :Uventet fejlDimension lookup/update.0 - FEJL (version 8.2 .0.0-342, build 8.2.0.0-342 fra 2018-11-14 10.30.55 af buildguy) :java.lang.RuntimeException:Fejl ved serialisering af række til 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)Dimensionsopslag/update.0 - på org.pentaho.di.trans.steps.dimensionlookup.DimensionLookup.processRow(DimensionLookup.ja. :232)Dimensionsopslag/update.0 - på org.pentaho.di.trans.step.RunThread.run(RunThread.java:62)Dimensionsopslag/update.0 - på java.lang.Thread.run(Thread.java :748)Dimensionsopslag/opdatering.0 - Forårsaget af:java.l ang.RuntimeException:CUSTOMER_DIM_ID BigNumber(38) :Der var en datatypefejl:datatypen for java.lang.Long-objektet [320] svarer ikke til værdien meta [BigNumber(38)]

Denne fejl kan være forårsaget af en forkert teknisk nøgleværdi i cachen eller manglende evne til Dimension Lookup/Update-trinnet til at få adgang til cachen med unikke tekniske nøgleværdier.

For at løse dette problem skal du prøve transformationen igen med Aktiver cachen indstilling slået fra i trin for dimensionsopslag/opdatering. Du kan også ønske at rydde cachen ved at klikke på SQL og klik derefter på Ryd cache knap.


  1. 4 måder at kontrollere en kolonnes datatype i MariaDB

  2. MySQL Fjern Duplicate Records

  3. Hvorfor anses det for dårlig praksis at bruge markører i SQL Server?

  4. Hvordan indsætter man en post og returnerer det nyoprettede ID ved hjælp af en enkelt SqlCommand?