Проблема такова. Есть несколько машин с 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 не самый удачный релиз оракла
к стате это под виндовсом ?
Здравствуйте, Bass, Вы писали:
B>Привет, All!
B>Проблема такова. Есть несколько машин с Oracle 9i Release 1 (последний релиз, содержавший JServer). На машинах -- от 512M до 1G оперативки. Знаю, что мало, но поделать ничего не могу. Иногда Oracle начинает ни с того ни с сего тормозить, т. е. коннектов к базе -- нуль, процессор не загружен, свопления активного не заметно -- а новое соединение установить не могу. Более того, на сервере 1521 порт открыт и слушается (сетевое соединение есть), а вот законнектиться по JDBC -- хрен.
Я бы искал проблему поближе к Jxxx. У меня дома 9.2 вполне неплохо чувствует себя на pIII-800/256Mb.
B>Проблема такова. Есть несколько машин с Oracle 9i Release 1 (последний релиз, содержавший JServer). На машинах -- от 512M до 1G оперативки. Знаю, что мало, но поделать ничего не могу. Иногда Oracle начинает ни с того ни с сего тормозить, т. е. коннектов к базе -- нуль,
Т.е. вообще нет коннектов или нет новых пытающихся подключиться?
Опиши проблему подробнее.
B>Иногда Oracle начинает ни с того ни с сего тормозить
В чем именно тормозит, чем замерено, с чем сравнивал. "новое соединение установить не могу" — это не тормоза это другое.
B>а вот законнектиться по JDBC -- хрен
Что значит хрен, какой он на вид . SQL*Plus как коннектится?
B>Oracle 9i Release 1 (последний релиз, содержавший JServer)
При чем здесь JServer?
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).
Здравствуйте, KisA, Вы писали: KA>Т.е. вообще нет коннектов или нет новых пытающихся подключиться?
Имеется в виду, что изначально база не загружена, а попыток коннекта -- один штук (я сижу и жду). Причём ситуация совершенно идентична и для Shared Server, и для Dedicated Server.
Re[3]: Тормоза Oracle
От:
Аноним
Дата:
02.08.04 10:00
Оценка:
видел похожее когда сервер зачем-то лазил в DNS пытаясь выяснит название клиента. попробуй прописать имя клиента в hosts.
Здравствуйте, Аноним, Вы писали:
А>видел похожее когда сервер зачем-то лазил в DNS пытаясь выяснит название клиента. попробуй прописать имя клиента в hosts.
Здравствуйте, 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 хоть через задницу!
Здравствуйте, 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 -- определённо не в тему. Хотя тормозов добавляет.
Здравствуйте, 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 добавить такие строки:
Здравствуйте, 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 работает.
Плохо. Может с настройками что намудрили. Установка с нуля/на другую машину помогает?
Здравствуйте, 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>Плохо. Может с настройками что намудрили. Установка с нуля/на другую машину помогает?
Девственно чистая база. Т. е. не помогает.
Здравствуйте, 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>
Чайниковский вопрос: на серверной стороне это делается через ALTER SYSTEM или тоже в sqlnet.ora?
Ещё вопрос: какой из sqlnet.ora использовать? Я нашёл два:
${ORACLE_BASE}/config/${ORACLE_VERSION}/sqlnet.ora
${ORACLE_BASE}/product/${ORACLE_VERSION}/network/admin/sqlnet.ora
Здравствуйте, 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>>
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, под которым он работает.
Здравствуйте, Sergey Ten, Вы писали:
ST>В случае autoarchiving Oracle делает это автоматически, а в случае manual archiving он ждет, когда админ это сделает вручную командой ST>
ST>ALTER SYSTEM ARCHIVE LOG ALL;
ST>
Большое спасибо за информацию. Последний вопрос: как этот ARCHIVE LOG вообще выключить? Я нашёл только как включить/выключить автоматическую архивацию?
Здравствуйте, Bass, Вы писали:
B>Последний вопрос: как этот ARCHIVE LOG вообще выключить? Я нашёл только как включить/выключить автоматическую архивацию?
shutdown;
startup mount;
alter database noarchivelog;
alter database open;
Неделю спустя. Прихожу после выходных -- проблема повторяется.
Сначала пытаюсь установить соединение с опубликованным CORBA-объектом по sess_iiop://, клиент зависает.
Затем пытаюсь установить соединение из SQLPlus, с той же удалённой машины:
$ sqlplus /nolog
SQL> CONNECT SYS/change_on_install@ORCL AS SYSDBA;
Клиент зависает. В то же время listener живой, соединение с портами 1521 и 2481 устанавливается. Лог для последнего соединения с клиентской стороны (включённый через sqlnet.ora):
Ну, то, что "reading from transport" -- это и так понятно. Логинюсь на сервер по ssh, пытаюсь зайти локально:
$ sqlplus /nolog
SQL> CONNECT / AS SYSDBA;
-- тот же отрицательный результат. Решаю посмотреть серверные логи. В ${ORACLE_BASE}/admin/ORCL за последние два дня ничего интересного. Т. е. последняя запись -- два дня назад. Серверный лог (через sqlnet.ora) для последнего соединения, того самого, которое "reading from transport":
Аналогичный локальный клиентский лог (видимо, для работающего на той же машине oracle enterprise manager'а) весит 600 Мб и вся вторая половина загажена сообщениями след. вида:
сообщает, что есть штук восемь процессов с "args" oracle_ORCL, из них три отожрали почти всю память (25, 25 и 17%), причём для одного значение "pcpu" колеблется между 97% и 100%, причём эти "почти сто процентов" -- не system time, а user time, что подтверждается: по данным sdtperfmeter (утилита такая в соляре для мониторинга производительности), активность disk/page/swap практически на нуле. Но при этом cpu load -- 100%, system load -- 4. vmstat сообщает то же самое:
Здесь "cs" -- "the number of cpu context switches per second" (кто бы объяснил толком, что это такое);
"us" -- user time процессора; "sy" -- system time процессора.
Ждал три часа, нормально зашатдаунить базу так и не смог, плюнул, перезагрузил машину. Помогло. До след. викенда.
Вопрос: над чем оракл мог так долго думать? На OTN народ сказал, что, скорее всего, это баг, и надо обращаться в metalink. Есть ли какие-л. другие пути? Может ли быть мисконфигурация оракла?
Здравствуйте, Bass, Вы писали:
B>Неделю спустя. Прихожу после выходных -- проблема повторяется. B> === skipped === B>Ждал три часа, нормально зашатдаунить базу так и не смог, плюнул, перезагрузил машину. Помогло. До след. викенда.
Оставил бы висящую sys сессию, чтобы потом можно было отмониторить изнутри.
Очень подозрительно.
Re[7]: Тормоза Oracle
От:
Аноним
Дата:
09.08.04 13:34
Оценка:
на металинке только 8рка фигурирует. выдай точно что за ось и сильно рекомендую апгрейд до 9.2.0.5
посмотри top, покажи какие процессы, наверху.
Doc ID: Note:68059.1
Subject: ALERT: Oracle 8 SQL*Plus connections from Solaris 2.6 to HP/UX & SNI hang
Type: ALERT
Status: PUBLISHED
Content Type: TEXT/PLAIN
Creation Date: 14-JAN-1999
Last Revision Date: 10-MAY-2002
Oracle 8 sqlplus client connections from Solaris 2.6 to HP/UX and SNI systems
can hang.
This problem has been described in a number of Oracle bugs: bug:601571,
bug:752562, bug:757577, bug:761106, bug:805590.
There has been much confusion over the issue, and suggestions that it's caused
(or resolved) by Solaris patch 105786-05, and that using a Net 8 listener, or
MTS on the server is a workaround. None of this has been proved to be true.
The ONLY RELIABLE WORKAROUND that has been identified is to set:
DISABLE_OOB=ON
In the client's "sqlnet.ora" file (disabling Oracle's use of urgent data
messages).
The problem is actually due to incorrect behaviour by either the Sun or
HP/Pyramid TCP stack when dealing with un-ack'd urgent data messages. The
problem is currently the subject of discussion between Sun & HP.
It causes the client and server processes to get out of sync, by affecting
Система -- Sun Ultra 10, 1 UltraSPARC IIi 440Mhz CPU.
Ось -- Solaris 5.9 Maintenance Update 4
Оракл -- 9.0.1 (9i Release 1) без каких-либо патчей/апдейтов.
Вопрос: сейчас на эту версию оракла получить платную поддержку можно? А то я по OTN полазил -- ничего путного не нашёл. Все в сотоянии эйфории от выхода 10g...
Re[9]: Тормоза Oracle
От:
Аноним
Дата:
09.08.04 14:23
Оценка:
B>Система -- Sun Ultra 10, 1 UltraSPARC IIi 440Mhz CPU. B>Ось -- Solaris 5.9 Maintenance Update 4 B>Оракл -- 9.0.1 (9i Release 1) без каких-либо патчей/апдейтов.
сначала пачить хотя бы до 9.0.1.4 (там 250 мб), если не проканает то до 9.2.0.5. имхо только потом можно смотреть логи.
B>Вопрос: сейчас на эту версию оракла получить платную поддержку можно? А то я по OTN полазил -- ничего путного не нашёл. Все в сотоянии эйфории от выхода 10g...
точно не знаю, но если и можно то через пару месяцев она проэкспирится. а на otn ничего не бывает в принципе — им металик продавать нада ...
Здравствуйте, Аноним, Вы писали:
А>а на otn ничего не бывает в принципе — им металик продавать нада ...
Ну почему же, на форумах достаточно много независимой и толковой публики. Даже наши иногда тусуются, индусов поучают...