Oracle краулер¶
Примечание
В статье приведен пример краулера, характеристики которого настраиваются индивидуально под каждого заказчика. Краулер поставляется только по запросу и не идет по умолчанию в стандартной сборке.
Краулер не поддерживает автоматическую миграцию модели при запуске сканирования. Перед первым запуском необходимо вручную импортировать модель из библиотеки.
Модель совместима с моделью DIS краулеров. Если на стенде уже используется модель DIS, импорт не требуется.
Примечание
Краулер для версий Oracle должен быть не ниже 12 версии.
Установка библиотеки краулеров¶
Скопируйте содержимое libs из архива с библиотекой краулеров в директорию universe-integration в Docker deploy.
Перезапустите стенд.
Добавьте библиотеку crawlers-library-{version}.jar из архива в систему в разделе "Библиотеки".
Параметры¶
Таблица 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 |