Тормоза Oracle
От: Bass Россия https://github.com/unix-junkie
Дата: 02.08.04 07:59
Оценка:
Привет, All!

Проблема такова. Есть несколько машин с Oracle 9i Release 1 (последний релиз, содержавший JServer). На машинах -- от 512M до 1G оперативки. Знаю, что мало, но поделать ничего не могу. Иногда Oracle начинает ни с того ни с сего тормозить, т. е. коннектов к базе -- нуль, процессор не загружен, свопления активного не заметно -- а новое соединение установить не могу. Более того, на сервере 1521 порт открыт и слушается (сетевое соединение есть), а вот законнектиться по JDBC -- хрен. Версии драйверов на клиенте -- произвольные (от 9.0.1 до 10.1, пробовал и thin, и oci).

Лечится иногда рестартом оракла, иногда -- рестартом серверной машины.

Понимаю, что надо читать Performance Tuning Guide, но не мог бы уважаемый All посоветовать, где искать подводные грабли, а заодно, что можно почитать по настройке производительности на машинах класса low-end?

Заранее спасибо.
Re: Тормоза Oracle
От: Аноним  
Дата: 02.08.04 08:08
Оценка:
патчить. а лучше ставить 9.2, 9.0.x не самый удачный релиз оракла
к стате это под виндовсом ?
Re: Тормоза Oracle
От: Softwarer http://softwarer.ru
Дата: 02.08.04 08:09
Оценка:
Здравствуйте, Bass, Вы писали:

B>Привет, All!


B>Проблема такова. Есть несколько машин с Oracle 9i Release 1 (последний релиз, содержавший JServer). На машинах -- от 512M до 1G оперативки. Знаю, что мало, но поделать ничего не могу. Иногда Oracle начинает ни с того ни с сего тормозить, т. е. коннектов к базе -- нуль, процессор не загружен, свопления активного не заметно -- а новое соединение установить не могу. Более того, на сервере 1521 порт открыт и слушается (сетевое соединение есть), а вот законнектиться по JDBC -- хрен.


Я бы искал проблему поближе к Jxxx. У меня дома 9.2 вполне неплохо чувствует себя на pIII-800/256Mb.
Re: Тормоза Oracle
От: KisA Россия  
Дата: 02.08.04 08:20
Оценка:
Здравствуйте, Bass, Вы писали:


B>Проблема такова. Есть несколько машин с Oracle 9i Release 1 (последний релиз, содержавший JServer). На машинах -- от 512M до 1G оперативки. Знаю, что мало, но поделать ничего не могу. Иногда Oracle начинает ни с того ни с сего тормозить, т. е. коннектов к базе -- нуль,

Т.е. вообще нет коннектов или нет новых пытающихся подключиться?
Re: Тормоза Oracle
От: wildwind Россия  
Дата: 02.08.04 08:35
Оценка:
Здравствуйте, Bass, Вы писали:

Опиши проблему подробнее.

B>Иногда Oracle начинает ни с того ни с сего тормозить

В чем именно тормозит, чем замерено, с чем сравнивал. "новое соединение установить не могу" — это не тормоза это другое.

B>а вот законнектиться по JDBC -- хрен

Что значит хрен, какой он на вид . SQL*Plus как коннектится?

B>Oracle 9i Release 1 (последний релиз, содержавший JServer)

При чем здесь JServer?
Re[2]: Тормоза Oracle
От: Bass Россия https://github.com/unix-junkie
Дата: 02.08.04 09:28
Оценка:
B>>Иногда Oracle начинает ни с того ни с сего тормозить
W>В чем именно тормозит, чем замерено, с чем сравнивал. "новое соединение установить не могу" — это не тормоза это другое.

Замерять бессмысленно, т. к. все разумные рамки превышены. Ну не буду ж я ждать 15 минут?!

B>>а вот законнектиться по JDBC -- хрен

W>Что значит хрен, какой он на вид . SQL*Plus как коннектится?
Никак. Т. е. sqlplus/nolog; connect scott/tiger@ORCL засыпает навечно (или почти навечно), а telnet example com 1521 устанавливает сетевое соединение.

B>>Oracle 9i Release 1 (последний релиз, содержавший JServer)

W>При чем здесь JServer?

Это к вопросу о патчах и апгрейдах -- мы этот самый JServer используем и жить без него не можем. Т. е. перейти на 9.2 или 10.1 пока не можем.
OS -- Solaris 9/SPARC (UltraSPARC IIi 440Mhz/1024M RAM), Windows/Linux (Celeron 900-1200 Mhz, 512M RAM).
Re[2]: Тормоза Oracle
От: Bass Россия https://github.com/unix-junkie
Дата: 02.08.04 09:31
Оценка:
Здравствуйте, Аноним, Вы писали:

А>патчить. а лучше ставить 9.2, 9.0.x не самый удачный релиз оракла

А>к стате это под виндовсом ?

Ну, 9.0.x всё-таки удачнее, чем 8.1.7. Или я не прав?
Re[2]: Тормоза Oracle
От: Bass Россия https://github.com/unix-junkie
Дата: 02.08.04 09:33
Оценка:
Здравствуйте, Softwarer, Вы писали:

S>Я бы искал проблему поближе к Jxxx.


Да я и так уже отвёл под Java Pool Size 300M. Результат -- тот же.
Re[2]: Тормоза Oracle
От: Bass Россия https://github.com/unix-junkie
Дата: 02.08.04 09:35
Оценка:
Здравствуйте, KisA, Вы писали:
KA>Т.е. вообще нет коннектов или нет новых пытающихся подключиться?

Имеется в виду, что изначально база не загружена, а попыток коннекта -- один штук (я сижу и жду). Причём ситуация совершенно идентична и для Shared Server, и для Dedicated Server.
Re[3]: Тормоза Oracle
От: Аноним  
Дата: 02.08.04 10:00
Оценка:
видел похожее когда сервер зачем-то лазил в DNS пытаясь выяснит название клиента. попробуй прописать имя клиента в hosts.
Re[4]: Тормоза Oracle
От: Bass Россия https://github.com/unix-junkie
Дата: 02.08.04 10:14
Оценка:
Здравствуйте, Аноним, Вы писали:

А>видел похожее когда сервер зачем-то лазил в DNS пытаясь выяснит название клиента. попробуй прописать имя клиента в hosts.


Уже есть. Видимо, не в этом дело.
Re[3]: Тормоза Oracle
От: wildwind Россия  
Дата: 02.08.04 12:11
Оценка:
Здравствуйте, Bass, Вы писали:

W>>Что значит хрен, какой он на вид . SQL*Plus как коннектится?

B>Никак. Т. е. sqlplus/nolog; connect scott/tiger@ORCL засыпает навечно (или почти навечно), а telnet example com 1521 устанавливает сетевое соединение.
Ну а как с самого сервера коннект? То есть локализуйте проблему: сетевые компоненты, Listener или сам Oracle не создает сессию. Если первое/второе, то плиз в Net Services Administrator's Guide, Part III Testing and Troubleshooting Oracle Net Services. Если третье (что очень маловероятно), то смотрите трейсы, вывешивайте эвенты. Запустите какой-нить joв: если отрабатывает, то с созданием сессий проблем нет. Может триггер на Logon навесили задумчивый?

Обратитесь в суппорт в конце концов, если лицензия имеется.



B>Это к вопросу о патчах и апгрейдах -- мы этот самый JServer используем и жить без него не можем. Т. е. перейти на 9.2 или 10.1 пока не можем.
Шо вы мене такое говорите!
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production
With the Partitioning option
JServer Release 9.2.0.5.0 - Production


S>Я бы искал проблему поближе к Jxxx.

B>Да я и так уже отвёл под Java Pool Size 300M. Результат -- тот же.
Опять путаете! Для того чтобы законнектиться, не нужен никакой Java Pool, хоть через JDBC хоть через задницу!
Re[4]: Тормоза Oracle
От: Bass Россия https://github.com/unix-junkie
Дата: 02.08.04 13:56
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Ну а как с самого сервера коннект? То есть локализуйте проблему: сетевые компоненты, Listener или сам Oracle не создает сессию. Если первое/второе, то плиз в Net Services Administrator's Guide, Part III Testing and Troubleshooting Oracle Net Services. Если третье (что очень маловероятно), то смотрите трейсы, вывешивайте эвенты. Запустите какой-нить joв: если отрабатывает, то с созданием сессий проблем нет.


Именно третье. Т. е. listener работает.

W>Может триггер на Logon навесили задумчивый?


Нет. Девственно чистая база.

W>

B>>Это к вопросу о патчах и апгрейдах -- мы этот самый JServer используем и жить без него не можем. Т. е. перейти на 9.2 или 10.1 пока не можем.
W>Шо вы мене такое говорите!
W>
W>Connected to:
W>Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production
W>With the Partitioning option
W>JServer Release 9.2.0.5.0 - Production
W>


Это он пишет. А в доках к 9.2 русским по белому сказано про "desupport of JServer". По крайней мере, поддержки CORBA, EJB и JSP в 9.2 уже нет, хотя кастрированную JVM всё-таки сохранили. А единственный способ получить работающий JServer на 9.2 -- это upgrade версии 9.0.1.


