Найти - Пользователи
Полная версия: cx_Oracle (connect)
Начало » Базы данных » cx_Oracle (connect)
1
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

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

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
slav0nic
не сильно знаком с ораклом, знаю только что tns кусок гавна)
а так не прокатит?
tns = cx_Oracle.makedsn(host, 1521, service)
db = cx_Oracle.connect(user, password, tns)
или ты с 11 клиента в 10 лезешь (хотя опять же не уверен, но вроде бы не выйдет)
vak
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
Параметров не хватает однако.
strannik747
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 в консольном режиме.
vak
strannik747
где TNS задается в файле network/admin/tnsnames.ora.

Проверьте прежде всего, что содержится в файле tnsnames.ora: если там всё правильно, что должно соединяться через sqlplus.exe в консольном режиме.
А что такое TNS?
Соединение проверял через sqldeveloper - работает! Как через cx_Oracle - уже подзапутался.
strannik747
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)
)
)
vak
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)
Не работает.
vak
Вопрос снят. Проблема была в клиенте oracle: отсутствовали dll, не было нужных системных переменных и пр.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB