Oracle краулер¶
Примечание
В статье приведен пример краулера, характеристики которого настраиваются индивидуально под каждого заказчика. Краулер поставляется только по запросу и не идет по умолчанию в стандартной сборке.
Краулер не поддерживает автоматическую миграцию модели при запуске сканирования. Перед первым запуском необходимо вручную импортировать модель из библиотеки.
Модель совместима с моделью DIS краулеров. Если на стенде уже используется модель DIS, импорт не требуется.
Примечание
Краулер для версий Oracle должен быть не ниже 12 версии.
Извлекаемые объекты¶
В результате сканирования из источника извлекаются метаданные следующих типов объектов:
Таблица
Синоним
Представление
Триггер
Функция
Процедура
Ключ
Материализованное представление
Настройка разрешений для учетной записи¶
У учетной записи пользователя базы данных Oracle должна быть роль SELECT_CATALOG_ROLE.
Загрузка файлов и библиотек¶
Загрузка дополнительных файлов и библиотек не требуется.
Параметры подключения к источнику¶
С сервера, на котором развернут сканер, а также с сервера каталога данных должны быть открыты порты (по умолчанию порт базы данных 1521) до сервера базы данных сканируемого источника. IP адрес сервера и порт базы данных источника указываются в параметрах подключения (Таблица 1).
Таблица 1 – Параметры краулера Oracle
Системное имя (Отображаемое имя) |
Формат |
Пояснение/Примечание |
---|---|---|
resourceName (Наименование) |
Строка |
На основе значения данного поля формируется префикс external_id ( формат: <resourceName>://) |
database (База данных) |
Строка |
Имя базы данных |
host (Хост) |
Строка |
Хост базы данных |
port (Порт) |
Строка |
Порт базы данных |
username (Имя пользователя) |
Строка |
Имя пользователя |
password (Пароль) |
Строка |
Пароль пользователя |
schema (Схема) |
Строка |
Схема, sql выражение. Зарезервированные слово включая символы "<schema>". Обычное sql условие (where). Данное условие добавляется к запросу: |
table (Таблицы и представления) |
Строка |
Sql Выражение. Зарезервированное слово включая символы "<table>" для таблиц и представлений. Синтаксис такой же как и для параметра "Схема". + Если load_system_objects = false, то добавляется условие ORACLE_MAINTAINED = 'N' |
load_system_objects (Загружать системные объекты) |
Чекбокс |
Загружать системные объекты (системные схемы и их объекты). Добавляется в условие к параметру "Схемы": ORACLE_MAINTAINED = 'N' ("Если не включен"), если включен, то условие не добавляется. |
Описания активов¶
Системное имя актива и параметра складывается из префикса
com_infa_ldm_relational_
и имен актива из таблицы активов, например Table. Системное имя активаTable = com_infa_ldm_relational_Table
.Системное имя актива констрейнтов складывается из префикса
com_infa_ldm_constraint_
и имени актива из таблицы активов ниже, например ForeignKey. Системное имя активаForeignKey = com_infa_ldm_constraint_ForeignKey
.Параметры
core_description
иcore_name
не имеют префикс. Данные параметры присутствуют в каждом активе.
Актив Database¶
Параметры в БД:
core_description
core_name
SystemType: banner_full
Row Mapper: OracleDatabaseRowMapper
Sql выражение
SELECT * FROM V$VERSION
Актив Schema¶
Параметры в БД:
core_description
core_name: username
Row Mapper: OracleSchemaRowMapper
Sql выражение:
SELECT username AS owner from all_users %1
UNION
SELECT 'PUBLIC' as schema_name FROM DUAL
где %1 - Выражение из параметра "schema"
Актив Table¶
Параметры в БД:
core_description
core_name: table_name
com_infa_ldm_relational_NativeType: Table type (for oracle is empty)
Row Mapper: OracleTableRowMapper
Sql выражение:
WITH tables AS (
SELECT * FROM dba_tables t
WHERE OWNER in (
SELECT username AS owner from all_users %1 %2
UNION
SELECT 'PUBLIC' as schema_name FROM DUAL
)
)
SELECT * FROM tables %2
где %1 - Выражение из параметра "schema", %2 - Выражение из параметра "table"
Актив View¶
Параметры в БД:
core_description
core_name: view_name
com_infa_ldm_relational_DDL: View DDL
Row Mapper: OracleViewRowMapper
Sql выражение:
WITH views AS (
SELECT * FROM all_views t
WHERE OWNER in (
SELECT username AS owner from all_users %1
UNION
SELECT 'PUBLIC' as schema_name FROM DUAL
)
)
SELECT * FROM views %2
где %1 - Выражение из параметра "schema", %2 - Выражение из параметра "table"
Актив Column¶
Параметры в БД:
core_description
core_name: column_name
Datatype: data_type
Nullable: nullable
DatatypeLength: data_length
DatatypeScale: data_scale
DefaultValue: data_default
Position: column_id
Row Mapper: OracleTableColumnRowMapper
Sql выражение:
WITH table_cols AS (
SELECT * FROM DBA_TAB_COLUMNS
WHERE TABLE_NAME IN (SELECT table_name FROM all_tables %1 )
AND substr(table_name, 1, 4) != 'BIN$' AND OWNER in (
SELECT username AS owner from all_users %1
UNION
SELECT 'PUBLIC' as schema_name FROM DUAL
)
ORDER BY TABLE_NAME, COLUMN_ID
)
SELECT * FROM table_cols;
где %1 - Выражение из параметра "table", %2 - Выражение из параметра "schema"
Актив ViewColumn¶
Параметры в БД:
core_description
core_name: column_name
Datatype: data_type
Nullable: nullable
DatatypeLength: data_length
DatatypeScale: data_scale
DefaultValue: data_default
Position: column_id
Row Mapper: OracleViewColumnRowMapper
Sql выражение:
WITH view_cols AS (
SELECT * FROM DBA_TAB_COLUMNS
WHERE TABLE_NAME IN (SELECT view_name FROM all_views %1 )
AND substr(table_name, 1, 4) != 'BIN$' AND OWNER in (
SELECT username AS owner from all_users %1
UNION
SELECT 'PUBLIC' as schema_name FROM DUAL
)
ORDER BY TABLE_NAME, COLUMN_ID
)
SELECT * FROM view_cols;
где %1 - Выражение из параметра "table", %2 - Выражение из параметра "schema"
Активы PrimaryKey, ForeignKey, UniqueConstraint, CheckConstraint¶
Параметры в БД:
core_description
core_name: constraint_name
com_infa_ldm_constraint_origin: check constraint expression
Row Mapper: OracleConstraintsRowMapper
Sql выражение:
WITH constraints AS (
SELECT * FROM all_constraints
WHERE constraint_type IN ('P', 'F', 'U', 'C')
AND owner in (
SELECT username AS owner from all_users %1
UNION
SELECT 'PUBLIC' as schema_name FROM DUAL
)
AND table_name in ( select table_name from all_tables %2 )
)
где %1 - Выражение из параметра "schema", %2 - Выражение из параметра "table"
Актив Package¶
Параметры в БД:
core_description
core_name: constraint_name
ddl: ddl
Status: status
Row Mapper: OracleObjectsPackageRowMapper
Sql выражение:
WITH objects as
SELECT a.owner, a.object_name, a.object_type,
dbms_metadata.get_ddl(
a.OBJECT_TYPE, a.OBJECT_NAME, a.OWNER) AS DDL
FROM all_procedures a
WHERE a.OBJECT_TYPE = 'PACKAGE'
AND a.owner in (
SELECT username AS owner from all_users %1
UNION
SELECT 'PUBLIC' as schema_name FROM DUAL
)
)
где %1 - Выражение из параметра "schema"
Актив Function¶
Параметры в БД:
core_description
core_name: constraint_name
ddl: ddl
Row Mapper: OracleObjectsFunctionRowMapper
Sql выражение:
WITH objects as
SELECT a.owner, a.object_name, a.object_type,
dbms_metadata.get_ddl(
a.OBJECT_TYPE, a.OBJECT_NAME, a.OWNER) AS DDL
FROM all_procedures a
WHERE a.OBJECT_TYPE = 'FUNCTION'
AND a.owner in (
SELECT username AS owner from all_users %1
UNION
SELECT 'PUBLIC' as schema_name FROM DUAL
)
)
где %1 - Выражение из параметра "schema"
Актив StoredProcedure¶
Параметры в БД:
core_description
core_name: constraint_name
ddl: ddl
Row Mapper: OracleObjectsProcedureRowMapper
Sql выражение:
WITH objects as
SELECT a.owner, a.object_name, a.object_type,
dbms_metadata.get_ddl(
a.OBJECT_TYPE, a.OBJECT_NAME, a.OWNER) AS DDL
FROM all_procedures a
WHERE a.OBJECT_TYPE = 'PROCEDURE'
AND a.owner in (
SELECT username AS owner from all_users %1
UNION
SELECT 'PUBLIC' as schema_name FROM DUAL
)
)
где %1 - Выражение из параметра "schema"
Актив Synonym¶
Параметры в БД:
core_description
core_name: constraint_name
ddl: ddl
Row Mapper: OracleObjectsSynonymRowMapper
Sql выражение:
WITH synonyms as (
SELECT s.owner, s.synonym_name, 'SYNONYM' as object_type,
dbms_metadata.get_ddl('SYNONYM', s.SYNONYM_NAME, s.OWNER) AS ddl
FROM all_synonyms s
WHERE s.owner in (
SELECT username AS owner from all_users %1
UNION
SELECT 'PUBLIC' as schema_name FROM DUAL
)
AND s.table_name in ( select table_name from dba_tables %2 )
)
где %1 - Выражение из параметра "schema" + параметр load_system_objects; %2 - Выражение из параметра "table"
Актив Trigger¶
Параметры в БД:
core_description
core_name: constraint_name
ddl: ddl
Row Mapper: OracleObjectsTriggerRowMapper
Sql выражение:
WITH triggers as (
SELECT t.OWNER ,
t.TRIGGER_NAME, 'TRIGGER' as object_type,
dbms_metadata.get_ddl(
'TRIGGER', t.TRIGGER_NAME, t.OWNER) AS DDL,
t.trigger_type,
t.triggering_event
FROM all_triggers t
WHERE t.owner in (
SELECT username AS owner from all_users %1
UNION
SELECT 'PUBLIC' as schema_name FROM DUAL
)
AND t.table_name in ( select table_name from dba_tables %2 )
)
где %1 - Выражение из параметра "schema" + параметр load_system_objects; %2 - Выражение из параметра "table"
Связи (Иерархия)¶
Древо активов:
+ База данных Oracle
└── + Схема X
└── + Таблицы
├── + Таблица X
| ├── + Колонки
| | └── + Колонка X
| ├── Foreign Key (Список всех FK таблицы)
| ├── Primary Key (Список всех PK таблицы)
| ├── Check Constraint (Список всех CC таблицы)
| └── Unique Constraint (Список всех UC таблицы)
├── + Представления
| └── + Представление X
| └── + Колонки
| └── Колонка X
├── Пакеты
├── Процедуры
├── Синонимы
├── Функции
└── Триггеры
Таблица 2 – Параметры связей
Координаты всех связей: 1:0
Имя связи |
Левый актив - Правый актив |
Row Mapper |
---|---|---|
com_infa_ldm_relational_DatabaseSchema |
Database - Schema |
OracleSchemaLinkRowMapper |
com_infa_ldm_relational_SchemaTable |
Schema - Table |
OracleTableLinkRowMapper |
com_infa_ldm_relational_SchemaView |
Schema - View |
OracleViewLinkRowMapper |
com_infa_ldm_relational_SchemaPackage |
Schema - Package |
OracleObjectsPackageLinkRowMapper |
com_infa_ldm_relational_SchemaFunction |
Schema - Function |
OracleObjectsFunctionLinkRowMapper |
com_infa_ldm_relational_SchemaStoredProcedure |
Schema - StoredProcedure |
OracleObjectsProcedureLinkRowMapper |
com_infa_ldm_relational_SchemaSynonym |
Schema - Synonym |
OracleObjectsSynonymRowLinkMapper |
com_infa_ldm_relational_SchemaTrigger |
Schema - Trigger |
OracleObjectsTriggerLinkRowMapper |
com_infa_ldm_relational_ViewViewColumn |
View - ViewColumn |
OracleViewColumnLinkRowMapper |
com_infa_ldm_relational_TableColumn |
Table - Column |
OracleTableColumnLinkRowMapper |
com_infa_ldm_constraint_DataSetPrimaryKey |
Table - PrimaryKey |
OracleConstraintsLinkFromTableRowMapper |
com_infa_ldm_constraint_DataSetForeignKey |
Table - ForeignKey |
|
com_infa_ldm_relational_TableUniqueConstraint |
Table - UniqueConstraint |
|
com_infa_ldm_relational_TableCheckConstraint |
Table - CheckConstraint |
Связи констрейнтов¶
Координаты связей констрейнтов:
com_infa_ldm_constraint_ForeignKeyPrimaryKeyDataElement: 0:0,
com_infa_ldm_constraint_PrimaryKeyDataElement: 0:0,
com_infa_ldm_relational_UniqueConstraintColumn: 1:0,
com_infa_ldm_relational_CheckConstraintColumn: 0:0.
Таблица 3 – Параметры связей констрейнтов
Имя связи |
Левый актив - Правый актив |
Row Mapper |
---|---|---|
com_infa_ldm_constraint_ForeignKeyPrimaryKeyDataElement |
ForeignKey - Column |
OracleConstraintsLinkFromColumnRowMapper OracleConstraintsLinkToColumnRowMapper |
com_infa_ldm_constraint_PrimaryKeyDataElement |
PrimaryKey - Column |
OracleConstraintsLinkFromColumnRowMapper |
com_infa_ldm_relational_UniqueConstraintColumn |
UniqueConstraint - Column |
OracleConstraintsLinkFromColumnRowMapper |
com_infa_ldm_relational_CheckConstraintColumn |
CheckConstraint - Column |
OracleConstraintsLinkFromColumnRowMapper |
Связи Oracle objects (ALL_OBJECT)¶
Row mapper связей: OracleObjectsLinksRowMapper
Координаты всех связей: 0:0, за исключением:
com_infa_ldm_relational_PackagePackage: 1:0,
com_infa_ldm_relational_PackageStoredProcedure: 1:0.
Таблица 4 – Параметры связей объектов
Имя связи |
Левый актив |
Правый актив |
---|---|---|
com_infa_ldm_relational_TablePackage |
Table |
Package |
com_infa_ldm_relational_TableFunction |
Function |
|
com_infa_ldm_relational_TableStoredProcedure |
StoredProcedure |
|
com_infa_ldm_relational_TableTrigger |
Trigger |
|
com_infa_ldm_relational_TableSynonym |
Synonym |
|
com_infa_ldm_relational_ViewPackage |
View |
Package |
com_infa_ldm_relational_ViewFunction |
Function |
|
com_infa_ldm_relational_ViewStoredProcedure |
StoredProcedure |
|
com_infa_ldm_relational_ViewSynonym |
Synonym |
|
com_infa_ldm_relational_ViewTrigger |
Trigger |
|
com_infa_ldm_relational_PackagePackage |
Package |
Package |
com_infa_ldm_relational_PackageFunction |
Function |
|
com_infa_ldm_relational_PackageSynonym |
Synonym |
|
com_infa_ldm_relational_PackageStoredProcedure |
Procedure |
|
com_infa_ldm_relational_PackageTrigger |
Trigger |
|
com_infa_ldm_relational_FunctionFunction |
Function |
Function |
com_infa_ldm_relational_FunctionPackage |
Package |
|
com_infa_ldm_relational_FunctionStoredProcedure |
StoredProcedure |
|
com_infa_ldm_relational_FunctionSynonym |
Synonym |
|
com_infa_ldm_relational_FunctionTrigger |
Trigger |
|
com_infa_ldm_relational_StoredProcedureStoredProcedure |
StoredProcedure |
StoredProcedure |
com_infa_ldm_relational_StoredProcedureFunction |
Function |
|
com_infa_ldm_relational_StoredProcedureSynonym |
Synonym |
|
com_infa_ldm_relational_StoredProcedureTrigger |
Trigger |
|
com_infa_ldm_relational_SynonymSynonym |
Synonym |
Synonym |
com_infa_ldm_relational_SynonymPackage |
Package |
|
com_infa_ldm_relational_SynonymFunction |
Function |
|
com_infa_ldm_relational_SynonymStoredProcedure |
StoredProcedure |
|
com_infa_ldm_relational_SynonymTrigger |
Trigger |