LINUX.ORG.RU

Oracle 11g XE и ODBC

 ,


0

1

Пытаюсь работать с БД oracle 11g xe через odbc. Настроил при помощи скрипта, входившего в Oracle XE. В результате имеем: /etc/odbc.ini:

[orcl]
Application Attributes = T
Attributes = W
BatchAutocommitMode = IfAllSuccessful
BindAsFLOAT = F
CloseCursor = F
DisableDPM = F
DisableMTS = T
Driver = orcl
DSN = orcl
EXECSchemaOpt =
EXECSyntax = T
Failover = T
FailoverDelay = 10
FailoverRetryCount = 10
FetchBufferSize = 64000
ForceWCHAR = F
Lobs = T
Longs = T
MaxLargeData = 0
MetadataIdDefault = F
QueryTimeout = T
ResultSets = T
ServerName = localhost
SQLGetData extensions = F
Translation DLL =
Translation Option = 0
DisableRULEHint = T
UserID = dbuser
Password = ORACLE
StatementCache=F
CacheBufferSize=20
UseOCIDescribeAny=F

/etc/odbcinst.ini:

[orcl]
Description		= Oracle ODBC driver for Oracle 11g
Driver		= /u01/app/oracle/product/11.2.0/xe/lib/libsqora.so.11.1
Driver64		= 
Setup		= 
Setup64		= 
UsageCount		= 
CPTimeout		= 
CPTimeToLive		= 
DisableGetFunctions		= 
DontDLCLose		= 
ExFetchMapping		= 
Threading		= 
FakeUnicode		= 
IconvEncoding		= 
Trace		= 
TraceFile		= 
TraceLibrary		= 
FileUsage		= 
CPReuse		= 

Пытаюсь подключиться:

isql  orcl -v
[28000][nxDC[Oracle][ODBC][Ora]ORA-01017: invalid username/password; logon denied

Хотя sqlplus dbuser/ORACLE от того же пользователя нормально подключается.

Из нагугленного только https://forums.oracle.com/forums/thread.jspa?messageID=10380682, там говорится про регистр пароля, но не помогло.

P.S.: Через ODBC нужно, т.к. нужна работа с QtSql, а там драйвер непосредственно для oracle нужно вручную собирать с большим геморроем.

☆☆☆☆☆

Ау! Что-то тут по Oracle вообще мало отвечают, хотя вопросы у меня вроде как чайницкие :)

Ttt ☆☆☆☆☆ ()

для oracle нужно вручную собирать с большим геморроем.

что сложного в

qmake
make
make install
?

ukr_unix_user ★★★★ ()
Ответ на: комментарий от ukr_unix_user

Ну как есть, если с теми же через sql plus и веб-интерфейс проходит?

Ttt ☆☆☆☆☆ ()
Ответ на: комментарий от ukr_unix_user

Ну когда интересовался вопросом сборки драйвера postgresql под windows, то там было не так просто. Так и не осилил.

Ttt ☆☆☆☆☆ ()
Ответ на: комментарий от Ttt

что за дистр? в большинстве они собраные есть для postgresql и прочих

yum search qt | grep driver 
qt-ibase.i686 : IBase driver for Qt's SQL classes
qt-ibase.x86_64 : IBase driver for Qt's SQL classes
qt-mysql.i686 : MySQL driver for Qt's SQL classes
qt-mysql.x86_64 : MySQL driver for Qt's SQL classes
qt-odbc.i686 : ODBC driver for Qt's SQL classes
qt-odbc.x86_64 : ODBC driver for Qt's SQL classes
qt-postgresql.i686 : PostgreSQL driver for Qt's SQL classes
qt-postgresql.x86_64 : PostgreSQL driver for Qt's SQL classes
qt-tds.i686 : TDS driver for Qt's SQL classes
qt-tds.x86_64 : TDS driver for Qt's SQL classes

но они всё равно собираются одинаково(просто) при наличии devel пакета для СУБД. максимум Makefile подправить.

ukr_unix_user ★★★★ ()
Ответ на: комментарий от Ttt

http://qt-project.org/doc/qt-4.8/sql-driver.html

How to Build the QPSQL Plugin on Windows Install the appropriate PostgreSQL developer libraries for your compiler. Assuming that PostgreSQL was installed in C:\psql, build the plugin as follows:

cd %QTDIR%\src\plugins\sqldrivers\psql
 qmake "INCLUDEPATH+=C:\psql\include" "LIBS+=C:\psql\lib\ms\libpq.lib" psql.pro
 nmake

сборка драйвера для oracle (Fedora)

cd qt-everywhere-opensource-src-4.8.2/src/plugins/sqldrivers/oci/
qmake-qt4

потом в Makefile правим две строки в INCPATH добавляем -I/usr/include/oracle/11.2/client64/

в LIBS добавляем -L/usr/lib/oracle/11.2/client64/lib/

