Интеграция 1С:Предприятие с базой данных Oracle позволяет организациям использовать мощные аналитические возможности СУБД вместе с гибкостью платформы 1С. Такое соединение востребовано в крупных компаниях, где данные хранятся в Oracle Database, а бизнес-процессы автоматизированы в 1С. Однако настройка подключения требует точного выполнения технических требований: от установки драйверов до конфигурирования параметров соединения.
Многие администраторы сталкиваются с ошибками типа ORA-12154 ("TNS:could not resolve the connect identifier") или проблемами совместимости версий. В этой статье мы разберём все этапы — от подготовки сервера до тестирования соединения, — а также рассмотрим уникальные нюансы работы с Oracle 19c/21c в связке с 1С 8.3.20+, которые редко освещаются в стандартной документации.
Перед началом работ убедитесь, что у вас есть права администратора на сервере с Oracle и доступ к конфигуратору 1С с правами на изменение параметров информационной базы. Если вы используете облачную версию 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;
Для 1С разрядность отображается в свойствах ярлыка конфигуратора (1cv8.exe). Если разрядности не совпадают, установите Oracle Instant Client нужной версии.
═══
2. Установка необходимых драйверов и библиотек
Для подключения 1С к Oracle требуется Oracle Client или Instant Client. Рекомендуем использовать Instant Client — он легковесный и не требует полной установки сервера.
Шаги установки:
- Скачайте Oracle Instant Client с официального сайта (выберите версию, соответствующую вашей ОС и разрядности 1С).
- Распакуйте архив в папку, например,
C:\oracle\instantclient. - Добавьте путь к папке в переменную окружения
PATH. - Скопируйте файлы
oraociei19.dll(или аналогичный для вашей версии) в папку с 1С (C:\Program Files\1cv8\8.3.20.XXXX\bin).
Для Oracle 19c/21c также потребуется файл tnsnames.ora. Если его нет, создайте в папке %ORACLE_HOME%\network\admin (или в любой другой, указав путь в переменной TNS_ADMIN).
☑️ Проверка установки Oracle Client
═══
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:
- Откройте
Панель управления → Администрирование → Источники данных ODBC (64-бит). - Перейдите на вкладку
Системный DSNи нажмитеДобавить. - Выберите драйвер
Oracle in OraClient19Home1(название может отличаться). - Заполните поля:
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С
Теперь настроим саму 1С для работы с Oracle. Откройте конфигуратор в режиме Администрирование информационных баз:
Шаги:
- Выберите нужную базу и нажмите
Изменить. - В поле
Тип СУБДвыберитеOracle Database. - В поле
Сервер базы данныхукажите имя источника ODBC (например,1C_Oracle). - Введите
Имя пользователяиПароль(должны совпадать с данными из ODBC). - На вкладке
Дополнительноукажите:Кодировка соединения—UTF8(илиAL32UTF8для Oracle 19c+).Порт сервера— оставьте пустым (указан в TNS).
После сохранения настроек запустите 1С в режиме Предприятие и проверьте подключение. Если возникает ошибка "Не удалось установить соединение с сервером базы данных", проверьте:
| Ошибка | Возможная причина | Решение |
|---|---|---|
ORA-12154 |
Не найден псевдоним в tnsnames.ora |
Проверьте путь к файлу и его содержимое |
ORA-01017 |
Неверное имя пользователя/пароля | Убедитесь, что пользователь имеет права CONNECT и RESOURCE |
NLS_LANG mismatch |
Несовпадение кодировок | Установите переменную NLS_LANG=AMERICAN_AMERICA.AL32UTF8 |
═══
6. Оптимизация производительности
Подключение 1С к 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. Безопасность подключения
При интеграции 1С и 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-псевдоним, сконфигурированный для балансировки нагрузки. В противном случае соединения могут распределяться неоптимально, что приведёт к перегрузке одного из узлов.