S>>Я бы искал проблему поближе к Jxxx.

B>>Да я и так уже отвёл под Java Pool Size 300M. Результат -- тот же.
W>Опять путаете! Для того чтобы законнектиться, не нужен никакой Java Pool, хоть через JDBC хоть через задницу!

Я понимаю В данном случае Java -- определённо не в тему. Хотя тормозов добавляет.
Re: Тормоза Oracle
От: Sergey Ten http://www.fastalgo.com
Дата: 02.08.04 14:30
Оценка: 1 (1) +1
Здравствуйте, Bass, Вы писали:

B>Привет, All!


B>Проблема такова. Есть несколько машин с Oracle 9i Release 1 (последний релиз, содержавший JServer). На машинах -- от 512M до 1G оперативки. Знаю, что мало, но поделать ничего не могу. Иногда Oracle начинает ни с того ни с сего тормозить, т. е. коннектов к базе -- нуль, процессор не загружен, свопления активного не заметно -- а новое соединение установить не могу.


Несколько вопросов:

— Содержимое alertlog-а
— Что говорит connect as sysdba + startup nomount с последующим alter database open?
— archivelog или noarchivelog? Если archivelog, то auto archiving или manual archiving? Может, он сидит и ждет, когда кто-нибудь сархивирует redolog-и (в этом случае некоторое время назад он должен был разрешать коннекты, т.к. кто-то должен был заполнить redolog-и).
— включить tracing на клиентской стороне, посмотреть, устанавливается ли соединение с БД с последующим зависанием, или же виснет на создании соединения. В sqlnet.ora добавить такие строки:
  trace_directory_client=c:\wutemp
  trace_file_client=conn_cli.trc
  trace_level_client=admin

— включить tracing на серверной стороне, может там чего интересного
  trace_directory_server=c:\wutemp
  trace_file_server=conn_srv.trc
  trace_level_server=admin
Re[5]: Тормоза Oracle
От: wildwind Россия  
Дата: 02.08.04 14:53
Оценка:
Здравствуйте, Bass, Вы писали:

B>Это он пишет. А в доках к 9.2 русским по белому сказано про "desupport of JServer". По крайней мере, поддержки CORBA, EJB и JSP в 9.2 уже нет, хотя кастрированную JVM всё-таки сохранили.

Ну положим этого там не сказано, тем более русским. Desupport касается EJB, JSP и CORBA, а JServer просто переименован в Oracle JVM. Оно и правильно — нечего пихать в базу все подряд, в частности presentation layer (и кроме того надо же покупать OAS )

B>А единственный способ получить работающий JServer на 9.2 -- это upgrade версии 9.0.1.

Можно и с 8.1.7.

B>Именно третье. Т. е. listener работает.

Плохо. Может с настройками что намудрили. Установка с нуля/на другую машину помогает?
Re[6]: Тормоза Oracle
От: Bass Россия https://github.com/unix-junkie
Дата: 03.08.04 04:58
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, Bass, Вы писали:


W>Ну положим этого там не сказано, тем более русским. Desupport касается EJB, JSP и CORBA, а JServer просто переименован в Oracle JVM. Оно и правильно — нечего пихать в базу все подряд, в частности presentation layer (и кроме того надо же покупать OAS )

Согласен, не русским Касательно JServer -- признаю, лажанулся: я имел в виду именно CORBA. Просто эту самую корбу мы и используем.

B>>А единственный способ получить работающий JServer на 9.2 -- это upgrade версии 9.0.1.

W>Можно и с 8.1.7.
Не пробовал, но верю

B>>Именно третье. Т. е. listener работает.

W>Плохо. Может с настройками что намудрили. Установка с нуля/на другую машину помогает?
Девственно чистая база. Т. е. не помогает.
Re[2]: Тормоза Oracle
От: Bass Россия https://github.com/unix-junkie
Дата: 03.08.04 06:41
Оценка:
Здравствуйте, Sergey Ten, Вы писали:

ST>- Содержимое alertlog-а


Прошу прощения за ламерство, но где он лежит? Просто я не админ, я программист

ST>- Что говорит connect as sysdba + startup nomount с последующим alter database open?


Ещё не пробовал, ситуация пока не повторялась. Повторится -- попробую.

ST>- archivelog или noarchivelog? Если archivelog, то auto archiving или manual archiving? Может, он сидит и ждет, когда кто-нибудь сархивирует redolog-и (в этом случае некоторое время назад он должен был разрешать коннекты, т.к. кто-то должен был заполнить redolog-и).


archivelog, manual archiving. А можно с этого момента подробнее?

ST>- включить tracing на клиентской стороне, посмотреть, устанавливается ли соединение с БД с последующим зависанием, или же виснет на создании соединения. В sqlnet.ora добавить такие строки:

ST>
ST>  trace_directory_client=c:\wutemp
ST>  trace_file_client=conn_cli.trc
ST>  trace_level_client=admin
ST>

ST>- включить tracing на серверной стороне, может там чего интересного
ST>
ST>  trace_directory_server=c:\wutemp
ST>  trace_file_server=conn_srv.trc
ST>  trace_level_server=admin
ST>


Чайниковский вопрос: на серверной стороне это делается через ALTER SYSTEM или тоже в sqlnet.ora?
Ещё вопрос: какой из sqlnet.ora использовать? Я нашёл два:
${ORACLE_BASE}/config/${ORACLE_VERSION}/sqlnet.ora
${ORACLE_BASE}/product/${ORACLE_VERSION}/network/admin/sqlnet.ora
Re[3]: Тормоза Oracle
От: Sergey Ten http://www.fastalgo.com
Дата: 03.08.04 11:58
Оценка:
Здравствуйте, Bass, Вы писали:

B>Здравствуйте, Sergey Ten, Вы писали:


ST>>- Содержимое alertlog-а


B>Прошу прощения за ламерство, но где он лежит? Просто я не админ, я программист

Все мы тут не админы.
SQL> select value from v$parameter where name = 'background_dump_dest';

VALUE
-----------------------------------------------------------------------
C:\oracle\admin\work92\bdump

ST>>- archivelog или noarchivelog? Если archivelog, то auto archiving или manual archiving? Может, он сидит и ждет, когда кто-нибудь сархивирует redolog-и (в этом случае некоторое время назад он должен был разрешать коннекты, т.к. кто-то должен был заполнить redolog-и).

B>archivelog, manual archiving. А можно с этого момента подробнее?


Можно. Oracle использует несколько redolog-ов по кругу, что, естественно, вызывает их перезапись, когда очередной круг завершен. Если включено архивирование redolog-ов, то перед тем, как повторно использовать файл redolog-а, Oracle должен сделать его копию в директории, заданной параметром
select value from v$parameter where name = 'log_archive_dest';

В случае autoarchiving Oracle делает это автоматически, а в случае manual archiving он ждет, когда админ это сделает вручную командой
ALTER SYSTEM ARCHIVE LOG ALL;

Если админ своевременно этого не сделал, то Oracle впадает в спячку, так как перезапись файла невозможна, а без redolog-а он работать не может.

ST>>- включить tracing на клиентской стороне, посмотреть, устанавливается ли соединение с БД с последующим зависанием, или же виснет на создании соединения. В sqlnet.ora добавить такие строки:

ST>>
ST>>  trace_directory_client=c:\wutemp
ST>>  trace_file_client=conn_cli.trc
ST>>  trace_level_client=admin
ST>>

ST>>- включить tracing на серверной стороне, может там чего интересного
ST>>
ST>>  trace_directory_server=c:\wutemp
ST>>  trace_file_server=conn_srv.trc
ST>>  trace_level_server=admin
ST>>


B>Чайниковский вопрос: на серверной стороне это делается через ALTER SYSTEM или тоже в sqlnet.ora?

B>Ещё вопрос: какой из sqlnet.ora использовать? Я нашёл два:
B>${ORACLE_BASE}/config/${ORACLE_VERSION}/sqlnet.ora
B>${ORACLE_BASE}/product/${ORACLE_VERSION}/network/admin/sqlnet.ora

На серверной стороне — тоже через sqlnet.ora. Какой из них — точно не скажу, но скорее всего, второй. Надо смотреть Oracle документацию на тот UNIX, под которым он работает.
Re[4]: Тормоза Oracle
От: Bass Россия https://github.com/unix-junkie
Дата: 03.08.04 13:53
Оценка:
Здравствуйте, Sergey Ten, Вы писали:

ST>В случае autoarchiving Oracle делает это автоматически, а в случае manual archiving он ждет, когда админ это сделает вручную командой

ST>
ST>ALTER SYSTEM ARCHIVE LOG ALL;
ST>


Большое спасибо за информацию. Последний вопрос: как этот ARCHIVE LOG вообще выключить? Я нашёл только как включить/выключить автоматическую архивацию?
Re[5]: Тормоза Oracle
От: Sergey Ten http://www.fastalgo.com
Дата: 03.08.04 14:43
Оценка: 2 (1)
Здравствуйте, Bass, Вы писали:

B>Последний вопрос: как этот ARCHIVE LOG вообще выключить? Я нашёл только как включить/выключить автоматическую архивацию?

shutdown;
startup mount;
alter database noarchivelog;
alter database open;