Ad Widget

Collapse

Подключение к БД Оракл

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • aleksey.ishchenko
    Senior Member
    • May 2020
    • 187

    #1

    Подключение к БД Оракл

    Не могу подключиться из консоли zabbix, к БД оракла через isql, пр подключении выдает ошибка сегментирования. К БД MSSQL подключение проходит,а к бд оракла нет. Где смотреть? Из под windows подключение под данным юзером проходит. В tns и odbc указал адреса и dsn
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Видимо, что-то не так прописано в odbcinst.ini (ссылка не на тот бинарник драйвера) или odbc.ini (ссылка не на тот драйвер, не на тот TNS или вообще не тот набор параметров).

    Для примера (драйвер версии 19.6).

    Секция файла tnsnames.ora:
    Code:
    testdb =
       (DESCRIPTION =
         (ADDRESS = (PROTOCOL = TCP)(HOST = testdb.mydomain.local)(PORT = 1521))
         (CONNECT_DATA =
           (SERVER = DEDICATED)
           (SERVICE_NAME = testdb)
         )
       )
    Секция в odbcinst.ini:
    Code:
    [oracle]
    Description = Oracle ODBC driver for Oracle 19
    Driver = /usr/lib/oracle/19.6/client64/lib/libsqora.so.19.1
    Setup =
    FileUsage =
    CPTimeout =
    CPReuse =
    Секция в odbc.ini:
    Code:
    [ora-test]
    AggregateSQLType = FLOAT
    Application Attributes = T
    Attributes = W
    BatchAutocommitMode = IfAllSuccessful
    BindAsFLOAT = F
    CacheBufferSize = 20
    CloseCursor = F
    DisableDPM = F
    DisableMTS = T
    DisableRULEHint = T
    Driver = oracle
    DSN = ora-test
    EXECSchemaOpt =
    EXECSyntax = T
    Failover = T
    FailoverDelay = 10
    FailoverRetryCount = 10
    FetchBufferSize = 64000
    ForceWCHAR = F
    LobPrefetchSize = 8192
    Lobs = T
    Longs = T
    MaxLargeData = 0
    MaxTokenSize = 8192
    MetadataIdDefault = F
    QueryTimeout = T
    ResultSets = T
    ServerName = testdb
    SQLGetData extensions = F
    SQLTranslateErrors = F
    StatementCache = F
    Translation DLL =
    NB: Имя секции и параметр "DSN=" должны совпадать, а параметр "ServerName=" ссылается на TNS (имя секции из файла tnsnames.ora).
    Команда "isql -v DSN имяПользователя пароль" должна показывать успешное подключение, например:
    Code:
    [COLOR=#FF0000]~ #[/COLOR] [COLOR=#0000FF]isql -v ora-test zabbix ******[/COLOR]
    +---------------------------------------+
    | Connected!                            |
    |                                       |
    | sql-statement                         |
    | help [tablename]                      |
    | quit                                  |
    |                                       |
    +---------------------------------------+
    SQL> [COLOR=#0000FF]quit[/COLOR]
    [COLOR=#FF0000]~ #[/COLOR]

    Comment

    • aleksey.ishchenko
      Senior Member
      • May 2020
      • 187

      #3
      tnsnames.ora
      IBANK =
      (DESCRIPTION=
      (ADDRESS=
      (PROTOCOL=TCP)
      (HOST=10.52.0.245)
      (PORT=1521)
      )
      (CONNECT_DATA=
      (SERVICE_NAME=IBANK)
      )
      )
      odbcinst.ini
      [OracleDriver]
      Description=ODBC for Oracle 12
      Driver=/usr/lib/oracle/12.2/client64/lib/libsqora.so.12.1

      odbc.ini
      [IBANK]
      Driver = OracleDriver
      DSN = IBANK
      ServerName = 10.52.0.245/IBANK
      UserID = *
      Password = *

      у меня при подключении показывает ошибка сегментирования
      [root@zabbix etc]# isql -v IBANK * *
      Ошибка сегментирования

      Comment

      • Kos
        Senior Member
        Zabbix Certified SpecialistZabbix Certified Professional
        • Aug 2015
        • 3404

        #4
        NB: Имя секции и параметр "DSN=" должны совпадать, а параметр "ServerName=" ссылается на TNS (имя секции из файла tnsnames.ora).
        Кажется, это у вас не соблюдается.

        Comment

        • aleksey.ishchenko
          Senior Member
          • May 2020
          • 187

          #5
          Originally posted by Kos
          Кажется, это у вас не соблюдается.
          Да вроде все соблюдается, можете показать, какая конкретно ошибка?
          меняю имя сервера на IBANK, но таккая же ошибка





          [IBANK]
          Driver = OracleDriver
          DSN = IBANK
          ServerName = IBANK
          UserID = *
          Password = *
          Last edited by aleksey.ishchenko; 25-01-2021, 11:47.

          Comment

          • Kos
            Senior Member
            Zabbix Certified SpecialistZabbix Certified Professional
            • Aug 2015
            • 3404

            #6
            Ну, не знаю... А просто командная строка к Ораклу работает?
            Code:
            export NLS_LANG=american_cis.cl8mswin1251
            export ORACLE_BASE=/usr/lib/oracle/12.2
            export ORACLE_HOME=/usr/lib/oracle/12.2/client64
            export ORACLE_SID=НУЖНОЕ_ИМЯ
            export LD_LIBRARY_PATH=$ORACLE_HOME/lib
            export LIBPATH=/usr/lib/oracle/12.2/client64/lib
            export PATH=$PATH:/usr/lib/oracle/12.2/client64/bin
            ORAUSER="ИМЯ/ПАРОЛЬ"
            echo "SELECT [чего-нибудь откуда-нибудь]" | sqlplus -s ${ORAUSER}@$ORACLE_SID

            Comment

            • aleksey.ishchenko
              Senior Member
              • May 2020
              • 187

              #7
              Спасибо, проблема решилась
              не было доступа у юзера
              ORA-01045: user * lacks CREATE SESSION privilege; logon denied

              Comment

              • Kos
                Senior Member
                Zabbix Certified SpecialistZabbix Certified Professional
                • Aug 2015
                • 3404

                #8
                Originally posted by aleksey.ishchenko
                Спасибо, проблема решилась
                не было доступа у юзера
                ORA-01045: user * lacks CREATE SESSION privilege; logon denied
                Ни хрена себе... И из-за этого unixODBC ломался по segmentation fault? =8-O

                Comment

                • aleksey.ishchenko
                  Senior Member
                  • May 2020
                  • 187

                  #9
                  Originally posted by Kos
                  Ни хрена себе... И из-за этого unixODBC ломался по segmentation fault? =8-O
                  Нет, там проблема с переменными
                  если пропищу в текущей сессии

                  export NLS_LANG=american_cis.cl8mswin1251
                  export ORACLE_BASE=/usr/lib/oracle/12.2
                  export ORACLE_HOME=/usr/lib/oracle/12.2/client64
                  export LD_LIBRARY_PATH=$ORACLE_HOME/lib
                  export LIBPATH=/usr/lib/oracle/12.2/client64/lib
                  export PATH=$PATH:/usr/lib/oracle/12.2/client64/bin
                  то сразу все становится ок, подключения проходят, если закрываю сессию, то при след входе опять ошибка сегментирования

                  Comment

                  Working...