Using External backends Oracle

Запросы на решение проблем

Модератор: ykolesnikov

Ответить
mugur
OTRS Новобранец
Сообщения: 8
Зарегистрирован: 31 янв 2019, 06:39

Using External backends Oracle

Сообщение mugur » 31 янв 2019, 08:06

Добрый день!

Необходимо подключить view в удаленном Oracle как customer database backend. Для этого необходимое все установил

Код: Выделить всё

[root@otrs logs]# echo $ORACLE_HOME
/usr/lib/oracle/11.2/client64
[root@otrs logs]# echo $LD_LIBRARY_PATH
/usr/lib/oracle/11.2/client64/lib
[root@otrs logs]# su otrs -s /bin/bash -c "perl /opt/otrs/bin/otrs.CheckModules.pl"
  o Apache::DBI......................ok (v1.12)
  o Apache2::Reload..................ok (v0.13)
  o Archive::Tar.....................ok (v1.92)
  o Archive::Zip.....................ok (v1.30)
  o Crypt::Eksblowfish::Bcrypt.......ok (v0.009)
  o Crypt::SSLeay....................ok (v0.64)
  o Date::Format.....................ok (v2.24)
  o DateTime.........................ok (v1.04)
  o DBI..............................ok (v1.627)
  o DBD::mysql.......................ok (v4.023)
  o DBD::ODBC........................Not installed! (optional - Required to connect to a MS-SQL database.)
  o DBD::Oracle......................ok (v1.76)
  o DBD::Pg..........................ok (v2.19.3)
  o Digest::SHA......................ok (v5.85)
  o Encode::HanExtra.................ok (v0.23)
  o IO::Socket::SSL..................ok (v1.94)
  o JSON::XS.........................ok (v3.01)
  o List::Util::XS...................ok (v1.27)
  o LWP::UserAgent...................ok (v6.26)
  o Mail::IMAPClient.................ok (v3.37)
    o IO::Socket::SSL................ok (v1.94)
    o Authen::SASL...................ok (v2.15)
    o Authen::NTLM...................ok (v1.09)
  o ModPerl::Util....................ok (v2.000010)
  o Net::DNS.........................ok (v0.72)
  o Net::LDAP........................ok (v0.56)
  o Template.........................ok (v2.24)
  o Template::Stash::XS..............ok (undef)
  o Text::CSV_XS.....................ok (v1.00)
  o Time::HiRes......................ok (v1.9725)
  o XML::LibXML......................ok (v2.0018)
  o XML::LibXSLT.....................ok (v1.80)
  o XML::Parser......................ok (v2.41)
  o YAML::XS.........................ok (v0.54)
После в конфигах прописал /opt/otrs/Kernel/Config.pm

Код: Выделить всё

    $ENV{ORACLE_HOME}     = '/usr/lib/oracle/11.2/client64';
    $ENV{LD_LIBRARY_PATH} = '/usr/lib/oracle/11.2/client/lib';
    $ENV{NLS_LANG}        = 'AMERICAN_AMERICA.AL32UTF8';
 #   $ENV{NLS_DATE_FORMAT} = 'YYYY-MM-DD HH24:MI:SS';


# CustomerUser (customer database backend and settings)
$Self->{CustomerUser5} = {
    Name => 'ora_client',
    Module => 'Kernel::System::CustomerUser::DB',
    Params => {
            DSN => 'DBI:Oracle://x.x.x.x:1521/base',
            User => 'yyyy',
            Password => 'zzzz',
            Table => 'VIEW_OTRS',
            CaseSensitive => 0,
        },
# customer unique id
CustomerKey => 'N_SUBJECT_ID',
# customer #
CustomerID => 'N_SUBJECT_ID',
CustomerValid => 'N_SUBJ_STATE_ID',
    CustomerUserListFields =>   ['VC_BASE_SUBJECT_NAME','VC_SUBJ_NAME'],
    CustomerUserSearchFields => ['VC_BASE_SUBJECT_NAME', 'VC_SUBJ_NAME'],
    CustomerUserSearchPrefix => '',
    CustomerUserSearchSuffix => '*',
    CustomerUserSearchListLimit => 250,
    CustomerUserPostMasterSearchFields => ['VC_TAGS'],
    CustomerUserNameFields => ['VC_BASE_SUBJECT_NAME'],
    CustomerUserEmailUniqCheck => 0,
    ReadOnly => 1,
    Map => [
        # note: Login, Email and CustomerID needed!
        # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly, http-link-target
        [ 'UserTitle',      'Title',      'N_SUBJECT_ID',           1, 0, 'int', '', 0 ],
        [ 'UserLogin',      'Username',   'VC_BASE_SUBJECT_NAME',   1, 1, 'varchar', '', 0 ],
        [ 'UserPassword',   'Password',   'VC_SUBJ_NAME',           0, 0, 'varchar', '', 0 ],
        [ 'UserEmail',      'Email',      'VC_TAGS',                1, 0, 'varchar', '', 0 ],
        [ 'ValidID',        'Valid',      'N_SUBJ_STATE_ID',        0, 1, 'int', '', 0 ],

    ],
    # default selections
    Selections => {
        UserTitle => {
            'Mr.' => 'Mr.',
            'Mrs.' => 'Mrs.',
        },
    },
};

