Интеграция 1С:Предприятие с базой данных Oracle позволяет организациям использовать мощные аналитические возможности СУБД вместе с гибкостью платформы 1С. Такое соединение востребовано в крупных компаниях, где данные хранятся в Oracle Database, а бизнес-процессы автоматизированы в . Однако настройка подключения требует точного выполнения технических требований: от установки драйверов до конфигурирования параметров соединения.

Многие администраторы сталкиваются с ошибками типа ORA-12154 ("TNS:could not resolve the connect identifier") или проблемами совместимости версий. В этой статье мы разберём все этапы — от подготовки сервера до тестирования соединения, — а также рассмотрим уникальные нюансы работы с Oracle 19c/21c в связке с 1С 8.3.20+, которые редко освещаются в стандартной документации.

Перед началом работ убедитесь, что у вас есть права администратора на сервере с Oracle и доступ к конфигуратору с правами на изменение параметров информационной базы. Если вы используете облачную версию Oracle Autonomous Database, часть настроек будет отличаться — об этом мы упомянем отдельно.

═══

1. Требования к системе и совместимость версий

Первый шаг — проверка совместимости версий 1С:Предприятие и Oracle Database. На момент 2026 года актуальны следующие комбинации:

  • 📌 1С 8.3.20–8.3.23 + Oracle 19c (19.3 и выше) — рекомендуемая конфигурация для большинства проектов.
  • 🔄 1С 8.3.18–8.3.19 + Oracle 12c R2 — поддерживается, но требует ручной настройки параметров NLS_LANG.
  • ⚠️ 1С 8.3.17 и ниже — официально не поддерживают Oracle 21c из-за изменений в протоколе соединения.
  • ☁️ Oracle Autonomous Database — требует дополнительной настройки TNSNAMES.ORA с указанием WALLET_LOCATION.

Важно: 32-битная версия 1С не сможет подключиться к Oracle 64-bit (и наоборот) без установки соответствующего клиента. Проверьте разрядность обеих систем через:

-- Для Oracle (SQL*Plus)

SELECT * FROM v$version;

Для разрядность отображается в свойствах ярлыка конфигуратора (1cv8.exe). Если разрядности не совпадают, установите Oracle Instant Client нужной версии.

📊 Какую версию Oracle вы используете?
19c
12c R2
21c
Autonomous Database
Другая

═══

2. Установка необходимых драйверов и библиотек

Для подключения к Oracle требуется Oracle Client или Instant Client. Рекомендуем использовать Instant Client — он легковесный и не требует полной установки сервера.

Шаги установки:

  1. Скачайте Oracle Instant Client с официального сайта (выберите версию, соответствующую вашей ОС и разрядности 1С).
  2. Распакуйте архив в папку, например, C:\oracle\instantclient.
  3. Добавьте путь к папке в переменную окружения PATH.
  4. Скопируйте файлы oraociei19.dll (или аналогичный для вашей версии) в папку с (C:\Program Files\1cv8\8.3.20.XXXX\bin).

Для Oracle 19c/21c также потребуется файл tnsnames.ora. Если его нет, создайте в папке %ORACLE_HOME%\network\admin (или в любой другой, указав путь в переменной TNS_ADMIN).

☑️ Проверка установки Oracle Client

Выполнено: 0 / 5

═══

3. Настройка файла tnsnames.ora

Файл tnsnames.ora содержит описания сетевых псевдонимов для подключения к базам Oracle. Пример структуры для локальной базы:

ORCL =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = ORCLPDB1)

)

)

Ключевые параметры:

  • 🔗 HOST — IP-адрес или имя сервера с Oracle.
  • 🔢 PORT — по умолчанию 1521, но может отличаться.
  • 🗃️ SERVICE_NAME — имя сервиса (не путать с SID!). Для Oracle 12c+ используется SERVICE_NAME, а не SID.
  • 🔒 SECURITY — при подключении к облаку добавьте (SECURITY=(SSL_SERVER_CERT_DN="...")).

Для проверки корректности файла выполните в командной строке:

tnsping ORCL

Если команда возвращает OK (XX мсек), настройка верна.

