Листенер oracle что это

Обновлено: 06.07.2024

Эти материалы являются объектом авторского права и защищены законами РФ и международными соглашениями о защите авторских прав. Перед использованием материалов вы обязаны принять условия лицензионного договора на использование этих материалов, или же вы не имеете права использовать настоящие материалы

Авторская площадка "Наши орбиты" состоит из ряда тематических подразделов, являющихся моими лабораторными дневниками, содержащими записи за разное, иногда продолжительно отличающееся, время. Эти материалы призваны рассказать о прошедшем опыте, они никого ни к чему не призывают и совершенно не обязательно могут быть применимы кем-то ещё. Это только лишь истории о прошлом

Установка движка СУБД

В настоящей редакции статьи описана установка относительно недавно вышедшей версии 11.2 СУБД от Oracle на Enterprise Linux 5 от компании Red Hat. СУБД сертифицирована на использование только с несколькими дистрибутивами Linux из существующего множества. Наиболее интересным, на взгляд автора, является использование лидера - дистрибутива RHEL, получить который можно на сайте комнании - производителя. Итак, после установки операционной системы, копирования и развёртывания на неё дистрибутива RDBMS (СУБД) необходимо установить программное обеспечение (ПО) движка, а потом создавать одну или несколько баз, которые этот движок будет обслуживать. Перед установкой движка необходимо выполнить подготовительные действия:

  • для установки пакетов необходимо настроить источник, которым может быть сетевой репозитарий или инсталляционный DVD. Для использования DVD можно создать в каталоге /etc/yum.repos.d файл с именем cdrom.repo
  • установитьтребуемые пакеты
  • обеспечить не меньше 1Gb оперативной памяти и соответствующее количество свопа (для 1G памяти 1.5G свопа, причём для движка БД можно и уменьшить, а вот для RAC это уже не канает)
  • создать пользователя и группы
  • зайти пользователем oracle и добавить в профиль строчку
    umask 022
  • выставить параметры ядра в файле /etc/sysctl.conf
  • перегрузить узел или применить изменения командой
    sysctl -p
  • выставить лимиты пользователю oracle в файле /etc/security/limits.conf:

Далее можно запускать инсталляцию софта движка. Сам дистрибутив качается с сайта производителя, а также уделяем внимание лицензированию - имеете ли право. Дистрибутив Oracle Database 11.2 состоит из 2 архивов zip, которые необходимо распаковать в одно и то же место. Для запуска установщика необходимо выполнить описанные выше действия, перейти в каталог дистрибутива под пользователем oracle и запустить расположенный в корне runInstaller. Каталоги для установки можно создать заранее, они должны принадлежать пользователю oracle. Для начала эти каталоги могут быть произвольными. Возможные ошибки размера свопа для начала также вполне можно игнорировать, но в последующем придётся более внимательно прочитать документацию и обеспечить размер свопа, вычисленный по формуле, приведённой в документации

Важным при установке ПО движка является выбор дополнительных опций, т.к. отдельные опции являются платными и требуют лицензионных отчислений. По окончании инсталляции сразу рекомендую сделать архив инвентори, являющейся XML базой установленных продуктов корпорации и востребованной для последующих откатов, установок и обновлений. В каталоге инвентори (обычно oraInventory) можно также найти журналы каждой установки и обновления. Архив можно сделать, заархивировав стандарнтым для UNIX архиватором tar каталог для инфентори, который вы указали при установке движка СУБД

Обновление и патчевание движка СУБД

Патчи и обновления накладываются по мере выхода либо сразу за установкой базовой версии. Обычно они содержат детальнейшие инструкции по подготовке и последующей установке, которые зависят от патча, поэтому здесь необходимо знакомиться непосредственно с руководством по установке каждого патча и обновления. Для просмотра информации о патчах можно использовать команду "$ORACLE_HOME/OPatch/opatch lsinventory"

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

Создание непосредственно БД

