2015-05-15 2 views
0

Я получаюOracle снимок слишком старый и DBLink

ORA-01555: снимок слишком старый: сегмент отката номер 234 с именем "_SYSSMU234_1378897836 $"

слишком Смаль при выборе некоторых данных с использованием dblink в базе данных оракула.

select a,b from localtab a 
union 
select a,b from [email protected]; 

Есть ли способ устранить эту ошибку?
У меня есть ситуация, чтобы взять эти данные в периодическом порядке.

ответ

1

Вам нужно закрыть курсор, когда закончите извлечение данных. Ваша проблема в том, что вы слишком долго держите курсор открытым. Для этого есть несколько причин: - обработка строк за строкой на стороне клиента. Будет навсегда закончить. (база данных ожидает доставки данных клиенту) Подсказка. arraysize (fetchsize) установлен слишком низко. Массирование 100-200 может ускорить процесс. - есть хороший вид скрыт за «rmotab», который занимает> 30 минут, чтобы вернуться, который горит центральный процессор (логическое чтение)

В принципе, у вас есть следующие варианты:

  1. Ускорить ваш процесс. (быстрее завершите курсор (запрос)). Основная нагрузка.
  2. Запланируйте процесс, когда DML не происходит.
  3. Материализованный вид (предварительная загрузка данных (только для чтения))
  4. Увеличение UNDO.
Смежные вопросы