Dsvolk > > Oracle > > Faq > > My Blog | Search | About
(Not Logged In)
[ welcome! ] [ news ] [ install ] [ jump-jet ] [ app ] [ rac ] [ papers ] [ dba ] [ dvp ] [ racdd4d ] [ oem ] [ statspack ] [ education ] [ tuning ] [ ias ] [ backup ] [ dataprotection ] [ security ] [ oid ] [ options ] [ integration ] [ sales ] [ sun ] [ linux ] [ consulting ] [ faq ]

ЧАВО

Соглашение о материалах на этом сайте

Мой oracle blog
true dsvolk!
ЧАсто задаваемые ВОпросы  

FAQ по сетевым проблемам

( Все еще для администраторов Oracle, а не для администраторов Unix)

 
 

Q: Какие настройки ОС нужно выполнить для оптимальной работы Oracle в сети (tcp_keepalive) ? (26.01.2004)
(Solaris 8,9)

A:  В Solaris (и видимо некоторых других Unix системах) существует некоторое число сетевых параметров, которые могут влиять на работу с Oracle. В частности, на работу с db_link'ами. Мне кажется, что случаи, когда компиляция процедур, включающих удаленные объекты идут необоснованное долго, также относятся к проблемам с TCP/IP и решить ее можно с помощью настройки соответствующих параметров. 

Пока я обнаружил следующие, не слишком удачные настройки по умолчанию:

tcp_keepalive_interval, который показывает время в милисекундах до того момента, когда будет послан пробный пакет, для попытки установить, отвечает ли другая сторона. 

В Solaris этот параметр установлен в 7200000, минимальное значение  10000.

ndd  /dev/tcp tcp_keepalive_interval         
7200 000

Мне кажется разумно установить время порядка 10 минут:

ndd -set /dev/tcp tcp_keepalive_interval  600000

Ссылке по теме:

Solaris - Tuning Your TCP/IP Stack

Статья о некоторых других сетевых параметрах Solaris, Adrian Cockcroft

Статья Metalink TCP Tuning for Oracle Application Server

Q: Какие настройки Net*8 нужно сделать для  оптимальной производительности клиент-сервер в сети ? (26.01.2004)
(Solaris 8+, Oracle 8i, 9i)

A:  Можно выполнить 2 известные мне настройки, tcp.nodelay и SDU/TDU

Установить параметр tcp.nodelay = true в sqlnet.ora на стороне сервера и клиентов. Это исключит буферизацию пакетов tcp. Что вероятно увеличит их число, но также и увеличит производительность, если сеть у Вас не загружена. Насколько я понимаю, это параметр при открытии сокета, и приложение (oracle client) либо выставляет это параметр либо нет. 

SQL*Net позволяет также установить размер принимаемых и отсылаемых пакетов с помощью параметров SDU (session data unit) и TDU (transport data unit). Значение SDU по умолчанию 2048, значение TDU по умолчанию  32767.  

Какие значения использовать в реальной жизни? Мне кажется, что чем лучше сеть тем большие значения имеет смысл использовать. Надо только помнить, что длина пакета Ethernet 1500 (минус заголовки). Steev Adams  полагает, таким образом, что SDU должно быть для Ethernet 1450, metalink что 1460. Точно также, если сеть плохая, имеет смысл попробовать уменьшить размер пакетов. Хотя конечно, в первую очередь нужно обратиться в сетевой отдел, чтобы выяснить причину плохой связи. Если маршрутизатор закрывает соединения никакой размер пакетов не поможет. 

Установить параметры SDU и TDU для сервера и клиентов можно как показано ниже:

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SDU = 8192) <<**** Connects to this SID will

(TDU = 8192) <<**** try to use put 8K into packets.

(SID_NAME =SPRI)

(ORACLE_HOME = /oracle/product/8.1.7)

)

)

 

alias= (DESCRIPTION=

(SDU=8192) <<**** service layer buffer size

(TDU=8192) <<**** transport layer size

(ADDRESS= (PROTOCOL=tcp) (PORT=1521) (HOST=abc))

(CONNECT_DATA= (SID=SPRI))

)

Устанавливать нужно одинаковые значение и на сервере и на клиенте. Если клиентов несколько типов, и хочется использовать несколько разных SDU, наверно нужно запустить несколько листенеров. Но я не проверял как это будет работать. 

Будьте внимательны, говорят что Net8 Assistance помещает эти параметры неверно.

Dsvolk > > Oracle > > Faq > > Last Modified: 20-07-2004 13:29