Вариантов создания БД несколько. Наиболее универсальным является использование утилиты dbca для генерации скриптов с их последующей фиксацией и прогоном. Почему нельзя создать БД простой командой CREATE DATABASE ? Потому что это только начальная фаза. Как минимум дальше должны быть созданы объекты так называемого словаря, то есть структуры в базе, используемые движком СУБД для управления и полноценной работы базы. Объекты словаря создаются скриптами, входящими в состав ПО движка. Кроме того, для получения дополнительного системного (административного) и прикладного (опции базы) функционала в базе должны быть созданы соответствующие объекты, которые также создаются скриптами, входящими в состав ПО движка

Таким образом готовится инфраструктура каталогов (для начала можно использовать произвольный каталог как стартовый для всей БД), далее из под пользователя oracle запускается утилита dbca, в режиме интерактивного диалога собирающая все нужные сведения для создания БД, формирующая по ним скрипты создания БД и отрабатывающая их

В зависимости от конфигурации решения с большой вероятностью потребуется отдавать базу клиентам в сети. База сама по себе не столь интересна и ценна, как законченное решение. частью которого она является. Клиенты могут обращаться к базе через различные протоколы, однако наиболее распространённым вариантом являетcя IPC для локальных клиентов (внутренний протокол Oracle) и SQLNet, предоставляющий доступ по TCP/IP. За подключание клиентов отвечает процесс листенера. Возможны две схемы работы - выделеный сервер, использующийся наиболее часто и разделяемый сервер, использующийся для массового обслуживания большого количества клиентов. Рассматривать здесь будем конфигурацию "выделенный сервер", при которой каждый обратившийся к листенеру клиент подключается к специально для него инициированному листенером дочернему серверному процессу

В общем случае конфигурируется и запускается один листенер, но листенеров на одном узле может быть и несколько, отличающихся настройками и слушающих, например, разные порты. Экземпляры Oracle (фактически запущенные базы) могут самостоятельно зарегистрироваться на листенере и обслуживаться им, но нагляднее вручную прописать в настройках листенера обслуживаемые им базы. В общем случае настройки хранятся в файле listener.ora, расположенном в каталоге $ORACLE_HOME/network/admin/ (для SUN Solaris сначала проверяется каталог /var/opt/oracle). Каталог можно переопределить выставлением переменной среды TNS_ADMIN, что позволяет подготовить несколько конфигураций при использовании нескольких листенеров. Ниже приведён пример файла конфигурации с прослушиванием двух сетевых интерфейсов и принудительной регистрацией базы TEST1

Также необходимо заполнить аналог файла /etc/hosts, состоящий из пар "имя_соединения_с_БД = расшифровка", расположенный $ORACLE_HOME/network/admin/tnsnames.ora. Пример этого файла для одной строки соединения с БД TEST1 через два разных интерфейса:

Строк соединения может быть много, по потребности. После окончания конфигурирования листенера можно рестартовать его, запустив оболочку управления "lsnrctl" и вызвав команду "start". Потушить листенер можно командой "stop", а посмотреть текущий статус командой "status". Кстати при редактировании конфигурационного файла приходилось наблюдать, что команда "reload" не подхватывает новую конфигурацию, и наиболее надёжным способом применения изменений является последовательность команд "stop" и "start"

Ещё одним аспектом является возможность включить трассировку листенера и задать уровень детализации, что делается добавлением соответствующих конфигурационных опций в файле конфигурации листенера (не путать с конфигурацией и трассировкой БД), и может быть востребовано при отладке решения

Как уже указывалось во вводной статье, основным интерфейсом администрирования является расширенный диалект SQL и утилиты клиентского доступа, например sqlplus, запускаемый в командной строке операционной системы. После установки движка и создания базы желательно прописать в профиль пользователя операционной системы oracle несколько переменных окружения - ORACLE_HOME (как указывалось при установке), ORACLE_SID (имя базы), а также добавить в переменную PATH путь $ORACLE_HOME/bin. Альтернативой указания первых двух переменных является запуск команды ". oratab", устанавливаемой на последнем этапе установки движка, обычно в /usr/local/bin. На задаваемый этой утилитой вопрос необходимо ввести корректное имя базы

