Skip to content

Предварительные требования

Совместимость версий

  • Версии Oracle Server:
  • Официально заявленные: 19c, 21c, 23ai
  • Фактически протестированные: 11.2, 23.5
  • Версии Spark: 2.3.x - 3.5.x
  • Версии Java: 8 - 20

См. официальную документацию.

Установка PySpark

Для использования коннектора Oracle необходимо установить PySpark (или добавить его в sys.path) ДО создания экземпляра коннектора.

См. инструкцию по установке для получения более подробной информации.

Подключение к Oracle

Порт подключения

Подключение обычно выполняется к порту 1521. Порт может отличаться для разных экземпляров Oracle. Пожалуйста, обратитесь к вашему администратору Oracle для получения необходимой информации.

Хост подключения

Подключение к Oracle возможно как по DNS-имени хоста, так и по его IP-адресу.

Если вы используете кластер Oracle, в настоящее время возможно подключение только к одному конкретному узлу. Подключение к нескольким узлам для балансировки нагрузки, а также автоматическое переключение на новый мастер/реплику не поддерживаются.

Подключение через прокси-пользователя

Возможно подключение к базе данных от имени другого пользователя без знания его пароля.

Это можно включить, предоставив пользователю специальное разрешение CONNECT THROUGH:

```sql
    ALTER USER schema_owner GRANT CONNECT THROUGH proxy_user;
```

Затем вы можете подключиться к Oracle, используя учетные данные proxy_user, но указать, что вам нужны разрешения schema_owner:

```python
    oracle = Oracle(
        ...,
        user="proxy_user[schema_owner]",
        password="пароль proxy_user",
    )
```

См. официальную документацию.

Необходимые разрешения

Попросите администратора вашего кластера Oracle установить следующие разрешения для пользователя, используемого для создания соединения:

    -- разрешить пользователю входить в систему
    GRANT CREATE SESSION TO username;

    -- разрешить создание таблиц в схеме пользователя
    GRANT CREATE TABLE TO username;

    -- разрешить доступ на чтение и запись к конкретной таблице
    GRANT SELECT, INSERT ON username.mytable TO username;
    -- разрешить пользователю входить в систему
    GRANT CREATE SESSION TO username;

    -- разрешить создание таблиц в любой схеме,
    -- так как Oracle не поддерживает указание точного имени схемы
    GRANT CREATE ANY TABLE TO username;

    -- разрешить доступ на чтение и запись к конкретной таблице
    GRANT SELECT, INSERT ON someschema.mytable TO username;

    -- только если используется if_exists="replace_entire_table":
    -- разрешить удаление/очистку таблиц в любой схеме,
    -- так как Oracle не поддерживает указание точного имени схемы
    GRANT DROP ANY TABLE TO username;
    -- разрешить пользователю входить в систему
    GRANT CREATE SESSION TO username;

    -- разрешить доступ на чтение к конкретной таблице
    GRANT SELECT ON someschema.mytable TO username;

Более подробную информацию можно найти в официальной документации: