Уведомления

Группа в Telegram: @pythonsu

#1 Июль 22, 2011 09:25:07

vak
От:
Зарегистрирован: 2007-05-04
Сообщения: 262
Репутация: +  0  -
Профиль   Отправить e-mail  

cx_Oracle (connect)

self.conn = cx_Oracle.connect("%s/%s@%s:1521/%s" % (user,passwd,host,service))
При попытке соединения вываливается ошибка:
cx_Oracle.DatabaseError: ORA-24315: illegal attribute type
Есть мысль что не правильный формат задания service_name

Подскажите плиз… в чем может быть проблема?

SELECT * from v$version;

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
"CORE 10.2.0.4.0 Production"
TNS for Linux: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production



Офлайн

#2 Июль 22, 2011 16:15:57

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

cx_Oracle (connect)

не сильно знаком с ораклом, знаю только что tns кусок гавна)
а так не прокатит?

tns = cx_Oracle.makedsn(host, 1521, service)
db = cx_Oracle.connect(user, password, tns)
или ты с 11 клиента в 10 лезешь (хотя опять же не уверен, но вроде бы не выйдет)

Офлайн

#3 Июль 25, 2011 03:41:51

vak
От:
Зарегистрирован: 2007-05-04
Сообщения: 262
Репутация: +  0  -
Профиль   Отправить e-mail  

cx_Oracle (connect)

slav0nic
не сильно знаком с ораклом, знаю только что tns кусок гавна)
а так не прокатит?
tns = cx_Oracle.makedsn(host, 1521, service)
db = cx_Oracle.connect(user, password, tns)
или ты с 11 клиента в 10 лезешь (хотя опять же не уверен, но вроде бы не выйдет)
tns = cx_Oracle.makedsn(host,port,service)
self.conn = cx_Oracle.connect(user,passwd,tns)
В итоге:
cx_Oracle.DatabaseError: ORA-12505: TNS:listener does not currently know of SID
given in connect descriptor
Параметров не хватает однако.



Офлайн

#4 Июль 25, 2011 09:01:36

strannik747
От:
Зарегистрирован: 2011-02-19
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

cx_Oracle (connect)

vak
self.conn = cx_Oracle.connect("%s/%s@%s:1521/%s" % (user,passwd,host,service))
При попытке соединения вываливается ошибка:
cx_Oracle.DatabaseError: ORA-24315: illegal attribute type
Есть мысль что не правильный формат задания service_name
Я использую соединение в одном из 2-х форматов (сx_Oracle 5.0.4, Oracle 10.2.0.4):
connection = cx_Oracle.connect("user/password@TNS")
connection = cx_Oracle.connect("user", "password", "TNS")
где TNS задается в файле network/admin/tnsnames.ora.

Проверьте прежде всего, что содержится в файле tnsnames.ora: если там всё правильно, что должно соединяться через sqlplus.exe в консольном режиме.



Отредактировано (Июль 25, 2011 09:06:18)

Офлайн

#5 Июль 25, 2011 10:26:56

vak
От:
Зарегистрирован: 2007-05-04
Сообщения: 262
Репутация: +  0  -
Профиль   Отправить e-mail  

cx_Oracle (connect)

strannik747
где TNS задается в файле network/admin/tnsnames.ora.

Проверьте прежде всего, что содержится в файле tnsnames.ora: если там всё правильно, что должно соединяться через sqlplus.exe в консольном режиме.
А что такое TNS?
Соединение проверял через sqldeveloper - работает! Как через cx_Oracle - уже подзапутался.



Офлайн

#6 Июль 25, 2011 11:37:59

strannik747
От:
Зарегистрирован: 2011-02-19
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

cx_Oracle (connect)

vak
А что такое TNS?
Соединение проверял через sqldeveloper - работает! Как через cx_Oracle - уже подзапутался.
Я так понимаю, что TNS - это средство конфигурирования доступа к БД в Oracle (подробнее лучше спросить у вашего админа оракла или погуглить), чтобы можно было использовать одно имя, а не кучу параметров.

Для соединения через cx_Oracle у Вас должен на машине стоять клиент Oracle, там в папке network/admin/sample есть подробное (жуткое) описание структуры этого файла.

У нас используется примерно такой:
DB_APP1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = sun1)(PORT = 1521))
)
(CONNECT_DATA =
(SID = AXAPTA)
)
)

DB_APP2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.XX.XX.XX)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = DB12)
)
)



Офлайн

#7 Июль 25, 2011 11:58:15

vak
От:
Зарегистрирован: 2007-05-04
Сообщения: 262
Репутация: +  0  -
Профиль   Отправить e-mail  

cx_Oracle (connect)

DSN - есть в описании cx_Oracle (http://cx-oracle.sourceforge.net/html/module.html).

		dsn = cx_Oracle.makedsn(host,port,sid)
conn = cx_Oracle.connect(user,passwd,dsn)
Не работает.



Офлайн

#8 Июль 27, 2011 11:54:06

vak
От:
Зарегистрирован: 2007-05-04
Сообщения: 262
Репутация: +  0  -
Профиль   Отправить e-mail  

cx_Oracle (connect)

Вопрос снят. Проблема была в клиенте oracle: отсутствовали dll, не было нужных системных переменных и пр.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version