Если всё выполнено корректно, то можно запустить из под пользователя oracle команду 'sqlplus "/ as sysdba"', предоставляющую пользователю клиентскую оболочку для доступа к текущей базе в режиме администратора из под пользователя SYS. Имя базы определяется переменной окружения ORACLE_SID. Вот пример нескольких команд:

Дальше дорога ведёт к изучению системных таблиц и представлений, а также типовых команд, приёмов и методов работы администратора. Ради интереса можно попробовать создавать таблицы (CREATE TABLE . ) в текущей схеме (от имени текущего пользователя), которым при описанном методе подключения будет SYS. Или же создать отдельного пользователя (CREATE USER vasya IDENTIFIED BY qwe), и играться под ним (CREATE TABLE vasya.tablitsa . ), что рекомендуется

Подключиться к базе на самом сервере пользователем Вася можно так 'sqlplus vasya/qwe', а вот для подключения с другой машины потребуется установить на неё отдельно доступный на сайте Oracle клиент, и настроить его tnsnames.ora так же, как это описано выше в разделе настройка листенера, после чего подключиться можно будет командой 'sqlplus vasya/qwe@алиас_соединения'. При этом листенер на сервере должен быть запущен и сконфигурирован

Важно также помнить, что перед остановкой операционной системы и выключением компьютера необходимо корректно потушить базу (SHUTDOWN IMMEDIATE) вручную, или автоматизировав процесс скриптом

Установка DB Console

C версии 12c DBConsole больше не поддерживается и замещени на EM Express edition. Детали этой новой функциональности планируется описать в статье об установке версии 12c. Здесь же исторически рассматриваем именно DB Console. Если изначально устанавливался только софт движка, настройка листенера не проводилась и при создании базы у вас не получилось разрешить сконфигурировать облегченную версию Entreprise Manager, называемую DB Console. Однако после конфигурирования и старта листенера можно повторно запустить утилиту dbca, и, выбрав режим модификации опций базы, сконфигурировать DB Console. Нюансом здесь является необходимость смены пароля пользователю SYSMAN, создаваемому при этом в базе средствами базы

Важным аспектом для корректной работы является организации сетевой инфраструктуры, в частности сервиса DNS в локальной сети, и корректного указания имён узлов. В случае некорректного разрешения имён попытка запуска DB Console может привести к страшным тормозам. Другим важным аспектом является установка Adobe Flush плагина для браузера, через который будетосуществляться доступ к DB Console

Также важно помнить, что каждый экземпляр баз и DB Console должны быть корректно потушены перез остановкой узла и запущены после старта узла. В частности для DB Console используется команда "emctl stop dbconsole" в сконфигурированном (как минимум экспортированы переменные окружения ORACLE_HOME и ORACLE_SID) окружении

Для того, чтобы удалить репозитарий DB Console можно воспользоваться следующими командами

На этом занятии вы узнаете, что такое прослушиватель, для чего он нужен. Как настроить прослушиватель для созданной ранее нами базы данных. Как управлять прослушивателем. Как запустить и остановить экземпляр базы данных.

Прослушиватель

Прослушиватель (Listener) - главный сетевой компонент на стороне сервера Oracle, позволяющий устанавливать соединение между клиентским компьютером и базой данных Oracle. Один прослушиватель может обслуживать неограниченное количество баз данных.

Прослушиватель управляется файлом listener.ora. Может быть сконфигурирован только один файл listener.ora, на сервере может быть настроено несколько прослушивателей, и этот единственный файл может обслуживать их все. Как правило, если на одном сервере настроено несколько прослушивателей, то это сделано либо с целью обеспечения отказоустойчивости, либо для балансировки обращений к базе данных. Несколько прослушивателей, так же настраиваются при использовании Real Application Cluster.

