|
|
|||||||||||||||||||||||||||||
|
Трассировка сетевого соединения с OracleВладимир Пржиялковский
Оглавление
Можно без натяжек утверждать, что большая часть соединений с СУБД Oracle выполняется через сеть. Не все согласятся, что соединение по сети входит в тематику баз данных, но то, что администрирование таких подсоединений составляет заметную долю работы АБД, бесспорно. Для организации соединения по сети к своей СУБД фирма Oracle предлагает целый ряд решений, не всегда, к сожалению, последовательных, а временами и "сыроватых". Чтобы разобраться в этом ряду, нужен определенный уровень подготовки по сетевой тематике, не столь уж часто среди специалистов по базам данных встречающийся. К счастью, знание полного арсенала решений Oracle зачастую не требуется, и вполне можно обойтись весьма поверхностным владением вопроса. К нему, однако, относится способность АБД трассировать соединения с Oracle. Трассировка позволяет выявить многие нелады связи с СУБД и наметить выход из положения, и, тем не менее, ею нередко пренебрегают или не пользуются по незнанию. Здесь будет описано, как можно использовать трассировку соединения с СУБД Oracle c клиентской и с серверной стороны. Такая трассировка дает администратору шанс разобраться в вопросе "Что творится с моим соединением с Oracle?" В версии 9.1 СУБД компаниейOracle обещаны определенные новшества в организации трассирования, но пока этого не произошло и речь ниже пойдет о версии 8.
За организацию подсоединения клиентов к СУБД по сети в Oracle отвечает компонента под названием Net8. В версиях 7 и более ранних она называлась SQL*Net, а в версии 8 для привлечения большего внимания публики ее переименовали. Искоренить старое название из своей системы оказалось не под силу даже такому передовику производства, как фирме Oracle, так что сейчас в документации и программах встречаются и старое, и новое название. В версии 8 там, где употребляется "SQL*Net", можно спокойно подставлять "Net8". Вот расшифровка других названий, которые могут встретиться в файлах трассировки соединения по сети. Большинство из них относятся к Net8/SQL*Net, но не все (кроме OCI, OPI и TTC):
В целом смысл многих из них понятен простым переводом на русский. Архитектура соединения с Oracle
Помочь разобраться в обилии и в соотношении друг с другом сетевых имен в состоянии общая схема организации магазинов (стеков) соединений, поясняющая местонахождение и назначение каждой из компонент: Схема приведена для самого распространенного варианта подключения к Oracle. Но, коль скоро она здесь присутствует, стоит упомянуть и о наличии других вариантов, встречающихся на практике реже. Так, несколько, или же существенно другая схема будет в Oracle иметься для протоколов GIOP - общения с CORBA-объектами - и для JDBC - общения с Java-программами.
Для слежения за тем, как работает соединение по Net8, в Oracle используется журнализация и трассировка. Какой-то принципиальной разницы между тем и другим нет и различие между ними чисто условное. Журнализация фиксирует в специальных файлах наиболее существенные события из "жизни соединения", такие как, например, возникновение ошибки в Net8 или старт слухача (listener). Трассировка, уже в своих собственных файлах, собирает подробности о тех же событиях, например, о том, как фактически отрабатывалась процедура соединения. Объектов журнализации и трассировки в сетевой поддержке Oracle может быть несколько, но дальше будут рассмотрены только три основных:
Журнальные файлы по умолчанию носят расширение log и располагаются в каталоге %ORACLE_HOME%\network\log. Если специально не указать иного, журнальный файл для сетевой и клиентских компонент Net8 будет называться sqlnet.log, а файл с журналом работы слухача - имя_слухача .log. Другие сетевые компоненты в Oracle имеют свои собственные журнальные файлы. Трассировочные файлы по умолчанию носят расширение trc и располагаются в каталоге %ORACLE_HOME%\network\trace. Если специально не указать иного, трассировочный файл для сетевой и клиентских компонент Net8 будет называться sqlnet.trc или, иногда, cli.trc. Другие сетевые компоненты в Oracle будут иметь свои собственные трассировочные файлы. Включение трассировки клиентской компоненты Net8
В исходном состоянии трассировка работы клиентской компоненты Net8 не включена. Для того, чтобы ее включить, на клиентской машине нужно выполнить следующее:
Включение трассировки серверной компоненты Net8
Для того, чтобы включения трассировки серверной компоненты Net8 нужно (или полезно) на серверной машине выполнить следующее:
Похожие манипуляции с файлом listener.ora позволяют включить трассировку работы слухача (listener). Чаще всего слухач расположен на той же машине, что и экземпляр СУБД, хотя это и необязательно:
Включенная трассировка, во-первых, неизбежно влечет общее замедление работы системы (запись в файл), и, во-вторых, расходование дискового пространства, тем большее, чем больше времени прошло и чем выше уровень трассировки. Даже на уровне ADMIN отметка в трассировочном файле одного только события установления соединения занимает около 500 строк текста. Поэтому нужно не забывать отключать трассировку, когда в ней пропала необходимость. Особенно это касается трассировки серверной части, к которой стекаются соединения ото всех клиентов СУБД. Для серверной части, правда, есть и другой вариант противостоять неконтролируемому росту трассировочных файлов: задать желаемое число файлов нужного размера так, как было показано выше, и тогда объем трассировочной информации не перешагнет положенного предела. Этот вариант доступен только начиная с версии 8.1. Ссылки по теме
|
|