Передача данных из эндпоинта-источника Oracle
С помощью сервиса Yandex Data Transfer вы можете переносить данные из базы Oracle и реализовывать различные сценарии переноса, обработки и трансформации данных. Для реализации трансфера:
- Ознакомьтесь с возможными сценариями передачи данных.
- Подготовьте базу данных Oracle к трансферу.
- Настройте эндпоинт-источник в Yandex Data Transfer.
- Настройте один из поддерживаемых приемников данных.
- Cоздайте и запустите трансфер.
- Выполняйте необходимые действия по работе с базой и контролируйте трансфер.
- При возникновении проблем, воспользуйтесь готовыми решениями по их устранению.
Сценарии передачи данных из Oracle
-
Миграция — перенос данных из одного хранилища в другое. Часто это перенос базы из устаревших локальных баз в управляемые облачные.
-
Загрузка данных в витрины — процесс трансфера подготовленных данных в хранилища с целью последующей визуализации.
Подробное описание возможных сценариев передачи данных в Yandex Data Transfer см. в разделе Практические руководства.
Подготовка базы данных источника
Примечание
В некоторых версиях Oracle для системных объектов вместо префикса V$
используются V_$
. Например, V_$DATABASE
вместо V$DATABASE
.
Измените префиксы, если вы столкнулись с ошибкой вида can only select from fixed tables/views
при выдаче прав на системные объекты.
-
Чтобы подготовить источник к трансферу типа Копирование:
-
Создайте пользователя, от имени которого трансфер подключится к источнику:
CREATE USER <имя_пользователя> IDENTIFIED BY <пароль>; GRANT CREATE SESSION TO <имя_пользователя>;
-
Выдайте права созданному пользователю:
GRANT SELECT ON V$DATABASE TO <имя_пользователя>; GRANT SELECT ON DBA_EXTENTS TO <имя_пользователя>; GRANT SELECT ON DBA_OBJECTS TO <имя_пользователя>; GRANT FLASHBACK ANY TABLE TO <имя_пользователя>;
При необходимости, право
FLASHBACK
можно выдать не на все таблицы (ANY TABLE
), а только на те, которые нужно скопировать. -
Выдайте пользователю права на чтение таблиц
, которые нужно скопировать.
-
-
Чтобы подготовить источник к трансферу типа Репликация:
-
Создайте пользователя, от имени которого трансфер подключится к источнику:
CREATE USER <имя_пользователя> IDENTIFIED BY <пароль>; ALTER USER <имя_пользователя> DEFAULT tablespace USERS TEMPORARY tablespace TEMP; ALTER USER <имя_пользователя> quote unlimited on USERS; GRANT CREATE SESSION, execute_catalog_role, SELECT ANY TRANSACTION, SELECT ANY DISCTIONARY, CREATE PROCEDURE, LOGMINING TO <имя_пользователя>;
-
Выдайте права созданному пользователю:
GRANT SELECT ON V$DATABASE TO <имя_пользователя>; GRANT SELECT ON V$LOG TO <имя_пользователя>; GRANT SELECT ON V$LOGFILE TO <имя_пользователя>; GRANT SELECT ON V$ARCHIVED_LOG TO <имя_пользователя>; GRANT SELECT ON dba_objects TO <имя_пользователя>; GRANT SELECT ON dba_extents TO <имя_пользователя>; GRANT EXECUTE ON SYS.DBMS_LOGMNR TO <имя_пользователя>; GRANT SELECT ON SYSTEM.LOGMNR_COL$ TO <имя_пользователя>; GRANT SELECT ON SYSTEM.LOGMNR_OBJ$ TO <имя_пользователя>; GRANT SELECT ON SYSTEM.LOGMNR_USER$ TO <имя_пользователя>; GRANT SELECT ON SYSTEM.LOGMNR_UID$ TO <имя_пользователя>;
-
Выдайте пользователю права на чтение таблиц
, которые нужно реплицировать. -
Включите Minimal Supplemental Logging
с первичными ключами, для этого выполните:ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
-
-
Если вы работаете в CDB-среде
, выполните следующие настройки:-
Создайте пользователя
Common User
:CREATE USER C##<имя_пользователя> IDENTIFIED BY <пароль> CONTAINER=all; ALTER USER C##<имя_пользователя> DEFAULT TABLESPACE USERS temporary tablespace TEMP CONTAINER=all; ALTER USER C##<имя_пользователя> quota unlimited on USERS CONTAINER=all; ALTER USER C##<имя_пользователя> SET container_data = (cdb$root, <имя_вашей_PCB>) CONTAINER=current; GRANT CREATE SESSION, execute_catalog_role, SELECT ANY TRANSACTION, SELECT ANY DICTIONALY, CREATE PROCEDURE, LOGMINING, SET CONTAINER TO C##<имя_пользователя> CONTAINER=ALL;
При необходимости, можно указать только контейнер
cdb$root
и контейнер с таблицами, которые нужно перенести. -
Чтобы пользователь мог переключаться на контейнер
cdb$root
, выдайте ему праваALTER SESSION
:GRANT ALTER SESSION TO C##<имя_пользователя>;
-
Выдайте права созданному пользователю:
GRANT SELECT ON V$DATABASE TO C##<имя_пользователя> CONTAINER=ALL; GRANT SELECT ON V$LOG TO C##<имя_пользователя> CONTAINER=ALL; GRANT SELECT ON V$LOGFILE TO C##<имя_пользователя> CONTAINER=ALL; GRANT SELECT ON V$ARCHIVED_LOG TO C##<имя_пользователя> CONTAINER=ALL; GRANT SELECT ON dba_objects TO C##<имя_пользователя> CONTAINER=ALL; GRANT SELECT ON dba_extents TO C##<имя_пользователя> CONTAINER=ALL; GRANT EXECUTE ON SYS.DBMS_LOGMNR TO C##<имя_пользователя> CONTAINER=ALL; GRANT SELECT ON SYSTEM.LOGMNR_COL$ TO C##<имя_пользователя> CONTAINER=ALL; GRANT SELECT ON SYSTEM.LOGMNR_OBJ$ TO C##<имя_пользователя> CONTAINER=ALL; GRANT SELECT ON SYSTEM.LOGMNR_USER$ TO C##<имя_пользователя> CONTAINER=ALL; GRANT SELECT ON SYSTEM.LOGMNR_UID$ TO C##<имя_пользователя> CONTAINER=ALL;
-
Настройка эндпоинта-источника Oracle
При создании или изменении эндпоинта задайте настройки подключения к кластеру Oracle.
Настройки приведены для пользовательской инсталляции, когда все поля заполняются вручную.
-
Тип подключения — выберите тип подключения
к кластеру Oracle. -
Для подключения типа Инстанс:
-
Хост — укажите IP-адрес или FQDN хоста, к которому необходимо подключиться.
-
Порт — укажите номер порта, который сервис Data Transfer будет использовать для подключения.
-
Тип — укажите Oracle SID
или Service Name в соответствующем поле ниже.
-
-
Для подключения типа Строка подключения TNS укажите строку подключения к Oracle RDBMS в соответствующем поле ниже.
-
Пользователь — укажите имя пользователя, под которым сервис Data Transfer будет подключаться к базе данных.
-
Пароль — укажите пароль пользователя для доступа к базе данных.
-
PDB-контейнер — укажите имя PDB контейнера
, к которому нужно подключиться. Если вы не работаете в CDB-среде , оставьте это поле пустым. -
Список включённых таблиц — будут передаваться данные только из таблиц этого списка. Задается с помощью регулярных выражений.
-
Список исключённых таблиц — данные таблиц из этого списка передаваться не будут. Задается с помощью регулярных выражений.
Списки включают имя схемы
(описание содержания, структуры и ограничений целостности базы данных) и имя таблицы. Для обоих списков поддерживаются выражения вида:<имя_схемы>.<имя_таблицы>
— полное имя таблицы;<имя_схемы>.*
— все таблицы в указанной схеме;<имя_таблицы>
— таблица в схеме по умолчанию.
Имена включенных и исключенных таблиц должны соответствовать правилам именования идентификаторов в Oracle. Подробнее читайте в документации Oracle
. Двойные кавычки внутри имени таблицы не поддерживаются. Экранирование внешних двойных кавычек не требуется. -
Преобразовывать тип "NUMBER" в "Int64" — включите эту настройку для преобразования типа
NUMBER
(без параметров) вINT64
. Параметризованные типыNUMBER (precision, scale)
автоматически преобразуются в целочисленные типы, где это возможно.
Настройка приемника данных
Настройте один из поддерживаемых приемников данных:
Полный список поддерживаемых источников и приемников в Yandex Data Transfer см. в разделе Доступные трансферы.
После настройки источника и приемника данных создайте и запустите трансфер.