Установка ELMA4
Перед началом работы с системой ELMA4 установите и зарегистрируйте её.
Система поставляется в одной из редакций: Enterprise или Standard . Редакции отличаются вариантами лицензирования, поддерживаемыми функциями, перечнем СУБД и системных функций Windows.
Каждая редакция загружается из отдельного дистрибутива, который предоставляется при заключении лицензионного договора. Все редакции устанавливаются одинаково, за исключением особенностей использования СУБД.
Процесс установки состоит из нескольких шагов.
Для установки системы необходим установленный сервер IIS версии 7.0 и выше.
- Сразу после запуска установки нужно выбрать язык, который будет использоваться в процессе установки.
- В окне мастера установки ознакомьтесь с рекомендациями по установке и подтвердите её необходимость.
- Прочитайте лицензионное соглашение. Если вы согласны со всеми его пунктами, выберите Я принимаю условия соглашения . Обратите внимание, что продолжить установку можно только после принятия условий соглашения.
- Выберите папку, в которую будут скопированы файлы системы.
Рекомендуется использовать папку, установленную по умолчанию. Если всё-таки нужно изменить папку, то нажмите Обзор… и выберите новое место в файловой системе.
- Выберите компоненты, которые нужно установить: сервер, локальный Дизайнер или полная установка. По умолчанию производится полная установка — устанавливается сервер и локальный Дизайнер.
- На этом шаге проверяется соответствие системных требований (версии и редакции операционной системы, наличие пакета Microsoft .NET Framework версии не ниже 4.8 и веб-сервера IIS версии не ниже 7.0) выбранному варианту установки.
Если на компьютере нет пакета Microsoft .NET Framework 4.8 (или его версия ниже), или не настроен веб-сервер IIS, вы увидите уведомление об этом. Перейдите на следующий шаг, чтобы запустить мастер установки пакета Microsoft .NET Framework 4.8, и следуйте инструкциям мастера. Установка системы будет остановлена до полной загрузки данного пакета.
Веб-сервер IIS будет настроен автоматически. Если он не был настроен, вы увидите уведомление об этом. В таком случае нельзя продолжить установку системы. Настройте веб-сервер IIS вручную и запустите установку с самого начала. Подробнее о том, как установить веб-сервер IIS, можно прочитать в Базе знаний в статье «Настройка IIS под работу с системой ELMA».
- На этом шаге можно выбрать или создать конфигурации системы. Если у вас уже есть конфигурация ELMA4, то выберите Существующая конфигурация и укажите папку, в которой хранится файл configuration.config .
Чтобы создать новую конфигурацию, выберите Новая конфигурация и укажите папку, в которой будут хранится файлы конфигурации. Рекомендуется использовать папку по умолчанию UserConfig .
Если вы создаете новую конфигурацию, нужно выбрать Тип базы данных — СУБД, с которой будет работать система:
- для редакции ELMA Standard доступны СУБД PostgreSQL и Microsoft SQL Server;
- для редакции ELMA Enterprise доступны СУБД PostgreSQL, Microsoft SQL Server и Oracle.
- На этом шаге нужно настроить соединение с выбранным сервером СУБД. Для разных СУБД настройки будут отличаться.
СУБД PostgreSQL
Корректная работа ELMA4 возможна только при установленном сервере PostgreSQL версии 9.5 и выше.
Если PostgreSQL не установлен на вашем компьютере, то выберите Установить PostgreSQL и заполните следующие поля.
Укажите порт сервера PostgreSQL — укажите порт, который будет использоваться для подключения к серверу PostgreSQL. Порт должен быть свободен. По умолчанию — 5433.
Укажите имя базы данных — введите имя базы данных ELMA4 для работы с сервером PostgreSQL. Оно должно состоять из букв латинского алфавита и цифр и не может начинаться с цифры. База данных с этим именем будет создана автоматически. По умолчанию — ELMA4.
Имя пользователя — учетная запись пользователя для доступа к серверу PostgreSQL. По умолчанию в этом поле указано имя суперпользователя PostgreSQL — postgres . Это имя изменить нельзя.
Пароль — пароль для учетной записи суперпользователя PostgreSQL.
Если у вас уже есть установленный PostgreSQL, то выберите Использовать установленный PostgreSQL и заполните следующие поля.
Вы можете задать такие же настройки, как и при установке PostgreSQL.
Если вам нужно создать новую базу данных и указанный пользователь не обладает правами на это, установите флажок Указать имя системного пользователя и пароль . После этого можно ввести логин и пароль для суперпользователя базы данных.
Если используется уже установленный сервер PostgreSQL, установку системы можно выполнить с помощью одного из предложенных ниже вариантов:
Вариант 1 . Суперпользователь PostgreSQL вручную создаёт базу данных и выдает минимальные права доступа к этой базе данных.
- Вручную создайте пустую базу данных.
- Подключите расширение «uuid-ossp» к созданной ранее базе данных с помощью запроса create extension if not exists «uuid-ossp» .
- С помощью запроса в СУБД выдаются минимальные права пользователю базы данных:
GRANT ALL PRIVILEGES ON DATABASE «clean» to «elma»;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA «public» TO «elma»;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA «public» TO «elma»;
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA «public» TO «elma»;
ALTER DEFAULT PRIVILEGES IN SCHEMA «public» GRANT ALL PRIVILEGES ON TABLES TO «elma»;
ALTER DEFAULT PRIVILEGES IN SCHEMA «public» GRANT ALL PRIVILEGES ON SEQUENCES TO «elma»;
ALTER DEFAULT PRIVILEGES IN SCHEMA «public» GRANT ALL PRIVILEGES ON FUNCTIONS TO «elma»;
где clean — имя базы данных, elma — имя пользователя.
- В полях Имя пользователя и Пароль укажите учётную запись и пароль пользователя с минимальными правами к базе данных.
Вариант 2 . Система сама создаёт базу данных, которой еще нет в СУБД, и выдает минимальные права доступа к ней.
- Установите флажок Указать имя системного пользователя и пароль , в полях Имя пользователя sys и Пароль пользователя sys укажите учётную запись и пароль суперпользователя PostgreSQL.
- В полях Имя пользователя и Пароль укажите учётную запись и пароль пользователя, для которого в дальнейшем системой будут выданы минимальные права доступа к базе данных.
В целях безопасности после запуска сервера данные полей Имя пользователя sys и Пароль пользователя sys можно будет удалить из файла конфигурации, который располагается в папке . //UserConfig/Configuration.config .
СУБД MS SQL Server
Чтобы настроить соединение с СУБД MS SQL Server, заполните следующие поля.
Укажите имя сервера MSSQL для подключения — укажите имя сервера MS SQL, на котором будут храниться базы данных ELMA4. По умолчанию выбрано значение (local) . Это локальный сервер MS SQL, который располагается на компьютере с устанавливаемой системой.
Укажите имя базы данных — задайте базу данных сервера MS SQL для работы с ELMA4. Если вы укажете базу данных, которой еще нет в системе, она будет создана автоматически.
По умолчанию установлен флажок Использовать сквозную авторизацию Windows . Эта настройка позволяет задать автоматическую авторизацию в ELMA4 при успешной авторизации в корпоративном домене. При этом доступ на MS SQL Server будет осуществляться от имени пользователя, который запустил веб-сервер ELMA4.
Если вы не хотите настраивать сквозную авторизацию, снимите флажок. После этого требуется указать данные учетной записи пользователя, от имени которого сервер ELMA4 будет осуществлять доступ к серверу MS SQL. Этот пользователь должен обладать правами администратора в MS SQL Server.
Вы можете проверить соединение с сервером MS SQL, нажав кнопку Проверить соединение .
СУБД Oracle
При выборе СУБД Oracle нужно указать адрес сервера, а также логин и пароль пользователя для подключения к серверу в виде строки подключения.
Имя пользователя должно начинаться с префикса c## .
Пример строки подключения к серверу Oracle:
Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)
(HOST=185.59.128.67)(PORT=1521))(CONNECT_DATA=(SID=ORATEST)));
User Id=c ## dmp040215;Password=q1234567;Enlist= false
PROTOCOL=tcp — протокол подключения.
HOST=185.59.128.67 — имя или IP-адрес виртуальной машины.
PORT=1521 — стандартный порт для подключения к Oracle.
SID=ORATEST — системный идентификатор базы данных.
User > — учетная запись пользователя для доступа к базе данных.
Password=q1234567 — пароль для учетной записи пользователя базы данных.
Enlist=false — запрет открытия нескольких транзакций.
Также вы можете указать имя и пароль суперпользователя Oracle.
Установка ELMA4 на сервер Oracle может быть выполнена с помощью одного из предложенных ниже вариантов:
Вариант 1 . Суперпользователь Oracle вручную создаёт базу данных и выдаёт минимальные права доступа к ней.
- Вручную создайте пустую базу данных.
- С помощью запроса в СУБД создайте пользователя, которому выдаются минимальные права к базе данных:
create user c## login identified by password;
GRANT
CONNECT,
CREATE TABLE,
CREATE PROCEDURE,
UNLIMITED TABLESPACE,
CREATE SEQUENCE,
CREATE SESSION,
CREATE TRIGGER,
CREATE TYPE,
CREATE VIEW
TO c## login;
GRANT SELECT ON «SYS» .»GV_$RESERVED_WORDS» TO c## login;
GRANT SELECT ON «SYS» .»V_$RESERVED_WORDS» TO c## login;
- В поле Строка подключения к серверу Oracle укажите учетную запись и пароль пользователя с минимальными правами к базе данных.
Вариант 2 . Система сама создаёт базу данных, которой еще нет в СУБД, и выдает минимальные права доступа к ней.
- В полях Имя пользователя sys и Пароль пользователя sys укажите учетную запись и пароль суперпользователя Oracle.
- В поле Строка подключения к серверу Oracle укажите учетную запись и пароль пользователя, для которого будут выданы минимальные права доступа к базе данных.
- В целях безопасности после запуска сервера данные полей Имя пользователя sys и Пароль пользователя sys можно будет удалить из файла конфигурации, который располагается в папке . //UserConfig/Configuration.config .
- Настройте веб-сервер для запуска ELMA4. Для этого заполните следующие поля.
Порт веб-сайта — укажите порт, через который будет осуществляться соединение с веб-сервером ELMA4. Если он занят, нужно заменить его на другой. По умолчанию используется порт 8000.
Имя веб-сайта — название веб-сервера ELMA4 в службе IIS.
Удостоверение для пула веб-приложений — имя служебной учетной записи, от имени которой будет выполняться запуск рабочего процесса пула приложений, указанного в поле Пул веб-приложений :
- Система (LocalSystem) — учетная запись с правами доступа локального администратора, входящая в группу Администраторы на веб-сервере. Эта учетная запись выбрана по умолчанию. Рекомендуется использовать её.
- Сервис (LocalService) — учетная запись с минимальным набором прав доступа для запуска веб-приложений сервера IIS. Не рекомендуется использовать эту учетную запись.
- Сетевой сервис (NetworkService) — учетная запись с минимальным набором прав доступа для запуска веб-приложений сервера IIS. Не рекомендуется использовать эту учетную запись.
- Пул приложений (ApplicationPoolIdentity) — учетная запись удостоверения пула приложений, которая создается динамически при запуске пула приложений. Не рекомендуется использовать эту учетную запись.
- Пользователь — учетная запись определенного пользователя. Если вы выбрали этот вариант, укажите имя и пароль пользователя. При этом рекомендуется указать пользователя Windows с правами администратора на том компьютере, на который устанавливается система ELMA4.
- На этом шаге можно настроить Orleans при работе с веб-фермами. Это обеспечивает корректную работу некоторых подсистем, которые должны работать согласованно на нескольких узлах. Например, некоторые задачи планировщика, публикации объектов, процессов и т. д.
Для настройки Orleans на определённом узле установите флажок Настроить параметры сервера Orleans . После этого отобразятся следующие поля:
IP-адрес — IP-адрес или имя сервера, которые будут опубликованы для нахождения определённого узла Orleans другими узлами.
Также требуется указать два порта Orleans, чтобы другие узлы по этим данным могли обратиться к текущему узлу: Порт для внутренних сообщений и Порт для подключения клиентов .
Порты по адресу должны быть доступны в сети, где расположены сервера ELMA4. Указанные порты требуется добавить в исключения.
- На этом шаге можно указать, нужно ли добавлять ярлыки установленных программ на рабочий стол.
- Проверьте параметры установки, выбранные ранее. Если нужно внести изменения, то вернитесь на нужный шаг и измените параметры. Теперь можно запускать установку, для этого нажмите кнопку Установить .
- Мастер установки ELMA4 копирует файлы на ваш компьютер.
Процесс установки может быть долгим, дождитесь его окончания.
- Для завершения установки системы и её корректной работы может потребоваться перезагрузка компьютера. Выберите один из вариантов перезагрузки и нажмите Завершить . Этот шаг отображается, если был установлен пакет Microsoft .NET Framework 4.8 или веб-сервер IIS.
- На этом шаге отображается информация о результатах установки системы. Чтобы запустить локальный Дизайнер, установите флажок Запустить дизайнер и нажмите кнопку Завершить .
Нашли опечатку? Выделите текст, нажмите ctrl + enter и оповестите нас
Как определить порт подключения в базе oracle через сессию?
К базе подключаются локальные пользователи по порту 1521, а внешние по порту 15215. Как можно по данным сессии определить какое это подключение локальное или внешнее?
- Вопрос задан более трёх лет назад
- 1548 просмотров
Комментировать
Решения вопроса 1
gadpaw @gadpaw Автор вопроса
Получается что нет такой информации.
«You cannot get the port — the port is not necessarily known to the database.»
Ответ написан более трёх лет назад
Сейчас нет под рукой БД. Но посмотрите что в
select port, terminal, machine, username from v$session;
gadpaw @gadpaw Автор вопроса
port — это порт клиента
gadpaw @gadpaw Автор вопроса
по ip адресу клиента можно определить локальный клиент или внешний
Ответы на вопрос 0
Ваш ответ на вопрос
Войдите, чтобы написать ответ
- Oracle
Как посчитать количество записей при ограничении по id и дате?
- 1 подписчик
- 31 окт.
- 66 просмотров
Настройка и управление сети Oracle
Сеть это неотъемлемая часть клиент-серверной архитектуры, которая является фундаментальное составляющей всех современных баз данных. У БД Oracle была возможность для клиент-серверных вычислений с самого начала (версия 1, выпущенная в 1978 году использовала разделение между кодом Oracle и пользовательским кодом), но только в версии 4 в 1984 году Oracle представила разделение между компьютером пользователя и сервером. Настоящая поддержка клиент-серверной архитектуры наступила с версией 5 в 1986 году. В это главе мы рассмотрим сервис Oracle Net, который раньше назывался Sqlnet и некоторые DBA до сих пор используют это название.
По умолчанию Oracle Net настроена как выделенный сервер (dedicated server). В такой конфигурации каждому пользовательскому процессу, подключенному к БД, будет создаваться свой серверный процесс. Альтернативой этой конфигурации является конфигурация разделяемого сервера (shared server), где все пользовательские процессы используют фиксированный набор серверных процессов, разделяемых между пользовательскими сессиями. DBA неохотно используют shared server архитектуру, однако знание это конфигурации необходимо.
Oracle Net – это технология позволяющая использовать клиент-серверную архитектуру Oracle. Это механизм для установки сессии с экземпляром БД. Существует несколько программ, которые могут быть использованы для настройки и управления Oracle Net, хотя можно настроить всё используя только текстовый редактор. Каким бы инструментом вы не пользовались, результатом всё равно будет набор файлов, которые управляет процессом запуска сессий listener-ом при получении пользовательского запроса и определяет каким-образом пользовательскией процесс находит listener.
Oracle Net и клиент-серверная парадигма
Пользователя и базу данных разделяет множество уровней. В окружении Oracle ни пользователи не имеют прямого доступа к базе данных, ни пользовательские процессы. Клиент-серверная архитектура гарантирует что любой доступ к БД контролируется сервером.
Пользователь взаимодействует с пользовательским процесс: это приложение которое запущено на локальной машине. Например Microsoft Acces и ODBC Driver, либо приложение написанное на C и использующее OCI библиотеки или SQL *Plus. Какое бы это ни были приложение, назначение пользовательского процесса одинаковое – позволить пользователю вводить информацию, которую приложение может использовать для генерации SQL запросов. В случае SQL *Plus пользовательский процесс будет просто ждать ввода запроса — более продвинутые инструменты могут отображать свойства объектов БД, генерировать и валидировать SQL команды, в любом случае будет сформирован SQL запрос, который передаётся серверному процессу.
Серверный процесс работает на сервере базы данных и выполняет запросы, полученные от пользовательского процесса. Это базовое клиент-серверное разделение: пользовательский процесс создаёт SQL, серверный процесс выполняет. Выполнение SQL запроса происходит в четыре этапа: разбор (parse), связывание (bind), выполнение (execute) и выборка(fetch). На этапе разбора сервер определяет валиден ли запрос, какие объекты используются и как выполнить запрос максимально быстро. Разбор использует shared pool: стурктуры памями используются для преобразования SQL в исполняемый код. На этапе связсывания – все переменные преобразуются в литералы. Этап выполнения будет использовать SGA и возможно саму базы данных. Во время выполнения данные в буфере кэша будет считываться или обновляться, изменения записываться в буфер логов, и если необходимых блоков нету в буфере серверный процесс считает их из файлов данных. Это единственный момент времени при выполнении запроса когда используется сама база данных. И, наконец, на этапе выборки серверный процесс отправит результирующий набор данных полученный в результате выполнения запроса назад пользовательскому процессу, и пользовательский процесс преобразует результат для отображения.
Oracle net предоставляет механизм для запуска серверного процесса, который будет выполнять код от имени пользовательского процесса. Этот механизм называют установкой сессии. Также Oracle Net используется для поддержки сессий: передачу SQL запросов от пользовательского процесса к серверному, и получение результатов выполнения запросов от сервеного процесса к пользовательскому.
На рисунке 4-1 отображены компоненты сессии. Пользователь взаимодействует с пользовательским процессом, пользовательский процесс в свою очередь взаимодействует с серверным процессом используя Oracle Net; серверный процесс работает с экземпляром БД и экземпляр при помощи фоновых процессов работает с базой данных. Клиен-серверное разделение осуществляется между пользовательским процессом создающим SQL запросы и серверным процессом выполняющим их. Это разделение обычно будет и физическим, так же как логическим: обычно серверные и клиентские машины соединены с помощью локальной сети, так же они могут соединяться с помощью сети интернет или вообще работать на одной физической машине. Oracle Net отвечает за установку соединения (создание сессии) и все взаимодействие между серверным и пользовательским процессом.
Установка соединения (создание сессии)
Когда пользователь хочет подключиться к БД используется команда вида
Конечно если используется инструмент с графическим интерфейсом вы не будете писать такую команду, ваше приложение просто спросит все необходимые данные для подключения и команда будет сгенерирована пользовательским процессом. Разберём эту команду. Вначале идёт имя базы данных (STORE) и пароль (ADMIN123) разделённые символом “/”. Затем идёт символ “@” после которого строка подключения “ORCL11G”. Символ “@” является идентификатором для пользовательской сессии указывающим что сетевое подключение необходимо. Если пропустить этот символ и не указывать строку подключения, тогда пользовательский процесс преполагает что экземпляр к которому вы хотите подключиться запущен на локальной машине и он всегда доступен с помощью IPC протокола. Если символ “@” и строка подключения указаны, тогда пользовательский процесс будет использовать сетевое подключение для работы с удаленной машины – хотя фактически, сервер может быть той же локальной машиной и вы будете посылать запрос и принимать одной и той же сетевой картой локальной машины.
Подключение к локальному экземпляру
Даже когда вы подключаетесь к экземпляру работающему на локальной машине, вы всё равно используете Oracle Net. Все сессии используют сетевой протокол для разделения пользовательского когда от серверного, но для локального подключения этим протоколом будет IPC: это протокол предоставляемый операционной системой который пользоляет «общаться» процессам работающим на одной машине. Это единственный вид подключения который не требудет listener-а; более того, локальное подключение не требует никакой настройки. Единственная информация которая нужна пользовательскому процессу для подключения, это к какому экземпляру БД вы хотите подключиться. Нужно помнить что могут работать несколько экземпляров на одном компьютере. Эту инфомрацию процесс получает из системных переменных. На рисунке 4-3 показан пример подключения в системе Linux, а на рисунке 4-3 отображено как подключиться к локальной базе данных в Windows
Единственным отличием будет метод установки системных переменных.
Определение имени (Name resolution)
Когда происходит попытка подключения используя Oracle Net, первым делом необходимо определить куда конкретно вы хотите подключиться. Это процесс определения имени. Если команда CONNECT содержит строку подключения “@orcl11g”, Oracle Net необходимо понять что значит “orcl11g”. Строка должна быть преобразована в определённую информацию: протокол, который будет использоваться (предположим TCP), IP адресс на котором запущен listener, порт используемый listener-ом и имя экзкмпляра БД к которому вы хотите подключиться. Можно использовать разные строки подключения: к примеру вместо IP адреса в строке подключения может указываться имя хоста, которое затем определяется в IP адресс используя DNS сервер. Вместо указания имени экземпляра может быть указано имя сервиса, которое (в RAC архитектуре) может обслуживать несколько экземпляров. В single-instance архитектуре тоже могут использоваться сервисы – к примеру для отслеживания нагрузки на базу данных разными группами пользователей. Вы можете насторить разные механизмы выделения адреса сервера и имени экземпляра из строки подключения, но так или иначи процесс определения имени должен давать пользовательскому процессе достаточно информации для нахождения listener-а и создания запроса к экземпляру.
Запуск серверного процесса
Listener базы данных, работающий на сервере, использует один или несколько протоколов для мониторинга одного или нескольких портов на одном или нескольких сетевых интерфейсах в ожидании входящих запросов на подключение. Вы можете запустить несколько listener-ов на одном сервере, а также один listener может принимать запросы на подключение для нескольких экзмепляров. Когда listener получает запрос на подключение, вначале он должен проверить доступен ли запрашиваемый экземпляр. Если экземпляр доступен, listener запустит сервеный процесс для обслуживания пользовательского процесса. Таким образом, если к вашей базе данных подключено одновременно тысяча пользователей – на сервере будет работать тысяча серверных процессов. Такая конфигурация называется архитектура выделенного сервера (dedicated server architecture). Существует возможность использования другой конфигурации, когда пользовательские сессии обслуживаются выделенным процессом диспетчером (dispatcher process), но серверные процессы разделяются между пользовательскими сессиями. Эта архитектура называется общий сервер (shared server).
При использовании TCP протокола, каждому серверному процессу запущенному listener-ом присваивается уникальный номер TCP порта. Это значение устанавливается во время запуска процесса согласно алгоритму маппинга портов вашей операционной системы. Номер порта возващается пользовательской сессии и теперь пользоватеский процесс может работать напрямую с выделенным ему серверным процессом. На этом этапе listener заканчивает свою работу и ожидает других запросов на подключение. Таким образом если listener не запущен – то вы не сможете установить подключение, однако существующие подключения могут продолжать работу.
Создание listener-а
Listener определяется в файле listener.ora который по умолчанию находится в папке ORACLE_HOME/network/admin. Как минимум файл listener.ora должен содержать информацию об одном listener-e, включая имя listener-а, протокол и адресс. Вы можете настроить несколько listener-ов в одном файле, однако все они должны иметь уникальное имя и адресс.
Как идругие файлы для настройки Oracle Net, файл listener.ora очень привередливый к синтаксису. Важны регистр букв, количество пробелов и аббревиатуры. Поэтому многие DBA не любят редактировать файл самостоятельно (несмотря на то что ничего не мешает это делать вручную). Oracle предоставляет три программы для управления Oracle Net: это Enterprise Manager, Net Manager и Net Configuration Assistant. Оба последних написаны на Java. Функционал этих программ сильно пересекается, однако есть некоторые вещи, которые можно сделать в одной программе, но нельзя в другой и наоборот.
Ниже представлен пример файла listener.ora
LISTENER =
(ADDRESS = (PROTOCOL = TCP)(HOST = jwlnx1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1522))
(ADDRESS = (PROTOCOL = TCP)(HOST = jwlnx1.bplc.co.za)(PORT = 1522))
В первой секции описан listener с именем LISTENER, который использует локальное имя хоста на порту по умолчанию, 1521. Во второй секции определён второй listener с именем LIST2. Он мониторит порт 1522 также на локальном имене хоста и адресе замыкания (loopback/127.0.0.1).
Для создания listener-а всё что нужно сделать это добавить запись в файл listener.ora и запустить его выполнив команду lsnrctl. В ОС Windows listener будет работать как сервис, но нет нужды создавать его вручную. Он будет создан при первом запуске listener-а. Затем вы можете запускать и останавливать его как обычный сервис windows.
На рисунке 4-4 показана настройка listener-а LIST2 используя Net Manager, а на рисунке 4-5 тот же listener в окне Net Configuration Assistant.
В Net Manager вы можете настроить несколько адресов для мониторинга, а в Net Configuration Assistant нет: он работает только с локальным именем хоста.
Регистрация БД
Listener должен создать серверный процесс для экземпляра БД. Для этого listener должен знать какие экземпляры доступны на компьютере где он запущен. Listener находит информацию об экземплярах в процессе «регистрации». Используя single-instance архитектуру – listener и экземпляр должны быть запущены на одной машине. RAC пользоляет любому listener-у подключаться к любому instanсe в кластере.
Существует два метода регистрации экземпляров БД: статическая и динамическая регистрация. Для статической регистрации вы пишете список эезмепляров в файле listener.ora. Динамическая регистрация обозначает что экземпляр во время запуска, находит listener и регистрируется сам.
Статическая регистрация
Использование динамической регистрации предпочтительно, однако может возникнуть ситуация когда вам придёстя использовать статическую. Динамическая регистрация появилась с версии 8i, и если вам надо настроить listener для подключения к таким БД, то вам придётся регистрировать их статически. Также некоторые приложения требуют статическую регистрацию, в основном приложения для управления. Для статической регистрации экземпляра необходимо создать соответствующую запись в файле listener.ora.
В данном примере запись SID_LIST_LIST2 позволит listener-у с именем LIST2 принимать запросы на подключения к экземпляру с именем ocp11g. Это не значит что instance работает или даже существует. Значение ORACLE_HOME необходима только если listener запускается из домашней директории Oracle отличной от экземпляра. Этот путь используется для поиска исполняемого файла который выполняется для запуска серверного процесса. Обычно это используется при настройке listener-а дял разных версий Oracle, установленных в разные домашние директории.
Динамическая регистрация
Этот метод регистрации является предпочтительным, когда экземпляр регистрирует себя у listener-а. Инилизационный параметр local_listener указывает экземпляру на сетевой адресс который необходимо использовать для поиска и регистрации у listener-а. Во время запуска экземпляра, процесс PMON использует данный параметр для поиска listener-а и информирует его о имени экземпляра и сервисе(ах) которые запускает экземпляр. Имя экземпляра определено в параметре instance_name, а параметр service_names при остутствии значения составляется из параметров instance_name и db_domain (db_domain по умолчанию пустое значение). Возможно создавать и запускать дополнительные сервисы в любое время как изменяя значение параметра service_name (перечисляя через запятую) либо используя пакет DBMS_SERVICE.
Любые изменения должны быть зарегистрированы. Если этого не сделать то listener не будет знать что доступен новый сервис, и не сможет установить соединение. Процесс PMON регистрирует изменения автоматически один раз в минуты, но вы в любое время можете запустить процесс регистрации выполнив команду ALTER SYSTEM REGISTER;
Динамическая регистрации предпочтительнее, так как она позволяет быть увереным что только запущенные экземпляры и доступные сервис зарегистрированы у listener-а и нет ошибок в именах. Очень легко допустить ошибку если вы к примеру редактируете файл listener.ora вручную. Также когда экземпляр останавливается, он автоматически отменить регистрацию.
Начиная с версии 9i динамическая регистрация может не требовать конфигурации совсем, если ваш listener работает используя порт по умолчанию (1521). Все экезмпляры автоматически пытаются найти listener на локальной машине используя порт по умолчанию и в случае успеха – зарегистрироваться у этого listener-а. Если listener не доступен на локальной машине используя порт по умолчанию, вы должны установить где находится listener и перерегистрироваться. Например:
alster system set local_listener=list2;
alter system register;
В данном примере listener указывается используя имя. Это имя необходимо преобразовать в адресс и порт. Однако можно использовать сразу настройки в значении параметра. Например
alter system set local_listener='(address=(protocol=tcp)(host=127.0.0.1)(port=1522))’;
Использование такого значения допускается, однако лучше всё-таки использовать имя, которое настраивается в файле: так как появляется уровень абстракции между именем и физическим адресом. Если адресс listener-а изменится, вы должны сделать изменения в одном месте, а не менять параметры в каждом экземпляре использующим этот listener.
Методы определения имени
Вначале главы мы использовали строку подключения для установления сессии. Эта строка преобразуется в адресс машины где запущен listener и имя экземпляра или сервиса. При динамической регистрации логическое имя listener-а тоже преобразуется в сетевой адресс для регистрации. Доступно четыре метода для преобразования имени: easy connect, local naming, directory naming и external naming. Большинство установок использует local naming, но для сложной и большой системы предпочтительно использовать directory naming.
Easy connect
Метод easy connect был представлен в версии 10g. Его очень использовать – он не требует настройки. Но доступен при использовании только одного протокола: TCP. Остальные методы могут работать с любыми поддеживаемыми протоколами. Easy connect не может использовать дополнительные возможности Oracle Net, такие как балансировка нагрузки или поддержка сетевой маршрутизации. Этот метод часто используется DBA но для пользователей он не сильно удобен. Пример подключения
В этом примере пользовательский процесс использя TCP протокол подключится к порту 1522 по IP адрессу определённому из имени хоста. Если listener запущен на этом порту этого сервера – пользовательский процесс запроси listener создать серверный процесс на instance ocp11g. Можно ещё упростить эту команду
connect store/admin123@ jwlnxl.bplc.co
Такая команда сработает только если listener запущен на порту 1521 и имя сервиса совпадает с именем хоста jwlnxl.bplc.co
Local Naming
Используя эту технику пользователь использует псевдоним (Oracle Net service alias) в строке подключения, а псевдоним преобразуется в сетевой адресс, протокол, сервис или имя экземпляра с помощью локального файла. Этот файл и есть пресловутый tnsnames.ora, который доставил много горя DBA. Рассмотрим пример файла tnsnames.ora
(ADDRESS = (PROTOCOL = TCP)(HOST = jwlnx1.bplc.co.za)(PORT = 1522))
(ADDRESS = (PROTOCOL = TCP)(HOST = serv2.bplc.co.za)(PORT = 1521))
Этот файл содержит два Oracle Net Service alias: ocp11g и test. Эти псевдоним и есть то, что будут использовать пользователи в строке подключения. Первый псевдоним ocp11g указывает на то, что если в строке подключения найдено «@ocp11g», то пользовательский процесс по протоколу TCP, порту 1522 подключится к машине jwlnx1.bplc.co.za и попросит listener создать сессию для экземпляра с названием сервиса ocp11g. Второй алиас test направит пользовательские процессы по другому адресу, порту и сессии будут создаваться для экземпляра testdb.
Метод local naming поддерживает все протоколы и возможность Oracle Net, но управление файлами tnsnames.ora на клиентских машинах может быть задачей, занимающей очень много времени. Также tnsnames.ora файл очень чувствителен к ошибкам синтаксиса. Использование графических программ поможет избегать этих ошибок.
Directory Naming и External Naming
Метод Directory Naming направляет пользовательскую сессию к серверу LDAP для определения псевдонима. LDAP – это широко распространённый стандарт, которого придерживается Oracle и другие производители ПО. Для использования directory naming метода, вначале вам нужно установить и настроить LDAP сервер на каком либо сервере в вашей сети. Oracle предоставляет LDAP сервер ( Oracle Internet Directory) как часть Oracle Application Server, но необязательно использовать именно его. Если у вас уже есть установленный и настроенный к примеру сервер с Microsoft Active Directory – вы можете использовать его.
Как и local naming, метод directory naming поддерживает все возможности Oracle Net – но вместо поддержки файлов tnsnames.ora разбросанных по всей сети, используется централизованное хранилище, что несомненно гораздо легче сопровождать.
External Naming отличается от directory naming только тем, что использует отдельный сервис вместо LDAP – Sun Network Information Services (NIS+) или Cell Directory Services (CDS).
Программа управления listener-ом
Можно запускать и останавливать listener через Database Control, но существует так же консольная программа lsnrctl (или lsnrctl.exe в Windows). Утилита lsnrctl может запускаться через командную строку ОС или через простой графический интерфейс. Для всех команд вы должны указать имя listener-а, если не используется имя по умолчанию LISTENER. На рисунках 4-6 и 4-7 показано как проверить статус listener-а, запустить и остановить его путём вызова команд из командной строки операционной системы или с помощью графического интерфейса.
Необходимо отметить что комнда status всегда отображает адрес по которому listener принимает запросы на подключение, а также имя и местонахождение файла listener.ora, в котором прописан listener и имя и местонахождение файлов логов listenera. На рисунках ниже также видно что listener LIST2 “supports no services”. Это отображается так как не было статически зарегистрировано сервисов и ни один экземпляр БД ещё не зарегистрировался динамически для этого listener-а. На рисунке 4-8 отображено состояние listener-а после динамической регистрации экземпляра БД.
На рисунке 4-8 результат выполнения команды status показывает нам, что listener с именем LISTENER поддерживает три сервиса, доступных для экземпляра БД orc11g:
- Сервис orcl11g.jwlnx1.bplc.co.za это обычный сервис БД. Listener может запустить выделенную серверную сессию для работы (ещё ни одной сессии не создано)
- Сервис orcl11gXDB.jwlnx1.bplc.co.za – это сервис для работы с БД основанный на XML. Данный сервис позволяет подключаться к БД используя протоколы отличные от Oracle Net, к примеру FTP и HTTP
- Сервис orcl11g_XPT.jwlnx1.bplc.co.za – это сервис для работы Dataguard.
По умолчанию экземпляры БД версии 11g регистрируют сервисы XDP и XDT, но они не могут использоваться без дополнительной настройки. Эти сервисы отображаются как “status ready” и это обозначает что они были автоматически зарегистрированы процессом PMON: listener знает что они доступны так как PMON при динамической регистрации указал это. Если бы сервисы были зарегистрированы статически, они бы отображались со статусом “status unknown”. Т.е. сервисы прописаны в файле listener.ora, но могут быть не запущены.
Для просмотра всех доступных команд программы lsnrctl используйте команду HELP
Назначение команд описано ниже
- START запуск listener-а
- STOP остановка listener-а
- STATUS просмотр состояния listener-а
- SERVICES отобразить сервисы доступны listener-у (более детальная информация чем в команде STATUS)
- VERSION отобразить версию listener-а
- RELOAD перечитать файл ora
- SAVE_CONFIG сохранить изменения в файл listener.ora
- TRACE разрешить трассировку деятельности listener-а
- CHANGE_PASSWORD установить пароль для администрирования listener-а
- QUIT выйти из программы без сохранения
- EXIT выйти из программы сохранив изменения
- SET установить значения параметров, таки как примеру время ожидания ответа
- SHOW отобразить значения установленных параметров
Настройка псевдонимов сервисов (alias)
Выбрав метод определения имени, следующей задачей становится настройка клиентских программ для использования этого метода. Вы можете использовать Database Control, но так как это серверный процесс – вы сможете настроить только программы, которые будут запускаться на том же сервере что и БД. Для настройки можно использовать Net Manager. Это отдельное приложение написанное на языке Java, поставляемое Oracle со всеми клиентскими программами.
Для запуска приложения в среде Unix запустите команду netmgr. В Windows вы можете найти эту программу в меню Пуск.
В дереве навигации доступны три ветки. Ветка Profile используется для установки параметров, которые могут применяться и на серверной и на клиентской стороне Oracle Net и которые могут влиять на поведение все сессий. Ветка Service naming используется для настройки определения имени на клиентской стороне, и ветка Listeners используется для настройки listener-ов БД.
Когда вы выбираете ветку Profile как показано на рисунке 4-9, фактически вы работаете с файлов sqlnet.ora. Этот файл создаётся по умолчанию в папке ORACLE_HOME/network/admin. Он не обязателен, так как для всех параметров доступны значения по умолчанию, но обычно вы будете использовать эту ветку для указания метода определения имени.
Выбрав ветку Profile, вы увидите доступные методы определения имени и три (TNSNAMES, EZCONNECT и HOSTNAME) выбраны по умолчанию: это и есть local naming, easy connect и host naming. External naming указаны как CDS и NIS. LDAP – это directory naming. Host naming это эквивалент Easy Connect и он существует только для обратной совместимости.
Затем вы должны настроить псевдонимы сервисов Oracle Net. Это можно сделать в ветке Service Naming, что фактически создает или изменяет файл tnsnames.ora (по умолчанию местонахождения файла ORACLE_HOME/network/admin). Если у вас настроен метод Directory Naming тогда вам не нужно редактировать ветку Service Naming – достаточно выбрать LDAP в ветке Profile. Пример записи в файле tnsnames.ora показан ниже
(ADDRESS = (PROTOCOL = TCP)(HOST = jwacer.bplc.co.za)(PORT = 1521)
Если пользователь использует “ocp11g” в строке подключения то эта запись используется для отсылки запроса к listener-у по адресу jwacer.bplc.co.za на порт 1521 для создания сессии к экземпляру доступному через сервис ocp11g. Для подключения с помощью этого псведонима достаточно выполнить команду
Используя Easy Connect команда выглядела бы
sqlplus system/manager@ jwacer.bplc.co.za:1521/ocp11g
Для проверки строки подключения можно использовать команду TNSPING. Эта программа принимает строку подключения как параметр, находит файлы Oracle Net, преобразует строку подключения и отправляет запрос к listener-у. Если listener запущен и запрашиваемый сервис зарегистрирован – программа отобразит упешный результат теста. Ниже показан пример работы программы TNSPING
Обратите внимание что результатом команды является имя использованного файла sqlnet.ora, имя метода определения имени и сведения о адресе и порте используемого для теста. Этот инструмент проверяет только listener, т.е. экземпляр может и не быть запущенным.
Имена файлов и системная переменная TNSADMIN
Используется три важных файла для настройки Oracle Net:
- listener.ora файл на стороне сервера, определяющий listener-ы БД. Влючает в себя сведения о протоколе, адресах и портах, используемых listener-ом для ожидания запросов на подключения. А также может содержать информацию о статических зарегистрированных экземплярах БД.
- tnsnames.ora – файл со стороны клиента используемый для определения имени. Используется пользовательским процессом для нахождения listener-ов БД.Также может быть использован самим экземпляром БД для нахождения listener-ов для динамической регистрации.
- sqlnet.ora – файл необязательный, может существовать (и даже с разными значениями) как на клиентской, так и на серверной стороне. Содержит настройки которые могут применяться ко всем сессиям к listener-ам, такие как настройки безопасности и шифрования.
Все три файла по умолчанию находятся в папке ORACLE_HOME/network/admin. Можно изменить путь к ним с помощью системной переменной: TNS_ADMIN. Эта переменная часто используется если сущуствует несколько домашних директорий Oracle. У обычного сервера Oracle будет как минимум три домашних директории Oracle: одна для Enterprise Manager Grid Control Agent, одна для запуска экземпляров и одна для запуска экземпляров ASM (Automatic Storage Management). На клиентских машинах также может быть несколько домашних директорий Oracle, например для клиентов Oracle 10g и Oracle 11g. Установка переменной TNS_ADMIN как указатель на папку одной из домашних директорий (или вообще внешнюю папку) означает, что вам, вместо того чтобы настраивать файлы в двух разных папках, можно будет настраивать файлы в одной папке. Чтобы установить эту переменную в Windows для какой-либо сессии вы можете выполнить команду
Но лучше устанавливать значение этой переменной в регистре.
В Unix и Linux синтаксис может отличаться в зависимости от исползуемой оболочки, но обычно выглядит примерно так
set TNS_ADMIN=/u01/oracle/net; export TNS_ADMIN
Эту команду можно добавить в файл профила каждого пользователя, или в /etc/profile для всех пользователей.
На рисунке 4-10 показан процесс обработки пользовательского запроса. Пользователь инициирует создание подключения к серверу указывая имя пользователя, пароль и строку подключения. Если строка подключения отсутствует, клиент Oracle Net пробует использовать системную переменную ORACLE_SID как значение для строки подключения по умолчанию. Если это значение не установлено – обычно происходит ошибка. Если строка подключения указала, клиент Oracle Net пробует выяснить какой метод использовать дря преобразования строки подключения и для этого необходим файл sqlnet.ora, который может находиться в папке определённой в TNS_ADMIN переменной или ORACLE_HOME/network/admin. Если не установлены ни TNS_ADMIN ни ORACLE_HOME – возвращается ошибка.
Обычно в файле sqlnet.ora находится параметр NAMES.DIRECTORY_PATH, в которой перечислены в порядке предпочтения различные методы определения имени, такие как TNSNAMES, LDAP и EZCONNECT. Если TNSNAMES в списке указан первым, Oracle Net пробует найти файл tnsnames.ora опять же либо в директории указанной в переменной TNS_ADMIN либо в ORACLE_HOME/network/admin. Если файл найден, он используется для преобразования строки подключения в сетевой адрес обычно вида имя хоста:порт:sid или хоста:порт:имя сервиса.
Наконец клиент Oracle Net готов к установке соединения для пользовательского процесса который ициниировал запрос на подключение к БД. Если в строке подключения присутствует символ “@”, тогда происходит запрос к listener-у указанному в сетевом адресе для проверки доступа к экземпляру или сервису. Если listener работа – пользовательский процесс пробует установить соединение с сервером иначе повзращается ошибка. Если в строке подключения нет символа “@” — тогда происходит попытка создать локальное подключение используя протокол IPC и если экземпляр или сервис запущены на той же машине, что и клиентский пользовательский процесс соединение может быть успешно установлено.
Ссылки базы данных
Oracle Net используется для взаимодействия между пользователями и базой данных. Также Oracle Net может использоваться для взаимодействия БД между собой: пользовательская сессия подключенная к одной базе данных может выполнять SQL запросы к другой БД. Это осуществляется с помощью ссылок БД. Существует несколько вариантов для создания ссылок (все связаны с безопасностью), и простым примером является команда
create database link prodstore connect to store identified by admin123 using ‘prod’;
Эта команда создаёт ссылку из текущей БД к удалённой базе данных определяему строкой подключения PROD. Ссылка доступна и может быть использована только для схемы текущего пользователя. Когда будет выполнена команда
select * from orders@prodstore;
Пользовательская сессия попробует создать сессию к удалённой БД, используя имя пользователя STORE и выполнить запрос на удалённом сервере. Результат затем будет возвращён к текущей БД и затем пользователю.
Любые SQL запросы могут быть выполнены используя ссылки БД, если конечно есть соответствующие привилегии доступа. Например рассмотрим такой сценарий:
У вас есть рабочая БД определённая строкой подключения PROD, в которой находится схема STORE содержащая две таблицы: ORDERS и PRODUCTS. Создана ссылка к этой БД (командой описанной выше). Также есть база данных для разработки, определённая строкой подключения DEV, в которой также есть схема STORE. Вы подключены к третьей базе данных с именем TEST и вам нужно обновить схему базы данных для разработки данными из рабочей БД.
Для начала создадим ссылку на базу данных для разработки
create database link devstore connect to store identified by devpasswd using ‘dev’;
Затем обновим данные в БД для разработки используя рабочую базу
truncate table orders@devstore;
truncate table products@devstore;
insert into orders@devstore select * from orders@prodstore;
insert into products@devstore select * from products@prodstore;
В будущем если вам необходимо проверить были ли добавлены данные в рабочую базу данных и если были, то добавить эти данные в БЛ для разработки вы можете выполнить команду
insert into orders@devstore (select * from orders@prodstore minus select * from orders@devstore)
Если к примеру необходимо обновить имя покупателя вы можете сделать это в двух базах данных одновременно
update customers@prodstore set customer_name=’Coda’ where customer_id=10;
update customers@devstore set customer_name=’Coda’ where customer_id=10;
Когда необходимо Oracle выполнит дву-фазное подтверждение транзакции, чтобы убедиться что распределённая транзакция (distributed transaction – это транзакция затрагивающая данные в нескольких базах данных) обрабатывается как атомарная транзакция: изменения должны применяться либо ко всем базам данных либо ни к одной. Согласованность чтения данных также управляется во всём окружении.
- Управление БД — Итоги
- Установка и создание БД Oracle — Итоги
- Установка программ Oracle с использованием OUI
- Семейство продуктов Oracle
- Использование системного журнала (Alert Log) и файлов трассировки (Trace Files)
Разблокировка и доступ к пользователю HR в Oracle Database 18c Express Edition
В посте рассматривается способ разблокировки и доступа к учебному и тестовому пользователю (схемы) HR в базе данных Oracle Database 18c Express Edition. Рассмотрены следующие вопросы:
- Краткий обзор Multitenant архитектуры
- Разблокировка пользователя HR
Краткий обзор Multitenant архитектуры На сегодняшний день последней актуальной версией бесплатной редакции Oracle Database является Oracle Database 18c Express Edition. Данная версия выпущена в 2018 году. Предыдущая версия бесплатной редакции была Oracle Database 11g Express Edition. В Oracle Database 18c Express Edition включены многие важные опции наиболее функциональной редакции Oracle Database – Oracle Database Enterprise Edition. Ниже приведены некоторые основные опции, которые доступны также в Oracle Database 18c Express Edition:
- Multitenant
- Flashback Table
- Flashback Database
- Oracle Partitioning
- In-Memory Column Store и Aggregation
- Advanced Analytics и Security
- Online Index Rebuild
- Online Table Redefinition
- Query Results Cache и PL/SQL Function Result Cache
- Oracle Advanced Compression
- Materialized View Query Rewrite
- Oracle Spatial and Graph
- Bitmap Indexes
Для подключения к схеме HR в Oracle Database 18c Express Edition необходимо понимать принцип работы новой опции Multitenant. Начиная с Oracle Database 12с поддерживается новая архитектура – Multitenant, которая предоставляет возможность использовать множество баз данных для консолидации их в составе единой и главной базы данных. Такая консолидация упрощает задачи администрирования баз данных. Единая и главная база данных используется в качестве платформы и называется контейнерная база данных (Container Database – CDB), а база данных из множества работающих в составе контейнерной базы данных называется подключаемой базой данных (Pluggable Database – PDB). Архитектура Multitenat позволяет создать в Oracle Database 18с Express Edition одну CDB базу и до трех PDB баз. Архитектура Oracle Database 11g Express Edition предоставляет возможность создать одну и единственную базу. В Oracle Database 18с Express Edition учебная и тестовая схема (пользователь) HR, которая содержит взаимосвязанные таблицы и данные, располагается в составе PDB. В связи с этим, чтобы подключиться к базе данных под этой учетной записью, необходимо войти в PDB, разблокировать пользователя HR и назначить ему пароль. Ниже пошагово описываются шаги подключения к CDB, PDB и манипуляция настроек пользователя с помощью SQLPlus и SQLDeveloper.
Разблокировка пользователя (схемы) HR
Предполагается, что есть успешно установленная Oracle Database 18c Express Edition. При необходимости, можно установить Oracle Database 18c Express Edition используя следующие материалы: установка Oracle Database 18c Express Edition на Linux и установка Oracle Database 18c Express Edition на Windows. Нижеописанные шаги будут работать с Oracle Database 18c Express Edition, установленной, как на операционную систему Linux, так и на Windows.
Вариант разблокировки с помощью SQL*Plus.
Шаг 1. Подключение к CDB
Выполняется подключение к CDB с помощью пользователя sys с ролью as sysdba:
[oracle@dushanbe ~]$ sqlplus sys as sysdba SQL*Plus: Release 18.0.0.0.0 - Production on Fri Jul 17 13:00:06 2020 Version 18.4.0.0.0 Copyright (c) 1982, 2018, Oracle. All rights reserved. Enter password: Connected to: Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production Version 18.4.0.0.0
Подключение успешно прошло к CDB. Далее проверяется имя и идентификатор CDB.
SQL> select instance_name, con_id, version from v$instance; INSTANCE_NAME CON_ID VERSION -------------- ------- ---------- XE 0 18.0.0.0.0
Результат запроса показывает, что CDB имеет имя XE и ее уникальный идентификатор = 0. По умолчанию, после установки Oracle Database 18c Express Edition есть одна PDB с именем XEPDB1. Следующий запрос покажет существующие PDB.
SQL> show pdbs;CON_ID CON_NAME OPEN MODE RESTRICTED
------- --------- ------------ -----------2 PDB$SEED READ ONLY NO
3 XEPDB1 READ WRITE NO
Активная PDB имеет имя XEPDB1 с идентификатором 3 и ее режим работы определен как READ WRITE. OPEN MODE – READ WRITE означает, что база данных (БД) открыта и готова работать в режиме чтения и записи. PDB$SEED используется CDB как шаблон для создания новых PDB баз.
Проверяется наличие пользователя HR в CDB.
SQL> select username from dba_users where username = 'HR'; no rows selected
Запрос не вернул данные. Это означает, что пользователя HR нет в CDB. Далее необходимо подключиться к PDB и найти там HR.
Шаг 2. Подключение к PDB
Есть два способа подключиться к PDB с использованием SQL*Plus.
Способ 1. Находясь в CDB, подключиться к PDB используя команду alter session. В примере ниже происходит переключение из сеанса CDB к PDB с именем XEPDB1:
SQL> alter session set container = xepdb1; Session altered.
Переключение прошло успешно. Для того, чтобы удостовериться в корректности подключения, проверяется имя и идентификатор PDB базы:
SQL> show con_name CON_NAME -------- XEPDB1 SQL> show con_id CON_ID -------- 3
Запросы показывают характеристики существующей PDB (Шаг 1.).
Способ 2. Можно подключиться к PDB с консоли операционной системы, указав параметры подключения.
Ниже выполняется подключение к PDB под пользователем sys с указанием IP адреса сервера БД, порта и имени PDB (по умолчанию для созданной PDB (XEPDB1) используется порт 1539):
[oracle@dushanbe ~]$ sqlplus sys/sys@192.168.0.1:1539/XEPDB1 as sysdba SQL*Plus: Release 18.0.0.0.0 - Production on Sat Jul 18 17:04:51 2020 Version 18.4.0.0.0 Copyright (c) 1982, 2018, Oracle. All rights reserved. Connected to: Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production Version 18.4.0.0.0
Подключение прошло успешно.
Для информации: Администраторы баз данных временами выполняют подключение к БД используя аутентификацию на уровне операционной системы с помощью команды sqlplus / as sysdba и без указания пароля. При запуске этой команды в среде с Multitenant архитектурой будет осуществлено подключение к CDB. Для того, чтобы напрямую подключиться к PDB минуя CDB, используется sqlplus / as sysdba и без указания пароля, также необходимо в переменную среду операционной системы добавить новый системный параметр ORACLE_PDB_SID и в его значении указать название PDB. Этот параметр для подключения к PDB без указания пароля могут осуществлять только пользователи sys и system. Остальные пользователи будут автоматически подключены к CDB, если не укажут параметры подключения к PDB. Ниже описываются шаги подключения к PDB для пользователя sys с применением параметра ORACLE_PDB_SID в переменной среде операционной системы. Это очень удобный способ для администраторов баз данных:
[oracle@dushanbe ~]$ env | grep ORACLE* ORACLE_SID=XE ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE [oracle@dushanbe ~]$ [oracle@dushanbe ~]$ export ORACLE_PDB_SID=xepdb1 [oracle@dushanbe ~]$ env | grep ORACLE* ORACLE_PDB_SID=xepdb1 ORACLE_SID=XE ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE [oracle@dushanbe ~]$ [oracle@dushanbe ~]$ sqlplus / as sysdba SQL*Plus: Release 18.0.0.0.0 - Production on Fri Jul 17 16:46:35 2020 Version 18.4.0.0.0 Copyright (c) 1982, 2018, Oracle. All rights reserved. Connected to: Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production Version 18.4.0.0.0
Подключение к PDB прошло успешно напрямую из операционной системы без указания пароля и параметров подключения PDB. Далее проверяется имя и идентификатор PDB.
SQL> show con_name CON_NAME -------- XEPDB1 SQL> show con_id CON_ID -------- 3
После успешного подключения к PDB c использованием одного из двух способов определяется наличие пользователя HR, а также его статус.
Запускается запрос поиска пользователя HR среди всех существующих пользователей в XEPDB1:
SQL> select username from dba_users where username = 'HR'; USERNAME -------- HR
Получен результат, подтверждающий наличие пользователя HR в PDB.
При помощи запроса определяется имя, статус и дата блокировки пользователя HR:
SQL> select username, account_status, lock_date from dba_users where username = 'HR'; USERNAME ACCOUNT_STATUS LOCK_DATE -------- ---------------- ----------- HR EXPIRED & LOCKED 30-MAY-20
Результат запроса показывает, что статус пользователя «заблокирован» и пароль просрочен (необходимо задать новый пароль) – EXPIRED & LOCKED. Первоначальная дата блокировки равна дате установки Oracle Database 18c Express Edition.
Шаг 3. Разблокировка пользователя HR
После установки Oracle Database 18c Express Edition учетная запись HR заблокирована и пароль у нее просрочен (необходимо задать новый пароль) (см. предыдущий шаг – Шаг 2.). В этом случае, система позволяет сделать запросы к объектам HR (таблицам, представлениям, функциям и т.п.) от имени других пользователей при наличии соответствующих привилегий. Например, при выполнении запроса на определение количества строк в таблице EMPLOYEES пользователя HR под пользователем SYS система успешно выдаст следующий результат:
SQL> select count(*) from hr.employees; COUNT(*) -------- 107
Для пользователя HR назначается новый пароль:
SQL> ALTER USER hr IDENTIFIED BY hr; User altered.
При попытке подключения к PDB, не разблокировав пользователя, можно получить следующую ошибку:
[oracle@dushanbe ~]$ sqlplus hr/hr@192.168.0.1:1539/XEPDB1 SQL*Plus: Release 18.0.0.0.0 - Production on Sat Jul 18 12:49:01 2020 Version 18.4.0.0.0 Copyright (c) 1982, 2018, Oracle. All rights reserved. ERROR: ORA-28000: The account is locked. Enter user-name:
Необходимо заново подключиться к PDB под пользователем sys:
[oracle@dushanbe ~]$ sqlplus sys/sys@192.168.0.1:1539/XEPDB1 as sysdba SQL*Plus: Release 18.0.0.0.0 - Production on Sat Jul 18 17:04:51 2020 Version 18.4.0.0.0 Copyright (c) 1982, 2018, Oracle. All rights reserved. Connected to: Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production Version 18.4.0.0.0
и разблокировать пользователя HR следующей командой:
SQL> ALTER USER hr ACCOUNT UNLOCK; User altered.
Операции назначения пароля и разблокировки пользователя HR прошли успешно. Проверяется статус пользователя:
SQL> select username, account_status, lock_date from dba_users where username = 'HR'; USERNAME ACCOUNT_STATUS LOCK_DATE -------- ---------------- ----------- HR OPEN
Пользователь HR разблокирован и новый пароль активен. Это означает, что теперь можно подключиться к PDB с именем XEPDB1 под учебным тестовым пользователем HR и начать работу.
Шаг 4. Подключение к PDB с учетной записью HR.
Используя данные для подключения к PDB, выполняется вход систему под учетной записью HR и запускается запрос для определения количества строк в его таблице EMPLOYEES.
[oracle@dushanbe ~]$ sqlplus hr/hr@192.168.0.1:1539/XEPDB1 SQL*Plus: Release 18.0.0.0.0 - Production on Sat Jul 18 12:46:35 2020 Version 18.4.0.0.0 Copyright (c) 1982, 2018, Oracle. All rights reserved. Connected to: Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production Version 18.4.0.0.0 SQL> show user; USER is "HR" SQL> select count(*) from employees; COUNT(*) -------- 107
На этом завершается определение наличия пользователя, назначение ему пароля и разблокировка HR в PDB Oracle Database 18c Express Edition, а также выполнение запроса к его объекту с помощью SQL*Plus.
Вариант разблокировки с помощью SQL Developer.
Шаг 1. Подключение к CDB
Для этого создается новое подключение в SQL Developer и указываются необходимые параметры подключения к CDB, такие как:
Name: XE_18c
Указывается имя соединения, которое позволяет однозначно идентифицировать CDB при подключении.
IP: 192.168.0.1
IP адрес сервера БД.
Port: 1539
Порт подключения к БД.
SID: XE
SID или имя CDB.
Username: sys
Указывается имя пользователя для подключения к БД.
Role: SYSDBA
Подключение к БД осуществляется пользователем sys. Данный пользователь может подключиться только с ролью SYSDBA.
Password:
Пароль пользователя sys, который был назначен во время установки базы данных.
После нажатия Connect произойдет успешное подключение к CDB с именем XE. Далее проверяется имя, идентификатор и версия CDB, а также выводятся существующие PDB.
Как и ожидалось, выведенные выше данные идентичны полученным с помощью SQL*Plus.
Далее проверяется наличие пользователя HR в CDB.
Запрос не вернул данные, это означает, что пользователя HR нет в CDB. Теперь необходимо подключиться к PDB и проверить наличие HR в PDB.
Шаг 2. Подключение к PDB
Создается новое подключение в SQL Developer и указываются необходимые параметры подключения к подключаемой базе данных XEPDB1, такие как:
Name: XEPDB1_18c
Указывается имя соединения, которое позволяет однозначно идентифицировать PDB при подключении.
IP: 192.168.0.1
IP адрес сервера БД.
Port: 1539
Порт подключения к БД.
SID: XEPDB1
SID или имя PDB.
Username: sys
Указывается имя пользователя для подключения к БД.
Role: SYSDBA
Подключение к БД осуществляется пользователем sys. Данный пользователь может подключиться только с ролью SYSDBA.
Password:
Пароль пользователя sys, который был назначен во время установки базы данных. Пользователи sys и system могут подключиться с одним и тем же паролем и к CDB и к PDB.
После нажатия Connect произойдет успешное подключение к подключаемой БД XEPDB1. Далее проверяется имя и идентификатор.
Результаты показывают, что было подключение к PDB с именем XEPDB1 и идентификатором 3. Определяется наличие пользователя HR в этой PDB. В иерархии дерева надо выбрать «Other Users» в соединении с именем XEPDB1_18c как показано на скриншоте:
В списке пользователей необходимо найти пользователя HR и нажать на правую кнопку. Из контекстного меню выбрать «Edit User». Откроется новое модальное окно «Edit User» как показано на скриншоте. Как видно на скриншоте учетная запись HR заблокирована (Account is Locked) и пароль у нее просрочен (Password Expired):
Шаг 3. Разблокировка пользователя HR:
В продолжение предыдущего шага необходимо:
- Задать идентичный пароль в полях New Password (новый пароль) и Confirm Password (подтвердить пароль).
- Снять галочку из пункта Password Expired (user must change next login).
- Снять галочку из пункта Account is Locked для разблокировки пользователя.
- Нажать Apply.
Пользователь HR разблокирован и ему назначен пароль. Это означает, что теперь можно подключиться к PDB с именем XEPDB1 под учебным тестовым пользователем HR и начать работу.
Шаг 4. Подключение к PDB с учетной записью HR.
Создается новое подключение в SQL Developer и указываются необходимые параметры подключения к подключаемой базе данных XEPDB1 с пользователем HR, такие как:
Name: XEPDB1_18c_hr
Указывается имя соединения, которое позволяет однозначно идентифицировать PDB при подключении с пользователем HR.
IP: 192.168.0.1
IP адрес сервера БД.
Port: 1539
Порт подключения к БД.
SID: XEPDB1
SID или имя PDB.
Username: HR
Указывается имя пользователя для подключения к БД.
Role: default
Подключение к БД осуществляется пользователем HR. Данный пользователь не может использовать роль SYSDBA.
Password:
Пароль, который был назначен пользователю HR на третьем шаге, то есть hr.
После нажатия Connect произойдет успешное подключение к PDB с именем XEPDB1 под пользователем HR. Выполняется запрос для определения количества строк в таблице EMPLOYEES:
На этом завершается определение наличия пользователя, назначение ему пароля и разблокировка HR в PDB Oracle Database 18c Express Edition, а также выполнение запроса к его объекту с помощью SQL Developer.