Каждый прослушиватель представляет собой именованный процесс, запускаемый на каждом сервере баз данных. По умолчанию, прослушиватель имеет имя LISTENER и создается при установке Oracle. Если же вы настраиваете несколько прослушивателей, то каждый должен иметь уникальное имя. Ниже представлен пример файла listener.ora:

Теперь вы имеете общее представление о прослушивателе. И можем настроить прсолушиватель для нашей базы данных.

Для создания будем использовать утилиту 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

Результатом исполнения, будет приглашение работать с консолью прослушивателя:

Для прослушивателя доступны три основные команды: start, stop и status. Команда start служит для запуска процесса прослушивания, stop - остановка, status - показывает текущий статус прослушивателя.

Для удобства, вы можете указывать команду сразу же после вызова утилиты, например, запустим созданный только что прослушиватель:

Аналогичным образом можно выполнить остановку или просмотреть статус.

Это все хорошо, скажете вы, но как быть если прослушивателя два, или три, как объяснить 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:/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 – компонент сетевого доступа к системам Oracle. Он принимает клиентские запросы на соединение и направляет их для обработки в соответствующий серверный процесс. Листенер не просто процесс маршрутизации, он имеет свои собственные протокольные и трассировочные файлы, установочные параметры защиты и свой набор команд. Он также поддерживает соединения по протоколам SNMP и SSL.

Обычно листенер рассматривается как ступенька” на пути вторжения в базы данных и другие сервисы, которые он может поддерживать. Тем не менее, у него есть достаточно полезные функциональные возможности, которые сами по себе заслуживают внимания.

Плохо сконфигурированный незащищенный листенер предоставляет нарушителю различные способы атак, включая удаленное выполнение команд, атаки типа отказ в обслуживании”. Целью хакера, атакующего базу данных, является поиск и использование просчетов в конфигурировании листенера.

На следующей схеме показано функционирование листенера Oracle.

Рис. 2. Листенер базы данных.

Файл listener.ora file описан в [NETREF,8], а файл sqlnet.ora в [NETREF,6], управляющая программа листенера LSNRCTL описана в [NETREF,1].

Перечисление целей: поиск листенеров

Табл. 1. Обычные порты листенера баз данных Oracle.

Программы сканирования сетевых портов, такие, как [nmap], могут показать доступность этих портов, но листенеры могут быть сконфигурированы для работы с другими доступными портами.

Листенер связывается со своими клиентами, используя соответствующий протокол Oracle Net. Этот протокол не базируется на telnet, поэтому для проверки листенера нельзя использовать стандартные утилиты ОС, такие, как Telnet или [netcat]. К счастью, Oracle предоставляет инструментальное средство TNSPING [NETADMIN, 16-17], которое также может быть использовано для проверки листенера:

Относительно просто смастерить простой, но достаточно медленный, сканер листенеров, подставляя в скрипте различные значения $хоста и $порта.

Начинают появляться сканеры защиты Oracle, их также можно использовать для поиска листенеров. Например, свободно распространяемый сканер [nessus] имеет подключаемую возможность для обнаружения листенеров Oracle, работающих на портах 1521 и 1541.

Прослушиватель (Listener) – главный сетевой компонент на стороне сервера Oracle, позволяющий устанавливать соединение между клиентским компьютером и базой данных Oracle. Один прослушиватель может обслуживать неограниченное количество баз данных.

Прослушиватель управляется файлом listener.ora. Может быть сконфигурирован только один файл listener.ora, на сервере может быть настроено несколько прослушивателей, и этот единственный файл может обслуживать их все. Как правило, если на одном сервере настроено несколько прослушивателей, то это сделано либо с целью обеспечения отказоустойчивости, либо для балансировки обращений к базе данных. Несколько прослушивателей, так же настраиваются при использовании Real Application Cluster.