в /etc/httpd/conf.d/zzz_otrs.conf

Код: Выделить всё

<Directory "/opt/otrs/bin/cgi-bin/">
    AllowOverride None
    Options +ExecCGI -Includes
# Добавил вот эти 2 строки
    PerlSetEnv LD_LIBRARY_PATH  /usr/lib/oracle/11.2/client64/lib
    PerlSetEnv ORACLE_HOME /usr/lib/oracle/11.2/client64

    <IfModule mod_version.c>
        <IfVersion < 2.4>
            Order allow,deny
            Allow from all
        </IfVersion>
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
    </IfModule>
    <IfModule !mod_version.c>
        Order allow,deny
        Allow from all
    </IfModule>

    <IfModule mod_filter.c>
        <IfModule mod_deflate.c>
            AddOutputFilterByType DEFLATE text/html text/javascript application/javascript text/css text/xml application/json text/json
         </IfModule>
    </IfModule>

</Directory>
Но все равно клиентов не видно. В логах httpd

Код: Выделить всё

[Thu Jan 31 10:53:20.973342 2019] [:error] [pid 3722] install_driver(Oracle) failed: Can't locate DBD/Oracle.pm in @INC 
 (@INC contains: 
 /opt/otrs/Custom /opt/otrs/Kernel/cpan-lib /opt/otrs/ /usr/local/lib64/perl5
  /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 . 
 /etc/httpd) at (eval 158) line 3.\nPerhaps the DBD::Oracle perl module hasn't been fully installed,
 \nor perhaps the capitalisation of 'Oracle' isn't right.\nAvailable drivers: DBM, ExampleP, File, 
 Gofer, Pg, Proxy, SQLite, Sponge, mysql.\n at /opt/otrs//Kernel/System/DB.pm line 204.\n
В чем я ошибся можете указать))

alexus
OTRS Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

Re: Using External backends Oracle

Сообщение alexus » 31 янв 2019, 12:00

Добрый день!
Найдите, где лежит в системе файл Oracle.pm и сравните с папками, где он его пытается найти
mugur писал(а):
31 янв 2019, 08:06
Can't locate DBD/Oracle.pm in @INC
(@INC contains:
/opt/otrs/Custom /opt/otrs/Kernel/cpan-lib /opt/otrs/ /usr/local/lib64/perl5
/usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .
/etc/httpd)
С уважением,
Алексей Юсов

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

mugur
OTRS Новобранец
Сообщения: 8
Зарегистрирован: 31 янв 2019, 06:39

Re: Using External backends Oracle

Сообщение mugur » 31 янв 2019, 12:35

В этих указанных папках этого файла нет.

Нашел в других папках

Код: Выделить всё

