функция вызывает конфликт enq-DX - PullRequest
0 голосов
/ 28 февраля 2012

У меня есть отчет Crystal, который вызывает функцию в Oracle.эта функция использует select, который выбирает представление в качестве одной из его таблиц.это представление использует несколько ссылок на другие базы данных (представление представляет собой объединение нескольких запросов).всякий раз, когда эта функция выполняется, создается впечатление, что запрос для представления выполняется, и каждая ссылка, которая создает представление, кажется, вступает в конфликт enq-DX.

это связано с этой известной проблемой?http://surachartopun.com/2008/12/dbink-hangs-enq-dx-contention.html

причина, по которой я спрашиваю, состоит в том, что мое исследование показывает, что эта проблема должна возникать только при ссылке на разные версии Oracle, но все, что я использую, это 10.2

1 Ответ

0 голосов
/ 28 февраля 2012

Этот метод когда-либо работал?Это не похоже на хороший способ сделать что-то.Я могу только вообразить функцию, вызывающую огромное количество циклов обработки, когда она обрабатывает каждую строку.

Некоторые другие способы сделать это включают размещение функции как можно ближе к самой большой таблице данных и сохранение обработки на этомбаза данных.Возвращайте только то, что вам нужно, из функции.

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

Материализованное представление одного из источников базы данных с обновлением может быть другим подходом.

РЕДАКТИРОВАТЬ: да, использование ссылок на базы данных может быть ресурсоемким и вызывать проблемы, которые вы видели.Работало ли это когда-либо или есть новое требование, решение которого вам нужно.Если раньше это работало, что изменилось?Если это ново, я смиренно предлагаю другой подход, как я предлагал.

...