Как заставить Java соблюдать Тайм-аут Кэширования DNS?

Я нашел, что этот SQL-оператор был полезным местом для запуска (извините, я не могу приписать это исходному автору; я нашел его где-нибудь в Интернете):

SELECT * FROM
(SELECT
    sql_fulltext,
    sql_id,
    elapsed_time,
    child_number,
    disk_reads,
    executions,
    first_load_time,
    last_load_time
FROM    v$sql
ORDER BY elapsed_time DESC)
WHERE ROWNUM < 10
/

Это находит главные SQL-операторы, которые в настоящее время хранятся в кэше SQL, заказанном прошедшим временем. Операторы будут исчезать из кэша со временем, таким образом, это не могла бы быть никакая хорошая попытка диагностировать пакетное задание прошлой ночи, когда Вы прокручиваетесь в работу в полдень.

можно также попытаться заказать disk_reads и выполнением. Выполнение полезно, потому что некоторые некачественные нанесения отправляют тот же SQL-оператор слишком много раз. Этот SQL предполагает, что Вы используете, связывают переменные правильно.

Затем можно взять sql_id и child_number из оператора и подать их в этот baby:-

SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('&sql_id', &child));

, который Это показывает фактическому плану от кэша SQL и полному тексту SQL.

90
задан jww 17 December 2018 в 19:22
поделиться

2 ответа

У Java очень странное поведение кеширования DNS. Лучше всего отключить кеширование DNS или установить для него небольшое число, например 5 секунд.

networkaddress.cache.ttl (по умолчанию: -1)
Указывает политику кэширования для успешного поиска имени из службы имен. Значение указывается как целое число, чтобы указать количество секунд для кэширования успешного поиска. Значение -1 указывает «кэшировать навсегда».

networkaddress.cache.negative.ttl (по умолчанию: 10)
Указывает политику кэширования для неуспешных поисков имени из службы имен. Значение указывается как целое число, чтобы указать количество секунд для кэширования ошибки при неудачных поисках. Значение 0 означает «никогда не кэшировать». Значение -1 указывает «кешировать навсегда».

65
ответ дан 24 November 2019 в 07:03
поделиться

Чтобы расширить ответ Байрона, я считаю, что вам нужно отредактировать файл java.security в каталоге % JRE_HOME% \ lib \ security , чтобы внесите это изменение.

Вот соответствующий раздел:

#
# The Java-level namelookup cache policy for successful lookups:
#
# any negative value: caching forever
# any positive value: the number of seconds to cache an address for
# zero: do not cache
#
# default value is forever (FOREVER). For security reasons, this
# caching is made forever when a security manager is set. When a security
# manager is not set, the default behavior is to cache for 30 seconds.
#
# NOTE: setting this to anything other than the default value can have
#       serious security implications. Do not set it unless 
#       you are sure you are not exposed to DNS spoofing attack.
#
#networkaddress.cache.ttl=-1 

Документация по файлу java.security здесь .

17
ответ дан 24 November 2019 в 07:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: