УСТРАНЕНИЕ НЕПОЛАДОК ПОДКЛЮЧЕНИЙ БД ORACLE

Thank you for reading this post, don't forget to subscribe!

ПРОВЕРКА ЛОКАЛЬНОЙ БАЗЫ ДАННЫХ

Если база дан­ных нахо­дит­ся в локаль­ной систе­ме, спер­ва про­ве­ря­ем состо­я­ние про­цес­са и долж­ны уви­деть резуль­тат, подоб­ный пока­зан­но­му на скрин­шо­те ниже.

Эти выход­ные дан­ные гово­рят нам, что про­цес­сы Oracle запу­ще­ны, вклю­чая tnslsnr, часто назы­ва­е­мый «про­слу­ши­ва­те­лем» и кри­ти­че­ски важ­ный для под­клю­че­ния к локаль­ной базе дан­ных. Так­же мож­но про­ве­рить вывод коман­ды netstat, что­бы уви­деть, порт, кото­рый «опра­ши­ва­ет» Oracle и исполь­зу­ет по умол­ча­нию. Это порт, кото­рый дол­жен был открыть «про­слу­ши­ва­тель».

ИСПОЛЬЗОВАНИЕ TNSPING

Дру­гая, потен­ци­аль­но более полез­ная коман­да - это tnsping, кото­рая исполь­зу­ет инфор­ма­цию из фай­ла БД Oracle tnsnames.ora для про­вер­ки воз­мож­но­сти под­клю­че­ния. Если, напри­мер, набрать коман­ду tnsping ORCL, коман­да будет искать базу дан­ных с име­нем служ­бы ORCL, отпра­вит запрос типа ping на настро­ен­ный порт и сооб­щит об отве­те. Успеш­ный ответ от tnsping будет выгля­деть при­мер­но так:

Обра­ти­те вни­ма­ние на ответ «ОК» в послед­ней стро­ке. Так­же полу­чен отчет о том, сколь­ко вре­ме­ни потре­бо­ва­лось на ответ. Один­на­дцать секунд - быст­рый ответ. Если про­ве­ря­лась уда­лен­ная систе­ма, то потре­бо­ва­лось бы в десять или более раз боль­ше вре­ме­ни, что­бы полу­чить ответ.

Если Oracle про­слу­ши­ва­ет порт, отлич­ный от 1521, коман­да tnsping все рав­но будет рабо­тать, пред­по­ла­гая, что файл tnsnames.ora содер­жит пра­виль­ную инфор­ма­цию. Запись tnsnames.ora для одной базы дан­ных будет выгля­деть при­мер­но так:

Обра­ти­те вни­ма­ние, как имя служ­бы (ORCL), кото­рое исполь­зо­ва­лось в при­ме­ре коман­ды tnsping, и порт, на кото­рый отве­ча­ет «про­слу­ши­ва­тель» Oracle (1521), настро­е­ны в этом дескрип­то­ре базы данных.


ИСПОЛЬЗОВАНИЕ SQLPLUS

Дру­гая коман­да, кото­рую любят исполь­зо­вать адми­ни­стра­то­ры БД для про­вер­ки свя­зи с базой дан­ных Oracle - это sqlplus. С помо­щью sqlplus (уста­нов­лен­но­го вме­сте с Oracle) мож­но про­ве­рить, отве­ча­ет ли Oracle, а так­же и запу­стить несколь­ко команд sqlplus, что­бы убе­дить­ся, что таб­ли­цы или их содер­жи­мое соот­вет­ству­ют тому, что мы ожи­да­ем уви­деть. Коман­да sqlplus име­ет сле­ду­ю­щую фор­му для под­клю­че­ния к базе дан­ных Oracle:

sqlplus username/password@SID

SID в этом опи­са­нии может быть SID или SERVICE_NAME, вза­и­мо­за­ме­ня­е­мы­ми в неко­то­рых вер­си­ях Oracle. Напри­мер, мож­но ввести:

% sqlplus admin/f0xtrawt@ORCL

Эта коман­да опре­де­ля­ет имя поль­зо­ва­те­ля, пароль и SERVICE_NAME/SID в одной коман­де. После под­клю­че­ния мож­но вве­сти пару команд sql, что­бы убе­дить­ся, что база дан­ных рабо­та­ет пра­виль­но. Мож­но под­счи­тать коли­че­ство поль­зо­ва­тель­ских таб­лиц с помо­щью такой команды:

SQL> select count(*) from user_tables;

COUNT(*)
----------
45


СОЗДАНИЕ СКРИПТА

Посколь­ку я не так часто пыта­юсь устра­нить непо­лад­ки в базах дан­ных Oracle, я пред­по­чи­таю сохра­нять коман­ды для под­клю­че­ния к кон­крет­ной базе дан­ных в виде про­сто­го скрип­та. Я мог бы назвать скрипт для под­клю­че­ния к локаль­ной базе дан­ных connect2local и ана­ло­гич­ный сце­на­рий для под­клю­че­ния к базе дан­ных на уда­лен­ном сер­ве­ре connect2rem или connect2mars (если уда­лен­ная систе­ма была назва­на mars).

Что­бы облег­чить мне исполь­зо­ва­ние БД Oracle, я сохра­ню пере­мен­ные, кото­рые хочу исполь­зо­вать, в про­фи­ле и буду исполь­зо­вать их по мере необходимости:

Мною напи­сан­ный скрипт будет выгля­деть так:

Когда я наби­раю connect2local, я ожи­даю уви­деть в ответ OK и воз­мож­ность остать­ся в при­гла­ше­нии SQL>, из кото­ро­го я могу выда­вать запро­сы или набрать quit для выхо­да. Быст­рые тесты, поз­во­ля­ю­щие опре­де­лить, реа­ги­ру­ет ли база дан­ных Oracle, име­ют боль­шое зна­че­ние для устра­не­ния про­блем с подключением.