Ошибка базы данных: ошибка при попытке получить текст для ошибки ORA-12154 - Google Colab - PullRequest
0 голосов
/ 16 января 2020

Я получаю следующую ошибку при попытке создать соединение в Google colab с моей OracleDB с помощью cx_ Oracle:

DatabaseError: Ошибка при попытке получить текст для ошибки ORA-12154

Я следовал этому коду, чтобы подключить свою базу данных к google colab:

https://medium.com/@FranckPachot / a-jupyter-notebook-on-google-collab-to- connect-to-the- oracle -cloud-atp-5e88b12282b0

! ls -l oracle-instantclient*-basiclite-*.rpm || wget https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/getPackage/oracle-instantclient19.3-basiclite-19.3.0.0.0-1.x86_64.rpm

! ls -l oracle-instantclient*-sqlplus-*.rpm   || wget https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/getPackage/oracle-instantclient19.3-sqlplus-19.3.0.0.0-1.x86_64.rpm

! sudo apt-get install alien libaio1

! sudo alien -i oracle-instantclient19.3-basiclite-19.3.0.0.0-1.x86_64.rpm

! sudo alien -i oracle-instantclient19.3-sqlplus-19.3.0.0.0-1.x86_64.rpm

%env ORACLE_HOME=/usr/lib/oracle/19.3/client64/bin

%env LD_LIBRARY_PATH=/usr/lib/oracle/19.3/client64/lib

import numpy as np
import pandas as pd
import cx_Oracle

Однако, когда я запускаю свой код:

CONN_INFO = {
 'host': 'host_name',
 'port': 'port',
 'user': 'username',
 'psw': 'password',
 'service': 'service_name',
}
CONN_STR = '{user}/{psw}@{host}:{port}/{service}'.format(**CONN_INFO)
connection = cx_Oracle.connect(CONN_STR)

print(connection.version)

, я получаю следующую ошибку:

DatabaseError: Ошибка при попытке получить текст для ошибки ORA-12154

---- Этот код прекрасно работает на моем локальном компьютере в блокноте Jupyter.

Может кто-нибудь помочь мне выяснить, почему он не работает на Google colab.

Спасибо!

Ответы [ 2 ]

1 голос
/ 17 января 2020

ORACLE_HOME - это , а не каталог bin: '/usr/lib/oracle/19.3/client64/bin'. Если все остальное правильно, ваш ORACLE_HOME должен быть '/usr/lib/oracle/19.3/client64'.

Непосредственной причиной' Ошибка при попытке получить текст для ошибки ORA-nnnn 'является то, что ORACLE_HOME неправильно установлен. MSB-файл, содержащий сообщения об ошибках, расположен по отношению к ORACLE_HOME. Поэтому, если OH неверен, он не сможет найти текст ошибки, о которой пытается сообщить (ORA-12154), поэтому сообщает о вторичной ошибке «ошибка при попытке получить текст для». ORA-12154 будет задокументирован по всей сети (я уже писал об этом здесь .) И, скорее всего, вернется к той же проблеме невозможности найти файл, потому что ORACLE_HOME (отправная точка для нахождения указанного файла) неверно.

0 голосов
/ 17 января 2020

Unset ORACLE_HOME, так как это не должно быть установлено с Instant Client. И, как указано в другом ответе, он установлен в неправильном месте. С Instant Client 19 c об / мин вам также не нужно устанавливать LD_LIBRARY_PATH, поскольку ldconfig должен был запускаться автоматически для вас. Прочитайте инструкции по установке .

Если на этом компьютере установлено другое программное обеспечение Oracle, существует вероятность, что в поиске системной библиотеки есть библиотеки cla sh из Oracle. путь, поэтому вы должны установить ZIP-файлы Instant Client (которые не запускаются ldconfig) вместо RPM.

Пример Dockerfiles в Часть 1: Docker для Oracle Приложения базы данных в Node.js и Python отображаются команды установки Instant Client, поэтому они могут быть полезны, даже если вы не используете Docker.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...