Въведение
Базите данни на Oracle Cloud използват защитата на портфейла на Oracle. Портфейлът на Oracle съдържа криптографски сертификати и ключове, използвани за установяване на защитени, криптирани комуникации между клиент на Oracle и целевия сървър на база данни на Oracle. Pentaho Data Integration може да бъде конфигуриран да използва портфейла на Oracle за установяване на защитени комуникации между PDI и облачен сървър на Oracle.
Този урок предполага, че имате настроени следните компоненти:
- Акаунт в Oracle Cloud с работещ поне един екземпляр на базата данни на Oracle. Този урок (връзка тук) предоставя стъпките за настройка на акаунт в Oracle Cloud и автономна база данни. Свързаността между клиент като Oracle SQL Developer и автономната база данни трябва да бъде тествана и потвърдена.
- Pentaho Data Integration версия 7.x или 8.x, инсталирана на Windows или MacOSX. Инструкции за инсталиране на най-новата версия на PDI можете да намерите тук (Windows) и тук (MacOSX). Обърнете специално внимание на използваната версия на Java Development Kit. От януари 2019 г. Pentaho data Integration 8.3, работеща на Java Development Kit 1.8, са тествани и е установено, че работи правилно.
Този урок предполага, че PDI е инсталиран в C:\Pentaho\data-integration на Windows или /Users/
В следващия раздел са предоставени инструкции за изтегляне и инсталиране на Oracle JDBC драйвери.
Инсталиране на Oracle JDBC драйвери в Pentaho Data Integration
Pentaho Data Integration изисква драйверите на Oracle JDBC да бъдат инсталирани, за да се свържете с която и да е база данни на Oracle. В допълнение към основния файл ojdbc8.jar са необходими и няколко допълнителни файла, които са част от пълната JDBC дистрибуция. Уверете се, че изтегляте и инсталирате само компонентите на драйвера на JDBC, които са компилирани за JDK 1.8. Те ще имат „8“ в името на файла.
За да започнете, посетете страницата за изтегляне на драйвери на Oracle 12c JDBC на адрес:
https://www.oracle.com/database/technologies/jdbc-ucp -122-downloads.html
Превъртете надолу до секцията, където се намират отделните изтегляния.
Файловете за изтегляне са:
ojdbc8.jaroraclepki.jarosdt_cert.jarosdt_core.jar
Всеки от тези файлове трябва да бъде изтеглен и копиран в папката Pentaho data-integration\lib.
Както винаги, не забравяйте да рестартирате Pentaho data Integration, така че новите jar файлове да бъдат разпознати.
На следващата страница Oracle Wallet ще бъде изтеглен от облачния сървър.
Изтегляне на Oracle Wallet от Oracle Cloud
Забележка:Ако използвате Safari на MacOSX, променете предпочитанията в Safari, за да предотвратите автоматичното отваряне на „безопасни“ файлове след изтегляне. Safari> Предпочитания> Махнете отметката от квадратчето Отваряне на „безопасни“ файлове след изтегляне.
Влезте в конзолата на Oracle Cloud и отидете на страницата Автономна база данни. Кликнете върху връзката под Показвано име за една от вашите бази данни.
Когато се появи екранът с подробности, щракнете върху DB Connection бутон.
Когато се появи прозорецът за връзка с базата данни, щракнете върху Изтегляне на портфейла бутон.
Предоставете съответстваща парола за Wallet и след това щракнете върху синьото Изтегляне бутон.
Имайте предвид, че името на файла на портфейла се състои от работата „Портфейл“ с името на автономните бази данни, добавени към него. За този пример файлът е:Wallet_ATPDatabase1.zip.
Уверете се, че сте запазили файла на Wallet на безопасно и сигурно място.
Върнете се към екрана Подробности за базата данни, щракнете върху DB Connection бутон отново. Превъртете надолу, докато видите секцията, озаглавена низове за връзка . Имайте предвид, че низ за връзка съответства на специфичен тип връзка, записан във файла tnsnames.ora, който е включен в портфейла. Запишете си тези имена, като това с _HIGH в края. Тези имена трябва да се състоят от името на вашата база данни (без интервали), последвано от _HIGH, _MEDIUM или _LOW. В този пример името на базата данни е „ATP Database1“, така че първият низ за връзка е наречен:ATPDatabase1_HIGH. Запишете или копирайте и запазете записа под TNS име за вашата база данни.
Стъпките за интегриране на Oracle Wallet в PDI са дадени на следващата страница.
Интегриране на Oracle Cloud Wallet в Pentaho Data Integration
Трябва да се следват редица стъпки, за да се насочи интеграцията на Pentaho данни към използването на Oracle Wallet.
Уверете се, че Pentaho Data Integration е инсталиран с необходимите драйвери на Oracle JDBC. PDI не трябва да се изпълнява в този момент.
Редактирайте custom.properties файл
Намерете файла custom.properties, намерен в папката data-integration\system\karaf\etc\.
Използвайте Notepad (windows) или TextEdit (MacOSX), за да редактирате файла custom.properties и добавете следния ред в долната част на файла (ако вече не е там).
org.apache.karaf.security.providers =oracle.security.pki.OraclePKIProvider
Запазете файла custom.properties и излезте от текстовия редактор.
Редактирайте Spoon.bat или лъжица.sh файлове
За инсталации на Windows редактирайте файла Spoon.bat (Използвайте Notepad или друг текстов редактор). Превъртете надолу до около ред 112 точно преди секцията с REM ** Run... **
Добавете следните редове (маркирани в жълто).
REM *************************************************** ********************REM ** Задайте опции за изпълнение на Java **REM ** Променете 2048m на по-високи стойности, в случай че ви свърши памет **REM ** или задайте променливата на средата PENTAHO_DI_JAVA_OPTIONS **REM ********************************************** ************************* ако "%PENTAHO_DI_JAVA_OPTIONS%"=="" зададе 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 за поддръжка на защитени връзки на Oracle Wallet@REM Предполага, че файлът cwallet.sso е в data-integration\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 ** Изпълни... **REM ***************предварително>
Запазете файла spoon.bat и излезте от текстовия редактор.
В MacOSX щракнете с десния бутон върху файла spoon.sh, маркирайте Отваряне с и след това изберете Приложение TextEdit .
Превъртете надолу във файла, докато намерите секцията с „# незадължителен ред за прикачване на дебъгер“. Кодът, който ще бъде добавен, ще влезе в пространството точно преди този ред.
Добавете следните редове (маркирани в синьо на снимката по-долу):# Java опции за поддръжка на защитени връзки на Oracle Wallet# Предполага се, че файлът cwallet.sso е в 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}"
Запазете файла spoon.sh и излезте от приложението TextEdit.
Копирайте файловете на Wallet в PDI
Уверете се, че портфейлът на Oracle е изтеглен от облака (вижте предишната страница). За този пример базата данни се казва „ATPDatabase1“, а името на файла на портфейла е:Wallet_ATPDatabase1.zip
Разархивирайте файла на Wallet и намерете следните четири файла в:cwallet.ssosqlnet.oratnsnames.oratrustore.jksТези файлове са показани и на фигурата по-долу:
Маркирайте тези четири файла и ги копирайте.
Придвижете се до папката Pentaho Data Integration. Създайте подпапка с име „Wallet“. Поставете четирите файла на Oracle Wallet в тази папка на Wallet, както е показано по-долу (Windows):
В MacOSX копирайте четирите файла на портфейла и ги поставете в папката /Users/
/Pentaho/data-integration/Wallet.
Изпълнение на PDI
След като тези файлове са на мястото си, можете да стартирате Pentaho Data Integration нормално, като стартирате файла Spoon.bat (или spoon.sh за потребители на MacOSX).
За да стартирате Pentaho Data Integration на Windows, щракнете двукратно върху лъжицата. програма за прилепи.За да стартирате Pentaho Data Integration на MacOSX, щракнете с десния бутон върху програмата spoon.sh, изберете Отваряне с> Друго... Променете филтъра на „Всички приложения“ и след това в Помощни програми папка изберете Терминал . След това щракнете върху Отваряне бутон.
Следващият раздел ще обсъди настройката на нова връзка към базата данни от Pentaho Data Integration.
Създаване на нова връзка с база данни в Pentaho Data Integration
За да използвате портфейла на Oracle в Pentaho Data Integration, трябва да бъде конфигурирана връзка тип „Обща база данни“. Следните стъпки очертават този процес.
Когато настройвате стъпка за въвеждане на таблица, изход на таблица или търсене/актуализация на измерения, създайте нова връзка с базата данни.
- Дайте на новата връзка име (вие си го измисляте).
- Променете Типа на връзка към обща база данни.
- Променете Диалекта до Oracle.
- Попълнете URL за персонализирана връзка както следва:
jdbc:oracle:thin:@atpdatabase1_high
Къде atpdatabase1_high е името на една от вашите връзки към вашата база данни Oracle Cloud (Прегледано на предишната страница). Той ще бъде съставен от името на вашата база данни с _high, прикрепен към него. Например, ако името на вашата база данни е „DB 123456789“, тогава възможният URL за връзка ще бъде:
jdbc:oracle:thin:@DB123456789_high - Попълнете Име на клас на персонализиран драйвер както следва:
oracle.jdbc.driver.OracleDriver - Попълнете вашето потребителско име и парола за вашата база данни Oracle Cloud.
- Щракнете върху Тест бутон за тестване на връзката.
Резултатът от теста трябва да изглежда успешен, както е показано по-долу.
Щракнете върху OK бутон, за да затворите теста на връзката. Щракнете върху OK бутон, за да запазите тази връзка с базата данни.
Някои често срещани грешки при свързване са дадени на следващата страница.
Чести грешки и проблеми при свързването с Oracle Wallet
Има няколко често срещани грешки и проблеми, които може да срещнете, когато използвате PDI и Oracle Cloud. По-долу са представени грешките и решенията/заобикалянето.
Грешка в IO:не можа да се разреши идентификаторът за свързване
Ако получите грешка като „IO Error:не може да се разреши идентификаторът за свързване“, тогава или вашият файл tnsnames.ora не може да бъде намерен, или предоставеното TNS име не съвпада с една от връзките. Например:
Грешка при свързване към база данни [OracleCloud] :org.pentaho.di.core.exception.KettleDatabaseException:Възникна грешка при опит за свързване с базата данниГрешка при свързване към база данни:(използвайки клас oracle.jdbc.driver.OracleDriver) IO грешка:не можа да разреши идентификатора за свързване "atpdatabase1_hig"
Проверете два пъти вашия файл tnsnames.ora и се уверете, че използвате име на връзка, което се появява във файла tnsnames.ora. В операционна система Windows използвайте програмата NotePad, за да отворите файла tnsnames.ora. В MacOSX използвайте програмата TextEdit, за да отворите файла tnsnames.ora.
ORA-01017:невалидно потребителско име/парола; влизане е отказано
Ако получите грешка като „ORA-01017:невалидно потребителско име/парола; отказано влизане“ това означава, че предоставеното потребителско име или парола на Oracle са невалидни. Например:
Грешка при свързване към база данни [OracleCloud] :org.pentaho.di.core.exception.KettleDatabaseException:Възникна грешка при опит за свързване с базата данниГрешка при свързване към база данни:(използвайки клас oracle.jdbc.driver.OracleDriver)ORA-01017 :невалидно потребителско име/парола; Отказано влизане
Проверете потребителското име и паролата в екземпляра на базата данни на Oracle, за да се уверите, че са правилни. Имайте предвид, че потребителското име и паролата на базата данни на Oracle ще се различават от вашия акаунт в уеб сайта на Oracle Cloud. Обикновено за тестване използваме потребителя ADMIN и тази парола е зададена при създаването на автономната база данни или автономното хранилище за данни. Например на страница 4 от този урок.
Уверете се, че паролата не съдържа нито един от следните знаци:@ / \ ?
Може да е най-лесно за тестване да използвате администратора на потребител с относително „обикновена“ парола като Pw123Pw123Pw123 .
Уверете се, че сте променили паролата на нещо по-сигурно, след като тестването приключи.
Класът на драйверите 'oracle.jdbc.driver.OracleDriver' не можа да бъде намерен
Ако получите грешка като:„Класът на драйверите „oracle.jdbc.driver.OracleDriver“ не може да бъде намерен“, уверете се, че JDBC драйверите са копирани в папката data-integration\lib и PDI е стартиран отново. Също така се уверете, че не поставяте никакви интервали преди „o“ в oracle.jdbc.driver... Например:
Грешка при свързване към база данни [OracleCloud] :org.pentaho.di.core.exception.KettleDatabaseException:Възникна грешка при опит за свързване с класа на базата данни 'oracle.jdbc.driver.OracleDriver' не може да бъде намерен, уверете се, че Инсталиран е драйвер за „Обща база данни“ (jar файл). oracle.jdbc.driver.OracleDriver
ORA-12529 TNS:Заявката за свързване е отхвърлена въз основа на текущите правила за филтриране
От вас получавате грешка като:„ORA-12529 TNS:Заявката за свързване е отхвърлена въз основа на текущите правила за филтриране ” когато се свързвате към базата данни, може да се окаже, че вашите настройки за мрежова защита за автономната база данни предотвратяват връзки. Пълното съобщение за грешка може да се появи, както следва:
Грешка при свързване към база данни [OracleCloud] :org.pentaho.di.core.exception.KettleDatabaseException:Възникна грешка при опит за свързване с базата данни. връзка със следната грешка:ORA-12529, TNS:заявката за свързване е отхвърлена въз основа на текущите правила за филтриране
Влезте в интерфейса за управление на Oracle Cloud и прегледайте екрана с информация за автономната база данни за вашата база данни. Проверете Тип на достъп и Списък за контрол на достъпа за да гарантирате, че сесии за дистанционно влизане са разрешени от вашето местоположение. Може да се наложи да рестартирате базата данни
Грешка в IO:Получено фатално предупреждение:handshake_failure, прекъсване на връзката 188 ms., прекъсване на удостоверяването 0 ms.
Тази грешка може да възникне, когато има несъответствие между версията на Java Development Kit и сървъра на Oracle. Може да е свързано с библиотеките с кодове, използвани за защита на комуникационния канал между клиент и сървър (например TLS). Уверете се, че имате най-новата версия на Oracle Java Development Kit 8. Например:
Грешка при свързване към база данни [oracle_cloud_atp] :org.pentaho.di.core.exception.KettleDatabaseException:Възникна грешка при опит за свързване с базата данни. Получено фатално предупреждение:handshake_failure, прекъсване на връзката 188 ms., прекъсване на удостоверяването 0 ms.org.pentaho.di.core.exception.KettleDatabaseException:Възникна грешка при опит за свързване с базата данни. .OracleDriver)IO грешка:Получено фатално предупреждение:handshake_failure, прекъсване на връзката 188 ms., прекъсване на удостоверяването 0 ms.
Грешка в IO:Входящият е затворен, преди да се получи close_notify на партньор
Ако получите грешка като:„Грешка в IO:Входящата затворена преди получаване на close_notify на партньора“, когато изпълнявате трансформация, може да се окаже, че имате твърде много отворени връзки към базата данни към сървъра на Oracle. Това може да е така, ако използвате услугите „Винаги безплатни“ на Oracle Cloud. тези услуги имат ограничен брой едновременни връзки.
Затворете всички допълнителни раздели за трансформация, които имате отворени. Излезте от Spoon и го рестартирайте. Отворете само трансформацията, върху която сте работили, и опитайте да я стартирате отново. Например в PDI дневника:
2020/01/19 15:44:43 - Promotion Dim Lookup.0 - ГРЕШКА (версия 8.2.0.0-342, компилация 8.2.0.0-342 от 2018-11-14 10.30.55 от buildguy) :Грешка възникна, обработката ще бъде спряна:2020/01/19 15:44:43 - Promotion Dim Lookup.0 - Възникна грешка при опит за свързване с базата данни2020/01/19 15:44:43 - Promotion Dim Lookup.0 - IO Грешка:Входящият е затворен преди получаването на close_notify на партньора:възможна атака с отрязване?, Изтичане на удостоверяването 0 ms.
В някои редки случаи това може да бъде причинено и от несъответствие в ревизията на използвания JDK. Имаше някои несъвместимости, въведени с поддръжката на PKI в Java Development Kit версия 1.8. Инсталирането на актуализиран 1.8 JDK изглежда решава тези проблеми.
Ако проблемът продължава (и се свързвате към непроизводствен сървър), опитайте да рестартирате автономната база данни на Oracle, тъй като това може да освободи всички продължаващи връзки.
ORA-00018:максималният брой сесии е надвишен
ORA-00018:максималният брой сесии е надвишен може да се появи грешка, ако в базата ви данни свършат наличните връзки. Това може да е проблем при работа с нивото „Винаги безплатно“ на автономната база данни на Oracle. Грешката може да се появи, както следва:
org.pentaho.di.trans.steps.dimensionlookup.DimensionLookupMeta@75df4b1d - ГРЕШКА (версия 8.2.0.0-342, компилация 8.2.0.0-342 от 2018-11-14 10.30.55) от:грешка при buildguyy възникнало:org.pentaho.di.trans.steps.dimensionlookup.DimensionLookupMeta@75df4b1d - Възникна грешка при опит за свързване към базата данниorg.pentaho.di.trans.steps.dimensionlookup.DimensionLookupMeta@75df4b1d -org.trans.pentaho.di steps.dimensionlookup.DimensionLookupMeta@75df4b1d - Грешка при свързване към базата данни:(използвайки клас oracle.jdbc.driver.OracleDriver)org.pentaho.di.trans.steps.dimensionlookup.DimensionLookupMeta@75df4b1d - превишаване на максималния брой сесии от 18 ORA:/предварително>Затворете всички допълнителни раздели за трансформация, които имате отворени. Излезте от Spoon и го рестартирайте. Отворете само трансформацията, върху която сте работили, и опитайте да я стартирате отново.
Ако проблемът продължава (и се свързвате с непроизводителен сървър), опитайте да рестартирате автономната база данни на Oracle, тъй като това може да освободи евентуално продължаване връзки.Неправилни типове данни при създаване на таблици
PDI трябва да използва подходящите типове данни на Oracle (INTEGER, NUMBER, DATE, VARCHAR), когато създава таблици чрез стъпки за търсене/актуализация на измерения или изход на таблица. Ако видите използването на типове данни като BIGSERIAL или други типове данни, различни от Oracle, опитайте следното:
- Върнете се към вашата изходна стъпка, като например стъпка за четене на CSV и премахнете отметката от квадратчето за „мързеливо преобразуване“
- Върнете се към стъпката за търсене/актуализация на измерения или изход на таблица и редактирайте връзката с базата данни. Уверете се, че Диалект е настроен на Oracle .
Щракнете върху бутона ТЕСТ, за да се уверите, че идентификационните данни все още работят. Затворете диалоговия прозорец за връзка с база данни. - Щракнете върху бутона SQL и проверете предложения SQL оператор CREATE TABLE, за да се уверите, че типовете данни вече са правилни.
- Ако типовете данни все още не са правилни, опитайте да рестартирате PDI и следвайте горните стъпки отново.
Бавна реакция при използване на PDI Database Explorer с Oracle Cloud
Може да забележите, че Pentaho Data Integration ще отнеме много време (и може да се срине), когато използвате Инструменти> База данни> Изследване функция за изследване на база данни на Oracle Cloud. Основната причина е, че повечето екземпляри на Oracle Cloud имат голям брой вградени схеми на база данни, които PDI Database Explorer се опитва да прочете.
Вместо да използвате Database Explorer на PDI, използвайте инструмента за SQL Developer на Oracle, за да изследвате вашата схема, да пуснете стари таблици и да заявите данни, за да видите как работят трансформациите. Oracle Cloud има вградено уеб приложение за SQL Developer, което е лесно за използване за тази цел.
Невалиден кеш със стъпка за търсене/актуализация на измерения, причинена от Грешка при сериализиране на масив от ред към байт
Докато актуализирате данните с помощта на стъпка за търсене/актуализация на измерения, може да срещнете грешка, свързана с техническия ключ (сурогатен ключ) и Грешка при сериализиране на масив от ред в байт . Един пример за тази грешка би бил:
Търсене/актуализация на измерения.0 - ГРЕШКА (версия 8.2.0.0-342, компилация 8.2.0.0-342 от 2018-11-14 10.30.55 от buildguy) :Неочаквана грешка Търсене/актуализация на измерения.0 - 8.2ver ( .0.0-342, build 8.2.0.0-342 от 2018-11-14 10.30.55 от buildguy) :java.lang.RuntimeException:Грешка при сериализиране на ред в байтов масив. .row.RowMeta.extractData(RowMeta.java:1134) Търсене/актуализация на измерения.0 - в org.pentaho.di.trans.steps.dimensionlookup.DimensionLookup.addToCache(DimensionLookup.java:1522) Търсене на измерение -/update в org.pentaho.di.trans.steps.dimensionlookup.DimensionLookup.lookupValues(DimensionLookup.java:754) Проверка/актуализация на измерения.0 - в org.pentaho.di.trans.steps.dimensionlookup.DimensionLookup.processLokup(DimensionLookup.processLokup.DimensionLookup.processLokup. :232) Търсене/актуализация на измерения.0 - в org.pentaho.di.trans.step.RunThread.run(RunThread.java:62) Търсене/актуализация на измерения.0 - в java.lang.Thread.run(Thread.java :748) Търсене/актуализация на измерение.0 - Причинено от:java.l ang.RuntimeException:CUSTOMER_DIM_ID BigNumber(38) :Имаше грешка в типа данни:типът данни на обекта java.lang.Long [320] не съответства на мета стойността [BigNumber(38)]
Тази грешка може да бъде причинена от неправилна стойност на техническия ключ в кеша или невъзможността на стъпката Търсене/Актуализиране на измерения за достъп до кеша на стойностите на уникални технически ключове.
За да разрешите този проблем, опитайте отново трансформацията с Активиране на кеша опцията е изключена в стъпката Търсене/Актуализиране на измерения. Може също да пожелаете да изчистите кеша, като щракнете върху SQL и след това щракнете върху Изчистване на кеша бутон.