На этом занятии вы узнаете, что такое прослушиватель, для чего он нужен. Как настроить прослушиватель для созданной ранее нами базы данных. Как управлять прослушивателем. Как запустить и остановить экземпляр базы данных.
Прослушиватель
Прослушиватель (Listener) - главный сетевой компонент на стороне сервера Oracle, позволяющий устанавливать соединение между клиентским компьютером и базой данных Oracle. Один прослушиватель может обслуживать неограниченное количество баз данных.
Прослушиватель управляется файлом listener.ora. Может быть сконфигурирован только один файл listener.ora, на сервере может быть настроено несколько прослушивателей, и этот единственный файл может обслуживать их все. Как правило, если на одном сервере настроено несколько прослушивателей, то это сделано либо с целью обеспечения отказоустойчивости, либо для балансировки обращений к базе данных. Несколько прослушивателей, так же настраиваются при использовании Real Application Cluster.
Каждый прослушиватель представляет собой именованный процесс, запускаемый на каждом сервере баз данных. По умолчанию, прослушиватель имеет имя LISTENER и создается при установке Oracle. Если же вы настраиваете несколько прослушивателей, то каждый должен иметь уникальное имя. Ниже представлен пример файла listener.ora:
# listener.ora Network Configuration File:
/u01/app/oracle/product/11.1.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = test.all-oracle.ru)
(PORT = 1521))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
)
)
Теперь вы имеете общее представление о прослушивателе. И можем настроить прсолушиватель для нашей базы данных.
Для создания будем использовать утилиту netca, она как и многие утилиты находится в каталоге $ORACLE_HOME/bin. Для запуска, перейдем в нужную директорию и выполним:
oracle@test: cd /u01/app/oracle/product/11.1.0/db_1/bin
oracle@test:/u01/app/oracle/product/11.1.0/db_1/bin> ./netca
Откроется окно графического приложения:
Предлагаются варианты, чего собственно будем настраивать. Нас интересует прослушиватель, поэтому выбираем "Listener configuration" и переходим далее.
Предлагается выбрать действие, добавить, перенастроить, удалить или переименовать. Поскольку на нашей машине еще не настроено ни одного прослушивателя, то единственное доступное действие - Добавить. Что и выбираем, и переходим далее.
На этом шаге указываем имя прослушивателя, по умолчанию предлагается имя LISTENER, как и говорилось в начале урока. На данный момент не планируется настраивать дополнительные прослушиватели и базы данных на тестовой машине, поэтому соглашаюсь с предложенным именем и перехожу к следующему шагу.
Здесь предстоит указать протоколы, которые будут использованы. Как правило, используется обычный TCP, его и выбираем. Жмем далее.
Указываем порт, который будет использоваться прослушивателем. По умолчанию, это 1521. Оставляем как есть и переходим далее.
Сейчас система интересуется, будет ли настраиваться еще один прослушиватель, отвечаем нет, переходим далее, и завершаем настройку. Если все хорошо, то на следующем экране система сообщит об успешном завершении настройки.
Теперь, когда прослушиватель настроен, можно познакомится с основными командами управления. Для управления прослушивателем используется утилита lsnrctl, расположена там же, где и утилита для настройки прослушивателя. Для ее запуска выполним:
oracle@test: cd /u01/app/oracle/product/11.1.0/db_1/bin
oracle@test:/u01/app/oracle/product/11.1.0/db_1/bin> ./lsnrctl
Результатом исполнения, будет приглашение работать с консолью прослушивателя:
LSNRCTL>
Для прослушивателя доступны три основные команды: start, stop и status. Команда start служит для запуска процесса прослушивания, stop - остановка, status - показывает текущий статус прослушивателя.
Для удобства, вы можете указывать команду сразу же после вызова утилиты, например, запустим созданный только что прослушиватель:
oracle@test:/u01/app/oracle/product/11.1.0/db_1/bin> ./lsnrctl start
LSNRCTL for Linux: Version 11.1.0.7.0 - Production on 08-FEB-2009 18:51:44
Copyright (c) 1991, 2008, Oracle. All rights reserved.
Starting /u01/app/oracle/product/11.1.0/db_1//bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 11.1.0.7.0 - Production
System parameter file is /u01/app/oracle/product/11.1.0/db_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/product/11.1.0/db_1/log/diag/tnslsnr/test/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=test.all-oracle.ru)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test.all-oracle.ru)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.1.0.7.0 - Production
Start Date 08-FEB-2009 18:51:44
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/11.1.0/db_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/product/11.1.0/db_1/log/diag/tnslsnr/test/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=test.all-oracle.ru)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully
Аналогичным образом можно выполнить остановку или просмотреть статус.
oracle@test:/u01/app/oracle/product/11.1.0/db_1/bin> ./lsnrctl stop
LSNRCTL for Linux: Version 11.1.0.7.0 - Production on 08-FEB-2009 18:55:06
Copyright (c) 1991, 2008, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test.all-oracle.ru)(PORT=1521)))
The command completed successfully
Это все хорошо, скажете вы, но как быть если прослушивателя два, или три, как объяснить Oracle с каким прослушивателем хочет работать пользователь?
В случае, если у вас более одного прослушивателя, вы должны указать имя прослушивателя в команде. Например, выполним запуск прослушивателя, обратившись по имени:
oracle@test:/u01/app/oracle/product/11.1.0/db_1/bin> ./lsnrctl start LISTENER
Когда прослушиватель один, то указывать имя не обязательно, но если их более одного, то указание имени является обязательным.
И вот теперь, когда у нас настроен прослушиватель, можно наконец то достучаться до нашей базы данных, и убедится, что она есть, работает и вполне реальна.
Для этого, убедимся что наш прослушиватель запущен, выставим переменные окружения:
oracle@test:export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1
oracle@test:export ORACLE_SID=test
Этими командами выставлена директория ORACLE_HOME и текущий SID. Переходим в каталог $ORACLE_HOME/bin.
oracle@test:cd $ORACLE_HOME/bin
oracle@test:/u01/app/oracle/product/11.1.0/db_1/bin>
и выполняем:
oracle@test:/u01/app/oracle/product/11.1.0/db_1/bin> ./sqlplus / as sysdba
SQL*Plus: Release 11.1.0.7.0 - Production on Sun Feb 8 18:51:55 2009
Copyright (c) 1982, 2008, Oracle. All rights reserved.
Connected to an idle instance.
SQL>
Если база данных потушена, то об этом будет сообщено: Connected to an idle instance. Т.е. мы подключились к простаивающему экземпляру. Если же база данных поднята, то сообщится версия базы данных и редакция. Сейчас база данных погашена, для работы с ней, требуется ее запустить. Для этого выполним:
[oracle@test bin]$ ./sqlplus / as sysdba
SQL*Plus: Release 11.1.0.7.0 - Production on Thu Mar 19 19:49:47 2009
Copyright (c) 1982, 2008, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 845348864 bytes
Fixed Size 1316656 bytes
Variable Size 503318736 bytes
Database Buffers 335544320 bytes
Redo Buffers 5169152 bytes
Database mounted.
Database opened.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@test bin]$
Сейчас база данных готова к работе. Для того что бы прверить работоспособность можно снова зайти в sqlplus и выполнить любой sql запрос. Например:
Вам будет выведена информация о базе данных.
Остался вопрос, как остановить базу данных. Остановка базы данных осуществляется так же через sqlplus. Для этого заходим в него, как было описано выше, при описании запуска базы данных Oracle. Ниже показана процедура остановки экземпляра базы данных и прослушивателя:
[oracle@test bin]$ ./sqlplus / as sysdba
SQL*Plus: Release 11.1.0.7.0 - Production on Thu Mar 19 19:58:08 2009
Copyright (c) 1982, 2008, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@test bin]$ ./lsnrctl stop
LSNRCTL for Linux: Version 11.1.0.7.0 - Production on 19-MAR-2009 19:58:38
Copyright (c) 1991, 2008, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test.all-oracle.ru)(PORT=1521)))
The command completed successfully
[oracle@test bin]$
Сейчас база данных и прослушиватель остановлены. На этом завершим урок. В дальнейших уроках, будет более подробно остановимся на запуске и остановке экземпляра базы данных. Расскажу о параметрах остановки и запуска экземпляра и как они могут повлиять на работоспособность базы данных или помочь в случае сбоев.