По моему скромному мнению, необходимо конкретно разрешить выходные запросы DNS на ВЫХОДНОЙ цепочке (и на UDP и на TCP, конечно), и затем отбросить порт - и протокол - определенные флаги от RELATED
входное правило, например:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Или другими словами, используйте выходную политику управлять исходящим трафиком на основе на протокол и соответствием с сохранением информации для управления входящими ответами.
RHEL/CentOS iptables по умолчанию управляет работой как это, хотя они принимают значение по умолчанию для разрешения любого Исходящего пакета.
И да, Вы будете довольно часто видеть отклоненные пакеты, потому что они слишком опаздывали для соответствия соответствию с сохранением информации.
Если вещи работали отлично в течение некоторого времени, и ничего серьезного изменил (т.е. увеличил использование, изменил индексы, тяжелое создание отчетов, analytial обрабатывающий и т.д.),
Я запустил бы путем проверения здоровья и производительности аппаратных средств/физических дисков.
Откровенно говоря, это - довольно широкий вопрос и существует много unknown's..., но так как Ваш конкретный вопрос - то, где я запускаю. Это - то, где я запустил бы.
Я сначала посмотрел бы на сервер базы данных для наблюдения что если любые узкие места, там - например, диск, сеть, ЦП, память. Если существует проблема с используемым оборудованием, это могло бы привести Вас к ней. Но если будет проблема приложения, то это, вероятно, покажет Вам эффект, но не причину.
Самый полный способ приблизиться к проблеме работы Oracle состоит в том, чтобы сделать расширенную трассировку SQL одного или нескольких медленных сессий, представить их и видеть, где они на самом деле проводят свое время. Превосходный источник информации о выполнении этого является книгой Cary Millsap, из которой Вы видите первую главу здесь.
Но менее полный способ посмотреть на ту же информацию состоит в том, чтобы просто запросить словарь данных для наблюдения, на каких событиях медленные сессии ожидают. В случаях, где что-то плохо неправильно, это часто будет столь же эффективно как полная трассировка. Я запустил бы с выполнения этого запроса несколько раз и видел бы, куда это приводит Вас:
select seq#, event, wait_time, seconds_in_wait, state
from v$session
where type='USER'
;
Другой подход к сбору подобной информации является сценарием Люциана Tanel Poder
Вообще говоря, начиная с верхнего уровня, последовательно сломайтесь, где время проведено. В некоторое время необходимо достигнуть уровня, где Вы видите слишком много времени, проведенного, где он не был должен.
Для большего количества детали я настоятельно рекомендую статью Cary Millsap, Думающую Очевидно О Производительности.
Вы лицензировали Oracle Diagnostic Pack? Если да, у вас есть доступ к нескольким полезным инструментам: ADDM (автоматический диагностический монитор) и AWR (автоматический репозиторий рабочей нагрузки). Отчеты AWR поначалу могут быть трудными для понимания, но они могут дать бесценную информацию о том, что на самом деле происходит в базе данных.
Если у вас нет пакета диагностики, вы все равно будете иметь доступ к просмотрам истории активных сеансов.
У вас 11g, это означает, что вы можете запустить «Контроль БД», это ограниченный версия Enterprise Manager (Или, может быть, у вас есть полностью лицензированный Enterprise Manager). DB Control предоставляет веб-интерфейс, он позволяет вам, помимо прочего, просматривать информацию, связанную с производительностью, собирает много полезной информации. Опять же, есть чему поучиться, но если есть проблемы с производительностью, беглый взгляд на вкладку «Производительность» уже может дать много информации.
С уважением