Oracle

Источник данных: внешний OracleEnterprise Edition+

Введение

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

В отличие от основной базы данных, фактическая структура таблиц внешнего Oracle по-прежнему поддерживается исходной бизнес-системой, клиентом базы данных или скриптами миграции. NocoBase отвечает за чтение структуры, сохранение метаданных полей, настройку блоков страниц, прав доступа, рабочих процессов и API.

ПараметрОписание
Поддерживаемые версииOracle >= 11g.
Коммерческая версияПоддерживается в Enterprise Edition.
Соответствующий плагин@nocobase/plugin-data-source-external-oracle.
Режим подключенияДля Oracle Database 12.1 и более поздних версий обычно используется режим Thin; для версий до 12.1 — режим Thick.

Внешний Oracle подходит для следующих сценариев:

  • Подключение базы данных Oracle существующих бизнес-систем ERP, MES, WMS, CRM и других
  • Создание интерфейса управления в NocoBase без переноса исторических данных
  • Настройка прав доступа, обработка процессов, исправление данных или создание отчётов на основе существующих таблиц
  • Продолжение поддержки структуры базы данных со стороны DBA, скриптов миграции или исходной системы
Внимание

Внешний Oracle не является системной базой данных NocoBase. NocoBase не управляет её резервным копированием, восстановлением, миграцией и изменениями структуры таблиц.

Установка плагина

Этот плагин является коммерческим. Подробные сведения об активации см. в руководстве: Руководство по активации коммерческих плагинов

Если выбран режим подключения Thick, в среде выполнения NocoBase необходимо установить Oracle Client libraries и указать «Client directory» в настройках источника данных.

Установка клиента Oracle

Для Oracle Database 12.1 и более поздних версий обычно используется режим Thin, не требующий дополнительной установки Oracle Client. Устанавливать Oracle Client libraries в среде выполнения NocoBase нужно только при подключении к версии Oracle Database до 12.1 или при обязательном использовании режима Thick.

После выбора режима «Thick» в настройках источника данных необходимо убедиться, что машина, на которой запущен сервис NocoBase, может загрузить Oracle Client.

20241204164359

В среде Linux Oracle Instant Client можно установить следующим способом:

apt-get update
apt-get install -y unzip wget libaio1
wget https://download.oracle.com/otn_software/linux/instantclient/1925000/instantclient-basic-linux.x64-19.25.0.0.0dbru.zip
unzip instantclient-basic-linux.x64-19.25.0.0.0dbru.zip -d /opt/
echo /opt/instantclient_19_25 > /etc/ld.so.conf.d/oracle-instantclient.conf
ldconfig

Если Oracle Client установлен не в расположение, которое система загружает по умолчанию, укажите каталог библиотек клиента в поле «Client directory». Например, при установке описанным выше способом соответствующим каталогом будет /opt/instantclient_19_25.

20241204165940

Подсказка

Client directory необходимо настраивать только в режиме Thick. В режиме Thin этот параметр не используется. Дополнительные правила инициализации см. в документации по инициализации node-oracledb.

Добавление источника данных

В разделе «Управление источниками данных» нажмите «Add new», выберите Oracle и укажите сведения для подключения.

20241204164359

Основные параметры подключения:

ПараметрОписание
Data source nameИдентификатор источника данных, используемый для ссылок на него в блоках страниц, правах доступа, рабочих процессах и API. После создания изменить его нельзя.
Data source display nameНазвание источника данных, отображаемое в интерфейсе. Рекомендуется использовать понятное бизнес-пользователям название, например «ERP Oracle» или «Финансовая база».
Host / PortАдрес и порт хоста Oracle. Порт по умолчанию обычно равен 1521.
ServerNameИмя сервиса Oracle. Укажите service name, настроенное в конфигурации прослушивателя базы данных.
Username / PasswordИмя пользователя и пароль для подключения к Oracle. NocoBase считывает таблицы и представления, принадлежащие этому Owner, но не предоставляет доступ к объектам других Owner и не считывает их.
Connection modeРежим подключения к Oracle. Для Oracle Database 12.1 и более поздних версий обычно используется режим Thin; для версий до 12.1 — режим Thick.
Client directoryКаталог Oracle Client libraries для режима Oracle Thick. Настраивать его нужно только при выборе режима Thick.
Table prefixПрефикс имени таблицы. После настройки NocoBase считывает только таблицы и представления с этим префиксом и создаёт в NocoBase имена таблиц без префикса.
Collections / Add all collectionsОпределяет область подключения. Если включить «Add all collections», NocoBase подключит все таблицы и представления в пределах текущего Owner и заданного префикса; если выключить, будут подключены только объекты, выбранные в «Collections».
Enabled the data sourceОпределяет, включён ли источник данных. После отключения настройки источника сохраняются, но блоки страниц, права доступа, рабочие процессы и API больше не смогут считывать его данные.
Подсказка