Каждый прослушиватель представляет собой именованный процесс, запускаемый на каждом сервере баз данных. По умолчанию, прослушиватель имеет имя LISTENER и создается при установке Oracle. Если же вы настраиваете несколько прослушивателей, то каждый должен иметь уникальное имя. Ниже представлен пример файла listener.ora:

Настройки включают протокол, порт, имя хоста.

Для управления прослушивателем используется утилита lsnrctl.

Для прослушивателя доступны три основные команды: start, stop и status. Команда start служит для запуска процесса прослушивания, stop – остановка, status – показывает текущий статус прослушивателя.

Основные сетевые настройки Oracle можно осуществить при помощи утилиты NET MANAGER.

Помимо файла listener.ora она позволяет конфигурировать sqlnet.ora и tnsnames.ora, отвечающие за настройки аутентификации, шифрование, другие общие параметры подключений и непосредственно сами строки подключений соответственно.

Пользователь СУБД Oracle и его основные параметры.

Пользователь– человек, у которого есть учётная запись, посредством которой определяются его полномочия и разрешения в пределах БД.

Для управления учетными записями используются два предложения на языке SQL, это CREATE USER – для создания учетной записи, и ALTER USER – для изменения существующей учетной записи и DROP USER – для удаления.

Атрибуты учетной записи

Учетная запись имеет набор атрибутов, определяемых на стадии создания. Эти атрибуты:

  • Имя пользователя
  • Метод аутентификации
  • Табличное пространство по умолчанию
  • Ограничения на использование табличного пространства
  • Временное табличное пространство
  • Пользовательский профиль
  • Состояние учетной записи

Имя пользователя

Имя пользователя в пределах базы данных должно быть уникальным. Длина не должна превышать 30 символов. Имя может состоять из латинских букв, цифр, знака доллар ($) и знака подчеркивания (_). Имя пользователя не может быть зарезервированным словом. Если требуется создать пользователя с какими либо спец символами в имени, то это можно обойти заключив имя в двойные кавычки. Ниже это будет показано.

После того как учетная запись создана изменить ее имя нельзя. Для изменения придется создать новую, с требуемым именем и удалить старую. Огромная неприятность в случае удаления учетной записи, это то, что вместе с ней удаляются и все объекты принадлежащие этому пользователю.

В простейшем виде конструкция для создания пользователя выглядит так:

CREATE USER ALL_ORACLE IDENTIFIED BY qwerty;CREATE USER “ALL_ORACLE%” IDENTIFIED BY qwerty;

Ключевое слово IDENTIFIED BY указывает пароль пользователя и метод аутентификации пользователя – парольная.

Метод аутентификации

Различаются несколько методов аутентификации пользователей в Oracle: парольная, внешняя и глобальная.
Парольная аутентификация

При попытке пользователя подключится к базе данных с использованием парольной аутентификации, база данных проверят имя пользователя и пароль на совпадение с сохраненными в ней данными. Пароль пользователя хранится в словаре данных в зашифрованном виде.

CREATE USER ALL_ORACLE IDENTIFIED BY qwerty;

Это предложение создает учетную запись ALL_ORACLE, ключевое слово IDENTIFIED BY указывает метод авторизации – парольная и задает пароль пользователя. В нашем случае это qwerty.

Внешняя аутентификация
При внешней аутентификации, при попытке пользователя подключится к базе данных, она проверяет учетную запись пользователя, и доверяет операционной системе. Т.е. если операционная система пропустила пользователя, то база данных принимает его.

CREATE USER OPS$ALL_ORACLE_EXT IDENTIFIED EXTERNALLY;

Ключевое слово IDENTIFIED EXTERNALLY указывает базе данных на то, что учетная запись авторизуется внешне.

CREATE USER ALL_ORACLE_GLOBAL IDENTIFIED GLOBALLYAS 'CN=global, OU=tier1, O=security, C=US';

Глобальная учетная запись, это запись определенная посредством LDAP директории, и глобальная аутентификация подразумевает, что аутентификация пользователя проходит посредством LDAP.

Читайте также: