Мондриан не может использовать имя Oracle TNS в качестве источника данных JDBC

Может ли кто-нибудь помочь со следующей проблемой:

У меня есть 2 источника данных JDBC, созданных на сервере Pentaho BA:

  1. Oracle Connection с предоставленными учетными данными пользователя, хостом, портом и SID в качестве имени базы данных.
  2. Oracle Connections с предоставленными учетными данными пользователя и именем TNS в качестве имени базы данных, поскольку, если есть ИМЯ СЛУЖБЫ, я должен использовать имя TNS.

Оба вышеуказанных соединения успешно пингуются.

Когда я использую вариант №1 в качестве источника данных JDBC для моей схемы куба - все работает.

Но когда я использую вариант №2, куб не может быть загружен, и в файле журнала возникает следующее исключение:

java.lang.RuntimeException: Unable to get connnection 
jdbc:mondrianataSource=Report DB; EnableXmla=false; overwrite=false; 
Locale=en_US; Catalog=mondrian:/My_Cube_Schema; UseContentChecksum=true
at com.pentaho.analyzer.service.impl.OlapConnectionManagerImpl.createConnection(SourceFile:152)
at com.pentaho.analyzer.service.impl.OlapConnectionManagerImpl.createConnection(SourceFile:75)
at com.pentaho.analyzer.service.impl.a.getConnection(SourceFile:55)

Итак, вопрос в том, можно ли использовать вариант №2, поскольку у меня есть только НАЗВАНИЕ СЛУЖБЫ для подключения к БД.

Любая помощь будет оценена по достоинству!


person Bagdat    schedule 08.08.2018    source источник
comment
Вы хотите сказать, что создали куб в PSW и столкнулись с проблемой во время его публикации на сервере BA?   -  person Helping Hand..    schedule 09.08.2018
comment
@WorkingHard .., нет, при публикации куба из PSW проблем нет. Куб от PSW успешно опубликован. Исключение возникает, когда я пытаюсь создать аналитический отчет. Вот мои шаги для воспроизведения: я перехожу к BA Server, Create New - ›Analysis Report, и открытое диалоговое окно не отображает мой куб из-за указанного выше исключения.   -  person Bagdat    schedule 09.08.2018


Ответы (2)


Причина проблемы - имя подключения. Имя подключения должно быть одинаковым на сервере PSW и BA, что является основным требованием.

person Helping Hand..    schedule 09.08.2018
comment
Спасибо за ваше предложение, однако изменение имени подключения не помогает. Кроме того, в PSW я попытался изменить имя соединения на любое случайное имя, опубликовал его, а на сервере BA изменил источник данных JDBC опубликованного куба на тот, который уже создан на сервере BA - для одного соединения он работает, а для другого - нет. т работать. Хотя оба соединения успешно пингуются, когда я пытаюсь редактировать их на сервере BA Server. Разницу между ними я написал в своем первоначальном посте. - person Bagdat; 09.08.2018
comment
Вы когда-нибудь пробовали использовать такое соединение, которое я описал как второй вариант в своем посте? Может быть, Мондриан вообще не поддерживает такое соединение? - person Bagdat; 09.08.2018
comment
После каждого изменения очищаю кеш. Тот же результат. - person Bagdat; 09.08.2018
comment
Хорошо, тогда без понятия. пусть ответит на этот вопрос тот, кто работает с oracle. - person Helping Hand..; 09.08.2018

Я нашел обходной путь, но не буду отмечать его как ответ, так как искал решение, которое работает с TNSName.

На следующей странице http://www.orafaq.com/wiki/JDBC я нашел 3 допустимые способы URL-адресов JDBC:

  1. По SID
    jdbc:oracle:thin:[<user>/<password>]@<host>[:<port>]:<SID>

Ex.: jdbc:oracle:thin:@myhost:1521:orcl

  1. По названию службы
    jdbc:oracle:thin:[<user>/<password>]@//<host>[:<port>]/<service>

Ex.: jdbc:oracle:thin:@//myhost:1521/orcl

  1. Автор TNSName
    jdbc:oracle:thin:[<user>/<password>]@<TNSName>

Ex.: jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=<host>)(PORT=<port>))(CONNECT_DATA=(SERVICE_NAME=<service>)))

Вот мои скриншоты для моих случаев, описанных в моем вопросе:
Для варианта №1:
Oracle Connection с предоставленными учетными данными пользователя, хостом, портом и SID в качестве имени базы данных введите изображение  описание здесь

Для варианта №2:
Oracle Connections с предоставленными учетными данными пользователя и именем TNS в качестве имени базы данных, поскольку если есть ИМЯ СЛУЖБЫ, тогда я должен использовать имя TNS.  введите описание изображения здесь

И, наконец, решение, которое сработало в моей текущей ситуации (обратите внимание, что имя службы выделено косой чертой): введите описание изображения здесь

person Bagdat    schedule 10.08.2018