[root@otrs share]# find /usr/ -iname Oracle.pm
[root@otrs share]# find /opt/otrs/ -iname Oracle.pm
/opt/otrs/Kernel/System/DB/oracle.pm
/opt/otrs/.cpan/build/DBD-Oracle-1.76-MRA4O3/lib/DBD/Oracle.pm
/opt/otrs/.cpan/build/DBD-Oracle-1.76-MRA4O3/blib/lib/DBD/Oracle.pm
/opt/otrs/.cpan/build/DBD-Oracle-1.76-NzrhqL/lib/DBD/Oracle.pm
/opt/otrs/.cpan/build/DBD-Oracle-1.76-NzrhqL/blib/lib/DBD/Oracle.pm
/opt/otrs/.cpan/build/DBD-Oracle-1.76-ut9Lh1/lib/DBD/Oracle.pm
/opt/otrs/.cpan/build/DBD-Oracle-1.76-ut9Lh1/blib/lib/DBD/Oracle.pm
/opt/otrs/.cpan/build/DBD-Oracle-1.76-Szp3H5/lib/DBD/Oracle.pm
/opt/otrs/.cpan/build/DBD-Oracle-1.76-u6PXXC/lib/DBD/Oracle.pm
/opt/otrs/.cpan/build/DBD-Oracle-1.76-u6PXXC/blib/lib/DBD/Oracle.pm
[root@otrs share]# find /root/ -iname Oracle.pm
/root/.cpan/build/DBD-Oracle-1.76-BNXUVu/lib/DBD/Oracle.pm
/root/.cpan/build/DBD-Oracle-1.76-BNXUVu/blib/lib/DBD/Oracle.pm
/root/perl5/lib/perl5/x86_64-linux-thread-multi/DBD/Oracle.pm
[root@otrs share]#

mugur
OTRS Новобранец
Сообщения: 8
Зарегистрирован: 31 янв 2019, 06:39

Re: Using External backends Oracle

Сообщение mugur » 31 янв 2019, 12:42

Использовал для теста perl скрипт. Запрос нормально выполняется и данные вытаскиваются. Только OTRS не хочет :roll:

Код: Выделить всё

#!/usr/bin/perl
use strict;
use utf8;
use DBI;
use warnings;
$ENV{NLS_LANG}        = 'AMERICAN_AMERICA.AL32UTF8';

    my $dbh = DBI->connect('dbi:Oracle://x.x.x.x:1521/x', 'xx', 'xxx');
    my $sth = $dbh->prepare(q{
        SELECT * FROM USERS where rownum <= 10
    });
    $sth->execute;
    binmode(STDOUT,':utf8');
    while ( my @row = $sth->fetchrow_array )
    {
     foreach my $v (@row)
     {
      if ($v)
      {
       print "$v ";
      }
     }
     print "\n";
    }
1;

alexus
OTRS Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

Re: Using External backends Oracle

Сообщение alexus » 31 янв 2019, 21:38

Значит скорее всего юзер otrs не видит модулей. Вы-то запускаете модуль небось из под рута или sudo? А попробуйте под юзером otrs запустить скрипт.
С уважением,
Алексей Юсов

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

mugur
OTRS Новобранец
Сообщения: 8
Зарегистрирован: 31 янв 2019, 06:39

Re: Using External backends Oracle

Сообщение mugur » 01 фев 2019, 04:58

Нет пользователь otrs также видит.

Код: Выделить всё

[root@otrs mengi]# su otrs -s /bin/bash -c "perl /opt/otrs/bin/otrs.CheckModules.pl"
  o Apache::DBI......................ok (v1.12)
  o Apache2::Reload..................ok (v0.13)
  o Archive::Tar.....................ok (v1.92)
  o Archive::Zip.....................ok (v1.30)
  o Crypt::Eksblowfish::Bcrypt.......ok (v0.009)
  o Crypt::SSLeay....................ok (v0.64)
  o Date::Format.....................ok (v2.24)
  o DateTime.........................ok (v1.04)
  o DBI..............................ok (v1.627)
  o DBD::mysql.......................ok (v4.023)
  o DBD::ODBC........................ok (v1.50)
  o DBD::Oracle......................ok (v1.76)
  o DBD::Pg..........................ok (v2.19.3)
  o Digest::SHA......................ok (v5.85)
  o Encode::HanExtra.................ok (v0.23)
  o IO::Socket::SSL..................ok (v1.94)
  o JSON::XS.........................ok (v3.01)
  o List::Util::XS...................ok (v1.27)
  o LWP::UserAgent...................ok (v6.26)
  o Mail::IMAPClient.................ok (v3.37)
    o IO::Socket::SSL................ok (v1.94)
    o Authen::SASL...................ok (v2.15)
    o Authen::NTLM...................ok (v1.09)
  o ModPerl::Util....................ok (v2.000010)
  o Net::DNS.........................ok (v0.72)
  o Net::LDAP........................ok (v0.56)
  o Template.........................ok (v2.24)
  o Template::Stash::XS..............ok (undef)
  o Text::CSV_XS.....................ok (v1.00)
  o Time::HiRes......................ok (v1.9725)
  o XML::LibXML......................ok (v2.0018)
  o XML::LibXSLT.....................ok (v1.80)
  o XML::Parser......................ok (v2.41)
  o YAML::XS.........................ok (v0.54)