Область подключения в Oracle в основном определяется Owner учётной записи подключения, Table prefix и параметром «Collections». Если в одном экземпляре много объектов, рекомендуется использовать отдельную учётную запись для подключения к нужной бизнес-схеме, чтобы в NocoBase не попадали не относящиеся к делу объекты.

Выбор таблиц данных

После ввода сведений для подключения можно нажать «Load Collections», чтобы получить список доступных в Oracle таблиц данных и представлений. Результаты считывания зависят от Owner учётной записи подключения, Table prefix и настройки «Collections».

По умолчанию включён параметр «Add all collections», то есть подключаются все таблицы и представления в текущей области. Чтобы подключить только некоторые объекты, выключите «Add all collections», а затем выберите нужные таблицы данных или представления в списке.

add_new_database_configure_load_collection

Внимание

Один внешний источник данных может одновременно подключить не более 500 таблиц данных или представлений. Если в Oracle много объектов, рекомендуется заранее сузить область с помощью Owner учётной записи подключения, Table prefix или параметра «Collections».

Синхронизация и настройка полей

Структура таблиц внешнего Oracle поддерживается на стороне базы данных. NocoBase не создаёт во внешнем Oracle поля, не изменяет типы полей и не удаляет реальные поля.

При изменении структуры таблиц на стороне Oracle можно выполнить в источнике данных команду «Sync from database», чтобы повторно считать метаданные таблиц и полей. Синхронизация обновит сохранённые в NocoBase таблицы данных, поля, первичные ключи, уникальные ключи и сведения о сопоставлении типов полей, но не удалит реальные таблицы или данные в Oracle.

После синхронизации полей в NocoBase можно настроить заголовок поля, тип поля (Field type) и компонент поля (Field interface). Если требуется создать поле связи NocoBase, его метаданные связи также сохраняются в NocoBase; настоящее поле внешнего ключа в таблице Oracle автоматически добавлено не будет.

Сопоставление типов полей

NocoBase автоматически сопоставляет типы полей Oracle с подходящими Field type и Field interface. Способ отображения в интерфейсе можно изменить в настройках поля.

Основные сопоставления:

Тип поля OracleNocoBase Field typeДоступный Field interface
NUMBERintegerfloatbooleanbigIntunixTimestampsortInteger、Number、Sort、Checkbox、Switch、Select、Radio group。
BINARY_FLOATBINARY_DOUBLEFLOATfloatNumber、Percent。
INTEGERSMALLINTPLSQL_INTEGERintegerbooleansortInteger、Sort、Checkbox、Switch、Select、Radio group。
CHARNCHARVARCHAR2NVARCHAR2stringuuidnanoiddatetimeNoTzInput、Email、Phone、Password、Color、Icon、Select、Radio group、UUID、Nano ID。
LONGNCLOBstringtextInput、Textarea、Markdown、Vditor、Rich text。
CLOBstringInput、Textarea、Rich text。
DATEdatetimeNoTzDate、Time、Created at、Updated at。
TIMESTAMPdatetimeNoTzDate、Time、Created at、Updated at。
TIMESTAMP WITH TIME ZONETIMESTAMP WITH LOCAL TIME ZONEdatetimeTzDate、Time、Created at、Updated at。
ROWIDUROWIDstringtextintegerInput、Textarea、Integer。
JSONjsonJSON。
Внимание

BLOB, BFILE и другие типы двоичных объектов автоматически не используются как обычные поля файлов. Если требуется управлять вложениями на страницах, обычно рекомендуется использовать в NocoBase таблицу файлов или поле вложений для хранения метаданных файлов.

Первичный ключ и уникальный идентификатор записи

Для таблиц данных, используемых для отображения и редактирования в блоках страниц, рекомендуется наличие первичного ключа или уникального поля. NocoBase в первую очередь использует первичный ключ в качестве уникального идентификатора записи.

Если подключается представление, таблица без первичного ключа или таблица с составным первичным ключом, необходимо вручную задать «Record unique key» в настройках таблицы данных. Если доступного уникального идентификатора нет, блоки страниц могут некорректно отображать, редактировать или удалять записи.

20260709210948 20260709211004

Связанные ссылки