make
g++ -c -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -O2 -fvisibility=hidden -fvisibility-inlines-hidden -D_REENTRANT -Wall -W -fPIC -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/include/oracle/11.2/client64/ -I/usr/lib64/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtSql -I/usr/include -I. -o main.o main.cpp
g++ -c -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -O2 -fvisibility=hidden -fvisibility-inlines-hidden -D_REENTRANT -Wall -W -fPIC -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/include/oracle/11.2/client64/ -I/usr/lib64/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtSql -I/usr/include -I. -o qsql_oci.o ../../../sql/drivers/oci/qsql_oci.cpp
g++ -c -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -O2 -fvisibility=hidden -fvisibility-inlines-hidden -D_REENTRANT -Wall -W -fPIC -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/include/oracle/11.2/client64/ -I/usr/lib64/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtSql -I/usr/include -I. -o moc_qsql_oci.o moc_qsql_oci.cpp
rm -f libqsqloci.so
g++ -Wl,-O1 -shared -o libqsqloci.so main.o qsql_oci.o moc_qsql_oci.o  -L/usr/lib/oracle/11.2/client64/lib/  -L/usr/lib64 -lclntsh -lQtSql -lQtCore -lpthread  
[root@nlio oci]# make install 
install -m 755 -p "libqsqloci.so" "/usr/lib64/qt4/plugins/sqldrivers/libqsqloci.so"

ukr_unix_user ★★★★ ()
Ответ на: комментарий от Ttt

собери драйвер для Qt и не мучайся с ODBC.

я ODBC один настроил, исключительно для zabbix Database monitor и забыл. http://www.zabbix.com/wiki/non-english/ru/odbc_monitoring там есть описание как их подружить(ODBC и oracle), может и тебе чем поможет.

ukr_unix_user ★★★★ ()
Ответ на: комментарий от Ttt

TNS_ADMIN дожна указывать на директорию где лежит tnsnames.ora, если что.

ukr_unix_user ★★★★ ()
Ответ на: комментарий от Ttt

и поменяй в /etc/odbcinst.ini

[orcl] на что нить осмысленное. [Oracle11g] например.

ukr_unix_user ★★★★ ()

Ещё какие-нибудь предложения будут? Ну ведь ничего запредельного не спрашиваю. Если вопрос глупый, то так и скажите.

Ну раз он говорит, что неправильный логин и пароль, хотя они правильные, то что может быть?

А в odbc.ini оракловский SID где-нибудь должен быть прописан?

Ttt ☆☆☆☆☆ ()
Последнее исправление: Ttt (всего исправлений: 2)
Ответ на: комментарий от Ttt

А в odbc.ini оракловский SID где-нибудь должен быть прописан?

DSN = orcl <<< это он из tnsnames.ora

попробуй удалить

Password = ORACLE

и подключиться.

ukr_unix_user ★★★★ ()
Ответ на: комментарий от ukr_unix_user

То есть (у меня Express с дефолтными настройками) у меня, как я понимаю, должно быть ServerName = XE? sqlplus dbuser@XE/oracle прокатывает.

Ttt ☆☆☆☆☆ ()
Ответ на: комментарий от Ttt

вот конфиги.

#cat odbcinst.ini 

[ODBC]
Trace        = Yes
TraceFile    = /tmp/sql.log
ForceTrace   = Yes

[Oracle11g]
Description     = Oracle ODBC driver for Oracle 11g 64bit
Driver          = /home/oracle/ora11r2/lib/libsqora.so

#cat odbc.ini
[SID]
Driver  = Oracle11g
Application Attributes = T
Attributes = W
BatchAutocommitMode = IfAllSuccessful
BindAsFLOAT = F
CloseCursor = F
DSN = XE2
DisableDPM = F
DisableMTS = T
EXECSchemaOpt =
EXECSyntax = T
Failover = T
FailoverDelay = 10
FailoverRetryCount = 10
FetchBufferSize = 64000
ForceWCHAR = F
Lobs = T
Longs = T
MetadataIdDefault = F
QueryTimeout = T
ResultSets = T
ServerName = SID
SQLGetData extensions = F
Translation DLL =
Translation Option = 0
DisableRULEHint = T
UserID =

# tnsping SID

TNS Ping Utility for Linux: Version 11.2.0.1.0 - Production on 19-AUG-2012 20:40:58

Copyright (c) 1997, 2009, Oracle.  All rights reserved.

Used parameter files:


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = x.x.x.x)(Port = 1521))) (CONNECT_DATA = (SID = SID)))
OK (0 msec)

# isql SID  username/password -v 
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> 

# rpm -qa | grep ODBC
unixODBC-2.2.14-11.el6.x86_64
unixODBC-devel-2.2.14-11.el6.i686
unixODBC-devel-2.2.14-11.el6.x86_64
unixODBC-2.2.14-11.el6.i686

#cat tnsnames.ora
SID = 
  (DESCRIPTION =
       (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = TCP)(Host = x.x.x.x)(Port = 1521))
       )
       (CONNECT_DATA =
            (SID = SID)
       )
  )


ukr_unix_user ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.