Привет и спасибо за использование SageMaker!
После некоторых усилий я наконец-то смог выяснить последовательность шагов, которые позволили мне запросить базу данных Oracle 12 из экземпляра блокнота SageMaker.Вот шаги, которые я предпринял:
- Я создал базу данных Oracle 12, используя Amazon RDS для тестирования.(Конечно, вы можете пропустить этот шаг, если у вас уже есть база данных Oracle.)
- Я скачал Oracle 12 Instant Client RPM , как описано здесь .Обратите внимание, что для загрузки этого файла вам понадобится учетная запись Oracle.
- Я загрузил RPM в свой экземпляр SageMaker Notebook из JupyterLab.Обратите внимание, что для полной загрузки может потребоваться 2-3 минуты, прежде чем перейти к следующему шагу.(У меня изначально были проблемы с запуском установки, потому что загрузка все еще продолжалась.)
- Я выполнил все следующие команды с терминала Jupyter, как предписано в инструкциях Oracle:
cd SageMaker
sudo yum install oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm
sudo sh -c "echo /usr/lib/oracle/12.2/client64/lib > /etc/ld.so.conf.d/oracle-instantclient.conf"
sudo ldconfig
sudo mkdir -p /usr/lib/oracle/12.2/client64/lib/network/admin
# Restart Jupyter...
sudo restart jupyter-server
Затем я установил библиотеку
cx_Oracle :
source activate python3
pip install cx_Oracle --upgrade
Затем, наконец, я создал новую записную книжку, используя ядро conda_python3:
import cx_Oracle
db = cx_Oracle.connect("my_username/my_password@my-rds-instance.ccccccccccc.us-east-1.rds.amazonaws.com/ORCL")
# Example query
cursor = db.cursor()
for row in cursor.execute('select * from DBA_TABLES'):
print(row)
... и это сработало!
Обратите внимание, что мне потребовалось несколько попытоквыяснить точную строку подключения, которая может отличаться в зависимости от того, как настроена ваша база данных.К сожалению, сообщения об ошибках было трудно понять - в моем случае у меня была ошибка ORA-12504: TNS: слушателю не было присвоено SERVICE_NAME в CONNECT_DATA , пока я не указал / ORCL в концеСтрока подключения.
Если вам нужно часто выполнять эти шаги, вы можете добавить установку и настройку клиента Oracle в сценарий SageMaker Lifecycle Configuration .Я не тестировал этот сценарий, но, возможно, стоит попробовать!
И последнее, что я заметил в вашем вопросе, что вы используете клиент Oracle 18.Я не проверял этот точный сценарий, так как у меня есть доступ только к базе данных Oracle 12.Однако клиент Oracle 12 также должен иметь возможность подключаться к базе данных Oracle 18.
Best, Кевин