Зміст
Можна без перебільшень стверджувати, що велика частина з'єднань з СУБД 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):
- OCI - Oracle Call Interface
- OPI - Oracle Program Interface
- TTC - Two-Task Common
- NI - Network Interface
- NR - Network Routing
- NN - Network Naming
- NA - Network Authentication
- TNS - Transparent Network Substrate
В цілому зміст багатьох з них зрозумілий простим перекладом на російську.
Архітектура з'єднання з Oracle
Допомогти розібратися у великій кількості і в співвідношенні один з одним мережевих імен в стані загальна схема організації магазинів (стеків) з'єднань, яка пояснює місцезнаходження і призначення кожної з компонент:
Схема наведена для самого поширеного варіанту підключення до Oracle. Але, як тільки вона тут присутня, варто згадати і про наявність інших варіантів, що зустрічаються на практиці рідше. Так, кілька, або ж суттєво інша схема буде в Oracle бути для протоколів GIOP - спілкування з CORBA-об'єктами - і для JDBC - спілкування з Java-програмами.
Журналізація і трасування
Для спостереження за тим, як працює з'єднання з Net8, в Oracle використовується журнализация і трасування. Якийсь принципової різниці між тим і іншим немає і відмінність між ними чисто умовне. Журналізація фіксує в спеціальних файлах найбільш істотні події з "життя з'єднання", такі як, наприклад, виникнення помилки в Net8 або старт слухача (listener). Трасування, вже в своїх власних файлах, збирає подробиці про ті самі події, наприклад, про те, як фактично відпрацьовувалася процедура з'єднання.
Об'єктів журналізації і трасування в мережевий підтримки Oracle може бути кілька, але далі будуть розглянуті тільки три основних:
- клієнтська компонента Net8
- серверна компонента Net8
- слухач (ще раз: це listener)
Журнальні файли за замовчуванням носять розширення log і розташовуються в каталозі% ORACLE_HOME% \ network \ log. Якщо спеціально й вказати іншого, журнальний файл для мережевої і клієнтських компонент Net8 буде називатися sqlnet.log. а файл з журналом роботи слухача - імя_слухача .log. Інші мережеві компоненти в Oracle мають свої власні журнальні файли.
Трасувальні файли за замовчуванням носять розширення trc і розташовуються в каталозі% ORACLE_HOME% \ network \ trace. Якщо спеціально й вказати іншого, трасування файл для мережевої і клієнтських компонент Net8 буде називатися sqlnet.trc або, іноді, cli.trc. Інші мережеві компоненти в Oracle матимуть свої власні файли трасувань.
Включення трасування клієнтської компоненти Net8
У початковому стані трасування роботи клієнтської компоненти Net8 не включена. Для того, щоб її включити, на клієнтській машині потрібно виконати наступне:
- Вказати в файлі sqlnet.ora ім'я і місце для файлу трасування:
TRACE_DIRECTORY_CLIENT = імя_каталога
TRACE_FILE_CLIENT = имя_файла
Хоча це і не обов'язково, але для більш повного контролю корисно це зробити явно, не покладаючись на замовчування.
Якщо ми, до того ж, пропишемо
то для кожного нового з'єднання буде створюватися новий файл, в ім'я якого Oracle буде автоматично дописувати номер процесу - з тим, щоб імена розрізнялися.
який послідовно убуває від максимального (SUPPORT) до нуля (OFF) в наведеному списку альтернатив.
Включення трасування серверної компоненти Net8
Для того, щоб включення трасування серверної компоненти Net8 потрібно (або корисно) на серверній машині виконати наступне:
- Вказати в файлі sqlnet.ora ім'я і місце для файлу трасування:
TRACE_DIRECTORY_SERVER = імя_каталога
TRACE_FILE_SERVER = имя_файла
Точно так же, це не обов'язково, але корисно для більш повного контролю.
- Вказати там же масштаб збору трасування інформації:
який послідовно убуває від максимального (SUPPORT) до нуля (OFF) в наведеному списку альтернатив.
Включення трасування слухача
Схожі маніпуляції з файлом listener.ora дозволяють включити трасування роботи слухача (listener). Найчастіше слухач розташований на тій же машині, що і екземпляр СУБД, хоча це і не є обов'язковим:
- Вказати в файлі listener.ora ім'я і місце для файлу трасування:
TRACE_DIRECTORY_ ІМ'Я-слухач = імя_каталога
TRACE_FILE_ ІМ'Я-слухач = имя_файлаЯк і вище це необов'язково, але бажано.
Якщо там же прописати
TRACE_FILENO_ ІМ'Я-слухач = чісло_файлов
TRACE_FILELEN_ ІМ'Я-слухач = чісло_Кбайт.то для трасування будуть задіяно вказане число файлів зазначеного розміру, які будуть використовуватися по колу, затираючи свій вміст на вищому рівні подібно онлайновим журнальним файлів.
- Вказати режим фіксації в файлі трасування точного часу події (необов'язково):
Вказати об'єм інформації, що збирається в файлі трасування інформації:
з тим же змістом наведених альтернатив значень параметра, що і для клієнта.
- Запустити знову слухач - наприклад, парою команд з консольного віконця ОС:
> Lsnrctl stop
> Lsnrctl startЗауваження щодо використання
Включена трасування, по-перше, неминуче тягне загальне уповільнення роботи системи (запис в файл), і, по-друге, витрачання дискового простору, тим більше, чим більше часу пройшло і чим вище рівень трасування. Навіть на рівні ADMIN відмітка в файлі трасування одного тільки події встановлення з'єднання займає близько 500 рядків тексту. Тому потрібно не забувати відключати трасування, коли в ній пропала необхідність.
Особливо це стосується трасування серверної частини, до якої стікаються з'єднання від усіх клієнтів СУБД. Для серверної частини, правда, є й інший варіант протистояти неконтрольованого зростання файлів трасувань: задати бажане число файлів потрібного розміру так, як було показано вище, і тоді обсяг трасування інформації не переступить покладеного межі. Ця опція доступна тільки починаючи з версії 8.1.