Что делать, если tnsping не работает?

1. Проверьте, что файл tnsnames.ora сохранён в кодировке UTF-8 без BOM.

2. Убедитесь, что переменная TNS_ADMIN указывает на папку с файлом.

3. Проверьте брандмауэр — порт 1521 должен быть открыт.

4. Для Oracle RAC укажите все узлы в секции ADDRESS_LIST.

═══

4. Создание источника данных ODBC

1С подключается к Oracle через ODBC. Для этого нужно создать системный источник данных:

Инструкция для Windows:

  1. Откройте Панель управления → Администрирование → Источники данных ODBC (64-бит).
  2. Перейдите на вкладку Системный DSN и нажмите Добавить.
  3. Выберите драйвер Oracle in OraClient19Home1 (название может отличаться).
  4. Заполните поля:
    • Data Source Name — произвольное имя (например, 1C_Oracle).
    • TNS Service Name — псевдоним из tnsnames.ora (например, ORCL).
    • User ID — имя пользователя базы (например, SYSTEM или специально созданный для 1С).
  • Нажмите Test Connection — должно появиться окно с сообщением Connection successful.
  • 💡

    Если при тесте соединения возникает ошибка "ORA-12560: TNS:protocol adapter error", перезапустите службу "OracleService[SID]" и проверьте, что в переменной PATH путь к Oracle Client стоит ПЕРВЫМ.

    ═══

    5. Настройка подключения в 1С

    Теперь настроим саму для работы с Oracle. Откройте конфигуратор в режиме Администрирование информационных баз:

    Шаги:

    1. Выберите нужную базу и нажмите Изменить.
    2. В поле Тип СУБД выберите Oracle Database.
    3. В поле Сервер базы данных укажите имя источника ODBC (например, 1C_Oracle).
    4. Введите Имя пользователя и Пароль (должны совпадать с данными из ODBC).
    5. На вкладке Дополнительно укажите:
      • Кодировка соединенияUTF8 (или AL32UTF8 для Oracle 19c+).
      • Порт сервера — оставьте пустым (указан в TNS).

    После сохранения настроек запустите 1С в режиме Предприятие и проверьте подключение. Если возникает ошибка "Не удалось установить соединение с сервером базы данных", проверьте:

    Ошибка Возможная причина Решение
    ORA-12154 Не найден псевдоним в tnsnames.ora Проверьте путь к файлу и его содержимое
    ORA-01017 Неверное имя пользователя/пароля Убедитесь, что пользователь имеет права CONNECT и RESOURCE
    NLS_LANG mismatch Несовпадение кодировок Установите переменную NLS_LANG=AMERICAN_AMERICA.AL32UTF8

    ═══

    6. Оптимизация производительности

    Подключение к Oracle может работать медленнее, чем с MS SQL или PostgreSQL. Для ускорения рекомендуем:

    • Настроить пул соединений в Oracle:
      ALTER SYSTEM SET shared_servers=10 SCOPE=both;
      

      ALTER SYSTEM SET max_shared_servers=20 SCOPE=both;

    • 📊 Использовать индексы для полей, часто запрашиваемых из 1С.
    • 🔄 Отключить автокоммит в 1С (если не требуется): в настройках соединения установите Автокоммит = Ложь.
    • 🗄️ Разделить таблицы по схеме: данные 1С храните в отдельной табличной пространстве (TABLESPACE).

    Для мониторинга нагрузки используйте запросы:

    -- Топ-5 самых долгих запросов
    

    SELECT sql_text, elapsed_time/1000000 as "Time(s)"

    FROM v$sql

    ORDER BY elapsed_time DESC

    FETCH FIRST 5 ROWS ONLY;

    💡

    При работе с большими объёмами данных (100К+ записей) используйте пакетную обработку через временные таблицы Oracle. Это сокращает количество транзакций между 1С и базой.

    ═══

    7. Типичные ошибки и их решения

    Даже при правильной настройке могут возникать ошибки. Рассмотрим самые распространённые:

    1. ORA-28000: the account is locked

    🔹 Причина: Пользователь заблокирован после нескольких неудачных попыток входа.

    🔧 Решение: Разблокируйте учётную запись через SQL*Plus:

    ALTER USER username ACCOUNT UNLOCK;

    2. ORA-12541: TNS:no listener

    🔹 Причина: Служба прослушивания Oracle Listener не запущена.

    🔧 Решение: Запустите её через Oracle Net Configuration Assistant или командой:

    lsnrctl start

    3. 1С выдаёт "Недопустимый идентификатор объекта"

    🔹 Причина: Несовпадение имён объектов (регистр, кодировка).

    🔧 Решение: Проверьте настройку NLS_LANG и регистр имён таблиц в базе.

    💡

    Если после обновления Oracle соединение разрывается с ошибкой "ORA-03134: Connections to this server version are no longer supported", обновите Oracle Client до версии, совместимой с сервером.

    ═══

    8. Безопасность подключения

    При интеграции и Oracle критично обеспечить защиту данных. Основные меры:

    • 🔐 Шифрование трафика: Используйте SQLNET.ENCRYPTION_SERVER=REQUIRED в sqlnet.ora.
    • 👤 Минимальные права: Создайте отдельного пользователя для 1С с правами только на нужные таблицы:
      CREATE USER user_1c IDENTIFIED BY "password";
      

      GRANT CONNECT, RESOURCE TO user_1c;

      GRANT SELECT ON schema.table TO user_1c;

    • 🔄 Ротация паролей: Настройте автоматическую смену паролей через Oracle Profile.
    • 📡 Ограничение по IP: В sqlnet.ora добавьте TCP.VALIDNODE_CHECKING=YES и укажите разрешённые IP в TCP.INVITED_NODES.

    Для облачных решений (Oracle Autonomous Database) обязательно настройте TLS 1.2+ и используйте Wallet для аутентификации.

    💡

    Не храните пароли в открытом виде в конфигурации 1С. Используйте механизм "Хранилище паролей" или внешние системы управления секретами.

    ═══

    FAQ: Частые вопросы по подключению 1С к Oracle

    🔹 Можно ли подключить 1С к Oracle Express Edition (XE)?

    Да, но с ограничениями: в Oracle XE лимит по RAM (2 ГБ) и количеству ядер (2), что может тормозить работу 1С при больших нагрузках. Для тестов подойдёт, для производства — нет.

    🔹 Почему 1С медленно работает с Oracle?

    Чаще всего причины в:

    • Отсутствии индексов на часто запрашиваемых полях.
    • Неоптимальных запросах, генерируемых 1С (используйте SQL_Trace для анализа).
    • Сетевых задержках (проверьте ping до сервера Oracle).

    🔹 Как перенести данные из 1С в Oracle?

    Используйте:

    • Внешнюю обработку "ВыгрузкаЗначенийВФайл" для экспорта в CSV, затем загрузку через SQL*Loader.
    • ADO-соединение в 1С для прямой записи данных.
    • ETL-инструменты (например, Oracle Data Integrator).

    🔹 Нужно ли обновлять Oracle Client при обновлении сервера?

    Да, если версия сервера стала выше. Например, при переходе с Oracle 19c на 21c обновите Instant Client до 21-й версии. Совместимость "сверху вниз" (новый клиент → старый сервер) обычно поддерживается, а "снизу вверх" — нет.

    🔹 Можно ли использовать Oracle с 1С:УТ 11?

    Технически да, но не рекомендуется для типовых конфигураций. 1С:Управление торговлей оптимизирована под MS SQL/PostgreSQL, и при работе с Oracle могут возникать ошибки в отчётах и обработках. Для нетиповых решений требуется доработка.

    ═══

    ⚠️ Внимание: Настройки безопасности Oracle (например, параметры sqlnet.ora) могут меняться в новых версиях. Перед применением изменений в продуктивной среде проверьте их на тестовом стенде или сверьтесь с официальной документацией Oracle.
    ⚠️ Внимание: При использовании Oracle RAC (Real Application Clusters) в настройках 1С необходимо указывать TNS-псевдоним, сконфигурированный для балансировки нагрузки. В противном случае соединения могут распределяться неоптимально, что приведёт к перегрузке одного из узлов.