[root@otrs mengi]# su otrs
[otrs@otrs mengi]$ /opt/otrs/bin/otrs.CheckModules.pl
  o Apache::DBI......................ok (v1.12)
  o Apache2::Reload..................ok (v0.13)
  o Archive::Tar.....................ok (v1.92)
  o Archive::Zip.....................ok (v1.30)
  o Crypt::Eksblowfish::Bcrypt.......ok (v0.009)
  o Crypt::SSLeay....................ok (v0.64)
  o Date::Format.....................ok (v2.24)
  o DateTime.........................ok (v1.04)
  o DBI..............................ok (v1.627)
  o DBD::mysql.......................ok (v4.023)
  o DBD::ODBC........................ok (v1.50)
  o DBD::Oracle......................ok (v1.76)
  o DBD::Pg..........................ok (v2.19.3)
  o Digest::SHA......................ok (v5.85)
  o Encode::HanExtra.................ok (v0.23)
  o IO::Socket::SSL..................ok (v1.94)
  o JSON::XS.........................ok (v3.01)
  o List::Util::XS...................ok (v1.27)
  o LWP::UserAgent...................ok (v6.26)
  o Mail::IMAPClient.................ok (v3.37)
    o IO::Socket::SSL................ok (v1.94)
    o Authen::SASL...................ok (v2.15)
    o Authen::NTLM...................ok (v1.09)
  o ModPerl::Util....................ok (v2.000010)
  o Net::DNS.........................ok (v0.72)
  o Net::LDAP........................ok (v0.56)
  o Template.........................ok (v2.24)
  o Template::Stash::XS..............ok (undef)
  o Text::CSV_XS.....................ok (v1.00)
  o Time::HiRes......................ok (v1.9725)
  o XML::LibXML......................ok (v2.0018)
  o XML::LibXSLT.....................ok (v1.80)
  o XML::Parser......................ok (v2.41)
  o YAML::XS.........................ok (v0.54)
И скрипт на perl также от otrs пользователя запускается.

alexus
OTRS Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

Re: Using External backends Oracle

Сообщение alexus » 01 фев 2019, 07:39

mugur писал(а):
31 янв 2019, 12:35
В этих указанных папках этого файла нет.

Нашел в других папках

Код: Выделить всё

[root@otrs share]# find /usr/ -iname Oracle.pm
[root@otrs share]# find /opt/otrs/ -iname Oracle.pm
/opt/otrs/Kernel/System/DB/oracle.pm
/opt/otrs/.cpan/build/DBD-Oracle-1.76-MRA4O3/lib/DBD/Oracle.pm
/opt/otrs/.cpan/build/DBD-Oracle-1.76-MRA4O3/blib/lib/DBD/Oracle.pm
/opt/otrs/.cpan/build/DBD-Oracle-1.76-NzrhqL/lib/DBD/Oracle.pm
/opt/otrs/.cpan/build/DBD-Oracle-1.76-NzrhqL/blib/lib/DBD/Oracle.pm
/opt/otrs/.cpan/build/DBD-Oracle-1.76-ut9Lh1/lib/DBD/Oracle.pm
/opt/otrs/.cpan/build/DBD-Oracle-1.76-ut9Lh1/blib/lib/DBD/Oracle.pm
/opt/otrs/.cpan/build/DBD-Oracle-1.76-Szp3H5/lib/DBD/Oracle.pm
/opt/otrs/.cpan/build/DBD-Oracle-1.76-u6PXXC/lib/DBD/Oracle.pm
/opt/otrs/.cpan/build/DBD-Oracle-1.76-u6PXXC/blib/lib/DBD/Oracle.pm
[root@otrs share]# find /root/ -iname Oracle.pm
/root/.cpan/build/DBD-Oracle-1.76-BNXUVu/lib/DBD/Oracle.pm
/root/.cpan/build/DBD-Oracle-1.76-BNXUVu/blib/lib/DBD/Oracle.pm
/root/perl5/lib/perl5/x86_64-linux-thread-multi/DBD/Oracle.pm
[root@otrs share]#
А если от корня поискать? И скрипт ваш под юзером apache попробуйте так же.
С уважением,
Алексей Юсов

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

mugur
OTRS Новобранец
Сообщения: 8
Зарегистрирован: 31 янв 2019, 06:39

Re: Using External backends Oracle

Сообщение mugur » 24 апр 2019, 05:06

Так и не смог добить это (

mugur
OTRS Новобранец
Сообщения: 8
Зарегистрирован: 31 янв 2019, 06:39

Re: Using External backends Oracle

Сообщение mugur » 22 май 2019, 07:12

Знания в Perl не имею. Для проверки взял такой скрипт

Код: Выделить всё

#!/usr/bin/perl
use ExtUtils::Installed;
my $instmod = ExtUtils::Installed->new();
foreach my $module ($instmod->modules())
{ my $version = $instmod->version($module) || "-"; print "$module --> $version \r\n"; }

[mei@otrs ~]$ ./1.pl
Perl --> 5.16.3
А под root видны все модули.

Код: Выделить всё

[root@otrs]# ./1.pl
Algorithm::Diff --> 1.1903
Alien::Build --> 1.65
Alien::Libxml2 --> 0.07
AppConfig --> 1.71
...
DBD::Oracle --> 1.76
DBD::SQLite --> 1.62
DBI --> 1.634
DBIx::Simple --> 1.37
DB_File --> 1.851
..
Как собрать чтоб модуль был доступен и для пользователей?

mugur
OTRS Новобранец
Сообщения: 8
Зарегистрирован: 31 янв 2019, 06:39

Re: Using External backends Oracle

Сообщение mugur » 27 май 2019, 06:59

Вывод от простого пользователя

Код: Выделить всё

  %ENV:
    PERL5LIB="/root/perl5/lib/perl5:/root/perl5/lib/perl5"
    PERL_LOCAL_LIB_ROOT="/root/perl5:/root/perl5"
    PERL_MB_OPT="--install_base "/root/perl5""
    PERL_MM_OPT="INSTALL_BASE=/root/perl5"
  @INC:
    /root/perl5/lib/perl5
    /root/perl5/lib/perl5
    /usr/local/lib64/perl5
    /usr/local/share/perl5
    /usr/lib64/perl5/vendor_perl
    /usr/share/perl5/vendor_perl
    /usr/lib64/perl5
    /usr/share/perl5

И от root пользователя.

Код: Выделить всё

  %ENV:
    PERL5LIB="/root/perl5/lib/perl5:/root/perl5/lib/perl5"
    PERL_LOCAL_LIB_ROOT="/root/perl5:/root/perl5"
    PERL_MB_OPT="--install_base "/root/perl5""
    PERL_MM_OPT="INSTALL_BASE=/root/perl5"
  @INC:
    /root/perl5/lib/perl5/5.16.3/x86_64-linux-thread-multi
    /root/perl5/lib/perl5/5.16.3
    /root/perl5/lib/perl5/x86_64-linux-thread-multi
    /root/perl5/lib/perl5
    /root/perl5/lib/perl5/5.16.3/x86_64-linux-thread-multi
    /root/perl5/lib/perl5/5.16.3
    /root/perl5/lib/perl5/x86_64-linux-thread-multi
    /root/perl5/lib/perl5
    /usr/local/lib64/perl5
    /usr/local/share/perl5
    /usr/lib64/perl5/vendor_perl
    /usr/share/perl5/vendor_perl
    /usr/lib64/perl5
    /usr/share/perl5
.

Именно в этой /root/perl5/lib/perl5/5.16.3/x86_64-linux-thread-multi папке скомпилирован этот модуль, а как дать права на доступ к папке root-а.
Я пробовал дать так
chmod ugo+rwx /root/perl5/lib/perl5/* но не получается.

Ответить