Sqlplus подключение к базе oracle
Команды Oracle SQL*Plus CONNECT, DISCONNECT, DESC, HOST, COPY
В этот раздел помещена информация о возможностях SQL*Plus , которая не вошла в другие разделы.
Во всех примерах в предыдущих разделах подразумевалось, что подключение к базе данных Oracle было произведено при запуске SQL*Plus . Однако иногда нам нужно произвести подключение (или отключение) внутри сеанса работы с SQL*Plus , например, когда нам нужно переподключиться к другой базе данных, или когда SQL*Plus был запущен с параметром / NOLOG .
Разорвать существующее подключение без закрытия окна SQL*Plus можно при помощи команды DISCONNECT ( DISC ).
Подключиться к экземпляру Oracle из SQL*Plus можно при помощи команды CONNECT , например:
CONNECT scott / tiger @ myOra 10
Синтаксис — такой же, как при указании параметров подключения при запуске SQL*Plus (см. раздел 1.2.2).
Получить информацию о списке столбцов в таблице или представлении базы данных Oracle можно при помощи команды DESCRIBE ( DESC ), например:
В SQL*Plus предусмотрена возможность выполнить команду операционной системы без выхода из приложения. Для этого предназначена команда HOST . Приложение (консольное или графическое) будет открыто в новом окне, а SQL*Plus будет ждать, пока окно будет закрыто. Например, чтобы запустить из SQL*Plus обычный калькулятор Windows , достаточно выполнить команду
Отметим также, что SQL*Plus может выступать в качестве элементарного средства по переносу данных между двумя базами данных Oracle (или между разными таблицами одной и той же базы данных). Для этого можно использовать команду COPY . Пример применения этой команды может выглядеть, например, так:
COPY FROM HR@BOSTONDB -
CREATE NEWDEPT (DEPARTMENT_ID, DEPARTMENT_NAME, CITY) -
USING SELECT * FROM EMP_DETAILS_VIEW
Однако, как и в случае с отчетами, SQL*Plus трудно признать лучшим средством для переноса данных. Для этой цели лучше использовать специализированные средства, например, Oracle SQLLoader , Oracle DataWarehouse Builder или Microsoft DTS / SSIS .
Я хочу подключиться к базе данных оракула, расположенной на другом хосте, используя sqlplus. На этой странице было предложено добавить элемент в мои tnsnames для подключения к этой базе данных.
а затем использовать это в sqlplus
Однако в моих обстоятельствах изменение локальных имен tnsname невозможно. Можно ли подключиться к удаленной базе данных, просто используя аргумент sqlplus, не меняя tnsnames? Что-то вроде
еще короче - sqlplus ИД пользователя / пароль @ база данных @GlennLong - но в вашей версии database все еще псевдоним TNS, который должен существовать в tnsnames.ora , так что это то же самое, что Луи пытался избежать?Возможно, и это может зависеть от среды командной строки, которую вы используете, вам нужно заключить строку в кавычки, что-то вроде
Вы можете использовать Easy Connect для этого:
Чтобы включить easy connect на вашем компьютере, вам нужно добавить его NAMES.DIRECTORY_PATH в файл sqlnet.ora, например:
На самом деле кажется, что вы должны указать имя службы, а не SID; они могут быть одинаковыми, но если нет, вам нужно получить их с сервера.
Если имя службы совпадает с именем хоста, вам даже не нужно указывать имя службы при подключении. (Практически никто не делает этого, но приятно знать.)Создайте копию файла tnsnames.ora в каталоге, в который вы можете записать, измените файл соответствующим образом, затем установите переменную среды TNS_ADMIN в расположение этого каталога.
Этот подход работает с системой, в которой не установлена инфраструктура Oracle, кроме клиента sqlplus. Просто скопируйте tnsnames.ora с сервера базы данных и следуйте указаниям Фила.В системе Unix / Linux вы можете использовать файлы конфигурации уровня пользователя для переопределения записей уровня системы.
Файлы конфигурации системного уровня можно найти в каталоге $TNS_ADMIN . Если переменная TNS_ADMIN не установлена, то они ищутся в каталоге $ORACLE_HOME/network/admin .
Файлы конфигурации уровня пользователя не заменяют файлы конфигурации уровня системы в целом (так как TNS_ADMIN каталог заменяет весь $ORACLE_HOME/network/admin каталог), но они добавляют или изменяют записи файлов конфигурации уровня системы. Если запись существует в файле конфигурации на уровне пользователя, то используется эта запись, если она не существует в файле конфигурации на уровне пользователя, то используется запись в файле конфигурации на уровне системы.
SQL*Plus - программа для работы с СУБД Oracle посредством командной строки. Используя SQL*Plus можно выполнять команды SQL и PL/SQL в интерактивном режиме или используя сценарий.
Основное преимущество SLQ*Plus - доступность, т.к. инструмент доступен практически всегда, когда в системе установлен Oracle. При этом это достаточно мощный инструмент, используя который можно решать различные задачи на удаленных машинах.
К написанию этой статьи меня подтолкнула книга "Oracle SQL*Plus: The Definitive Guide, 2nd Edition", написанная Jonathan Gennick. Как обычно, появилось желание систематизировать информацию и представить ее в удобном виде.
При этом сразу считаю нужным оговориться, что я использую SQLplus для написания и выполнения скриптов на удаленных машинах, в этой статье описываю именно используемые для этого команды.
Область возможного использования SQLplus при этом гораздо шире, например - построение отчетов, в том числе в формате HTML.
Параметры, подключение к базе, запуск скриптов
Выполнить несколько строк кода (не передавая отдельный файл со скриптом), unix:
Выполнение SQL запросов
Запрос может состоять из нескольких строк, содержать комментарии, но не может содержать внутри пустые строки.
Запрос может быть выполнен тремя способами:
- точка с запятой в конце запроса
- строка с слешем "/" после запроса
- пустая строка после запроса (будет помещен в буфер, но не выполнен немедленно)
Выполнение PL/SQL блоков
Пример PL/SQL блока:
Правила выполнения PL/SQL блоков:
- Первое слово в PL/SQL блоке должно быть из списка: BEGIN, DECLARE, CREATE PROCEDURE,
CREATE FUNCTION, CREATE TRIGGER, CREATE PACKAGE, CREATE TYPE, CREATE TYPE BODY. Регистр не важен. - Блок может состоять из нескольких строк
- Можно вставлять /* комментарии */, они также могут быть на несколько строк
- Пустые строки не разрешены внутри блока
Сигнал к выполнению блока может быть подан двумя путями:
- Строка, содержащая только слеш "/" после блока - выполнить сразу
- Строка, содержащая точку "." после блока - поместить в буфер. Содержимое буфера может быть выведено командой LIST и выполнено, путем указания одиночного слеша "/" или команды RUN.
Одиночное выражение PL/SQL может быть выполнено, используя:
В случае ошибок, при выполнении процедуры, можно отобразить их выполнив команду:
Работа с переменными
Переменные могут быть заданы двумя способами:
Если уже была определена &&variable, то значение будет подставлено во все дальнейшие переменные как &variable так и &&variable.
Если была определена &&variable, и скрипт запущен повтороно в ходе той же сессии работы с SQLplus - будет использовано старое значение переменной. Чтобы этого избежать - можно запрашивать интерактивный ввод в скрипте принудительно, испольтзуя команду:
ACCEPT можно использовать для валидации:
Для ввода дат в определенном формате:
SQL*Plus поддерживает четыре типа переменных: CHAR, NUMBER, BINARY_FLOAT, and BINARY_DOUBLE. При вводе с клавиатуры переменная будет типа CHAR.
Несмотря на это, можно использовать NEW_VALUE, чтобы задать числовую переменную, полученную как результат запроса.
Bind-переменные могут использоваться для передачи данных между PL/SQL и SQL блоками:
Присвоить bind-переменной значение &-переменной:
Вывести значение bind-переменной:
Присвоить &-переменной значение bind-переменной:
Получаем OUT-параметр процедуры в bind-переменную:
Условное выполнение в SQLplus:
Пример скрипта, принимающего несколько переменных на вход в формате c возможностью задать дефолтные значения:
Настройки выполнения скриптов
Действуют на протяжении сессии в SQLplus.
Запомнить настройки перед выполнением скрипта и вернуть обратно по завершении выполнения:
Подключаться и работать с базами данных Oracle можно многими способами.Однако чаще всего для этого применяется предлагаемый в Oracle интерфейс и набор команд SQL*Plus. Интерфейс SQL*Plus, по сути, открывает окно в базу данных Oracle и потому очень широко используется разработчиками Oracle для создания программных единиц SQL и PL/SQL. Для администраторов баз данных Oracle этот интерфейс тоже является очень ценным инструментом по следующим причинам.
- Он позволяет выполнять запросы на языке SQL и блоки кода на языке PL/SQL (который представляет собой предлагаемую в Oracle расширенную процедурную версию языка SQL) и получать результаты.
- Он позволяет выполнять команды, связанные с администрированием баз данных,и автоматизировать их.
- Он позволяет запускать и завершать работу базы данных.
- Он предоставляет удобный способ для создания отчетов по администрированию баз данных.
В этой статье я начинаю рассказывать о том, как использовать SQL*Plus для выполнения типичных задач по администрированию баз данных Oracle, о важных командах SQL*Plus, а также, вкратце, о том, как с помощью SQL*Plus создавать отчеты. Возможно, применять интерфейс SQL*Plus для создания большинства отчетов и не придется, но знать,как работают его многочисленные средства для генерации отчетов, совершенно не помешает.
Запуск сеанса SQL*Plus
Интерфейс SQL*Plus представляет собой утилиту, которая чаще всего применяется для подключения и работы с базами данных Oracle. Он поставляется в составе как серверного программного обеспечения Oracle Database 11g, так и клиентского программного обеспечения Oracle Client, а также нового программного обеспечения Oracle Instant Client.
После установки SQL*Plus на сервере или клиентской машине процесс подключения к серверу или клиенту и запуска сеанса SQL*Plus выглядит очень просто. Из-за того, что каждый сеанс SQL*Plus подразумевает установку соединения с базой данных (если только не применяется параметр /NOLOG), все, что требуется для запуска SQL*Plus и подключения к базе данных — это действительное имя пользователя и пароль.
Настройка среды
Перед вызовом SQL*Plus потребуется сначала правильно настроить среду Oracle.В частности, необходимо установить значения для таких переменных среды, как ORACLE_SID, ORACLE_HOME и LD_LIBRARY_PATH. Помимо этого иногда нужно установить значения и для таких переменных среды, как NLS_LANG и ORA_NLS11.
В случае не установки правильных значений для необходимых переменных среды будет возникать ошибка. Например, не установка надлежащего значения для переменной ORACLE_HOME перед запуском SQL*Plus будет приводить к появлению следующей ошибки:
В случае получения показной выше ошибки достаточно установить значение для переменной среды ORACLE_HOME:
Программное обеспечение SQL*Plus Instant Client
Для использования SQL*Plus инсталлировать полностью все серверное программное обеспечение Oracle Database вовсе не обязательно. Если нужно взаимодействовать через интерфейс SQL*Plus с базой данных, которая находится на другом сервере,вполне хватит и программного обеспечения SQL*Plus Instant Client. С помощью этого программного обеспечения к любой базе данных Oracle, функционирующей под управлением любой операционной системы, можно подключаться удаленным образом за счет указания ее имени и применения идентификатора сетевого подключения Oracle.Единственным требованием для подключения к удаленной базе данных подобным образом является указание имени удаленной базы данных в файле tnsnames.ora. Именно поэтому для SQL*Plus Instant Client требуется задавать переменную среды ORACLE_HOME.Существует также метод, который не требует применения на клиентском сервере файла tnsnames.ora. Называется он методом простого подключения (easy connect). Ниже приведен пример, показывающий, как с помощью идентификатора простого подключения установить от имени пользователя OE подключение к базе данных testdb, расположенной на сервере myserver:
В этом примере 1521 — это порт, используемый слушателем для получения запросов на установку подключения.
Запуск сеанса SQL*Plus из командной строки
Прежде чем подключаться к сеансу SQL*Plus, необходимо сначала правильно настроить среду и указать, с какой базой данных на сервере должно устанавливаться соединение по умолчанию. Делается это с помощью переменной среды ORACLE_SID.
После указания базы данных, которая должна использоваться по умолчанию (в приведенном примере это orcl) в переменной среды ORACLE_SID, можно получать доступ к SQL*Plus из приглашения командной строки, просто вводя команду sqlplus безо имени пользователя и пароля. SQL*Plus предложит ввести имя пользователя и пароль. В случае предоставления имени пользователя вместе с командой (например: sqlplus salapati),SQL*Plus будет приглашать ввести только пароль. Администратор баз данных должен входить от имени одной из административных учетных записей.
На заметку! На серверах UNIX ввод должен обязательно выполняться в нижнем регистре. В Windows интерфейс не чувствителен к регистру символов. За исключением этой небольшой детали, во всем остальном командный интерфейс SQL*Plus работает одинаково и на платформе Windows, и на всех вариантах платформ UNIX и Linux.
Разумеется, вводить имя пользователя и пароль можно и непосредственно при вызове SQL*Plus, но тогда пароль будет виден другим при его вводе. Ниже приведен пример:
Приглашение SQL (SQL>) означает, что соединение с SQL*Plus инициировано, и можно начинать вводить команды и операторы SQL, PL/SQL и SQL*Plus.
Для того чтобы подключиться к другой базе данных, а не той, что установлена по умолчанию, нужно использовать следующую команду:
Определенные операции, например запуск и завершение работы, разрешено выполнять только в случае подключения к SQL*Plus с привилегиями SYSDBA или SYSOPER. При наличии привилегий SYSDBA (или SYSOPER) подключаться к SQL*Plus можно следующим образом:
Конструкция AS позволяет устанавливать привилегированные подключения пользователям, которым были выданы системные привилегии SYSDBA или SYSOPER.
Если в базе данных была создана учетная запись аутентифицированного пользователя операционной системы (ранее называвшаяся OPS$имя; см. главу 12), устанавливать подключение можно и просто указанием символа косой черты (/), как показано ниже:
Можно также подключаться через метод аутентификации операционной системы, за счет включения владельца программного обеспечения Oracle в группу администраторов баз данных (DBA):
Обратите внимание, что во всех предыдущих примерах имя базы данных при подключении через SLQ*Plus не указывалось. Объясняется это тем, что подключение устанавливалось к принятому по умолчанию экземпляру, т.е. к базе данных, на которую указывает значение переменной среды ORACLE_SID. Указывать имя базы данных при использовании SQL*Plus для подключения к принятой по умолчанию базе данных не обязательно. Для подключения к другой базе данных, доступной по сети, нужно обязательно использовать идентификатор подключения (имя сетевой службы).
На заметку! Имя экземпляра, имя базы данных и имя службы могут как совпадать, так и отличаться.
С теоретической точки зрения, подключаться к базе данных можно с использованием полного синтаксиса идентификатора подключения, как показано в следующем примере, где для подключения к базе данных orcl применяется весь адрес целиком:
Однако за счет использования имени сетевой службы, определенного в сетевом файле tnsnames.ora, можно подключаться к базе данных более простым образом:
Кроме того, для подключения к базе данных можно применять простой метод подключения. Синтаксис простого метода подключения выглядит так:
Например, вот как подключиться с помощью этого метода к базе данных orcl:
Обратите внимание, что в случае применения простого метода подключения сетевой файл (tnsnames.ora) не нужен.
Какой бы из перечисленных методов не использовался, в конечном итоге будет обязательно успешно устанавливаться сеанс SQL*Plus либо с базой данных по умолчанию,либо с той, что была указана в идентификаторе подключения.
Установка подключения с помощью команды CONNECT
В SQL*Plus поддерживается команда CONNECT, которая позволяет после входа в SQL*Plus выполнять подключение от имени другого пользователя. Кроме того, она позволяет после подключения к одной базе данных подключаться к другой базе данных.Ниже приведен пример использования команды CONNECT для выполнения подключения от имени другого пользователя:
Следующий пример демонстрирует, как в SQL*Plus подключаться к другой базе данных за счет предоставления идентификатора подключения в виде части команды CONNECT:
Перед подключением к другой базе данных необходимо проверять, что в файле tnsnames.ora присутствует необходимая информация о подключении к удаленной базе данных.
Команду CONNECT можно использовать в SQL*Plus вместе с синтаксисом / AS SYSDBA и / AS SYSOPER, как показано ниже:
Запуск сеанса SQL*Plus без установки подключения к базе данных с помощью параметра /NOLOG
Сеанс SQL*Plus можно также запускать и без установки подключения к базе данных,счет указав вместе с командой sqlplus параметр /NOLOG. В подобном может возникать необходимость, например, при запуске базе данных или просто для использования доступных в SQL*Plus команд для записи или редактирования сценариев. После запуска сеанса SQL*Plus для подключения к базе данных всегда можно применить команду CONNECT.
Ниже приведен пример использования параметра /NOLOG:
Подключение к SQL*Plus через графический интерфейс Windows
В случае использования графического интерфейса SQL*Plus на машине Windows для запуска сеанса SQL*Plus достаточно щелкнуть на пиктограмме SQL*Plus и на экране появится приглашение ввести имя пользователя. При условии, что соединение с базой данных устанавливается через соответствующие сущности в файле tnsnames.ora , после ввода имени пользователя можно приступать к работе с интерфейсом SQL*Plus.
Работать с утилитой SQL*Plus можно как в ручном, так и в сценарном не интерактивном режиме. Само собой разумеется, что уязвимые административные задачи, вроде восстановления базы данных, лучше выполнять в интерактивном режиме. Что же касается рутинных операций по обработке SQL, то их выполнение лучше автоматизировать с помощью сценариев. И в том и в другой случае сами команды будут выглядеть одинаково — отличаться будет лишь режим, в котором они будут выполняться.
Ниже показан синтаксис команды подключения к SQL*Plus:
На заметку! В Oracle Database 11g команда SQLPLUS поддерживает новый аргумент -F, позволяющий SQL*Plus получать от базы данных RAC события FAN (Fast Application Notification — быстрое уведомление приложений).
Подключаться от имени пользователя с привилегиями SYSOPER, SYSDBA или SYSASM необходимо для выполнения привилегированных операций, вроде завершения работы и запуска базы данных или резервного копирования либо восстановления базы данных.Привилегия SYSAM является новой в Oracle Database 11g и предназначена для разделения обычных операций по администрированию баз данных и операций автоматического управления памятью (Automatic Storage Management — ASM).
Работа в SQL*Plus
После подключения к интерфейсу SQL*Plus можно начинать вводить в нем любые команды SQL*Plus, SQL или PL/SQL. Как будет объясняться позже в этой главе, операторы SQL оканчиваются либо символом точки с запятой (;), либо символом косой черты (/), а блоки кода PL/SQL — только символом косой черты (/). Вывод можно как просматривать на экране, так и при желании записывать в файл. Команды SQL*Plus всегда оканчиваются символов новой строки. При вводе команды SQL*Plus клиентская программа SQL*Plus анализирует ее, и если та представляет собой оператор SQL или PL/SQL, отправляет ее серверу баз данных для обработки.
В качестве символа продолжения можно использовать дефис (-), хотя при окончании первой строки применять символ продолжения вовсе не обязательно. В каждой строке SQL можно вводить любое количество символов или слов и затем просто нажимать клавишу <Enter> для продолжения на следующей строке. SQL*Plus будет автоматически добавлять перед каждой строкой ее номер.В некоторых случаях, однако, символ продолжения (-) оказывается полезным, как в следующем примере, где требуется ввести SQL-оператор SELECT 200 - 100 FROM dual:
В этом примере из-за перехода на вторую строку после дефиса (-), который еще так же является и знаком минус, утилита SQL*Plus автоматически интерпретировала его как символ продолжения и выдала ошибку, потому что оператор получился синтаксически некорректным (select 200 100 from dual). Избежать этой проблемы можно за счет использования в конце первой строки второго дефиса (знака минус) для выполнения роли символа продолжения:
В Oracle для выполнения определенных запросов необходимо использовать таблицу DUAL, поскольку в поддерживаемом Oracle синтаксисе SQL наличие конструкции FROM в операторе SELECT является обязательным (например, SELECT sysdate FROM dual;).В базах данных Microsoft SQL Server, с другой стороны, использовать таблицу DUAL не требуется, потому что в синтаксисе SQL Server допускается применение операторов SELECT без конструкции FROM.
Завершение сеанса SQL*Plus
Завершается сеанс SQL*Plus вводом команды EXIT, причем как в нижнем, так и в верхнем регистре. С помощью команды QUIT осуществляется выход в операционную систему (регистр символов тоже роли не играет).
Внимание! В случае выполнения аккуратного выхода из SQL*Plus по команде EXIT (или QUIT) будет немедленно происходить фиксация всех транзакций. Если не нужно, чтобы происходила фиксация транзакций, перед выходом потребуется выполнить команду rollback.
Сводка: Наша задача — предоставлять решения для упрощения ИТ-инфраструктуры, предлагая решения для баз данных, специализированную разработку, динамические ЦОД и гибкие вычислительные системы. Свернуть Наша задача — предоставлять решения для упрощения ИТ-инфраструктуры, предлагая решения для баз данных, специализированную разработку, динамические ЦОД и гибкие Развернуть
Возможно, эта статья была переведена автоматически. Если вы хотите поделиться своим мнением о ее качестве, используйте форму обратной связи в нижней части страницы.
Симптомы
Затронутые решения:
Oracle Database — Oracle 12cR1 12.1.0.1.0 Enterprise Edition
Операционные системы — Oracle Linux 6.4 с ядром 2.6.39-400.109.17.1.el6uek.x86-64 и
Платформы хранения данных — Dell EqualLogic PS 5000 и Dell EqualLogic PS 6110
Проблема:
Как подключиться к подключаемым базам данных в Oracle RAC 12cR1?
Решение:
- Использование службы по умолчанию с тем же именем, что и имя базы данных, которая создается автоматически программным обеспечением базы данных.
- Использование определенных пользователем служб, созданных со свойством PDB с помощью утилиты SRVCTL, которая связывает службу с подключаемыми базами данных
- Использование команды «alter session» и установка необходимого контейнера
- Использование Enterprise Manager Express
- В файле tnsnames.ora необходимо создать запись, которая определяет адреса баз данных, позволяющие установить соединение с базой данных.
- Необходимо изменить состояние PDB с установленного на режим чтения и записи.
При использовании Oracle RAC 12c, хотя служба по умолчанию с тем же именем, что и подключаемая база данных, автоматически создается программным обеспечением базы данных, но файл tnsnames.ora создается только с одной записью, имеющей отношение к глобальной базе данных. Например, при использовании двухузлового Oracle RAC 12c, где «cpdb» — глобальная база данных, «pdb1» и «pdb2» — две созданные подключаемые базы данных, а «cpdb1» и «cpdb2» — два экземпляра, запись по умолчанию в файле tnsnames.ora приведена ниже:
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))
Поэтому необходимо создать соответствующие записи для имени службы по умолчанию подключаемых баз данных в файле tnsnames.ora, как показано ниже:
(ADDRESS = (PROTOCOL = TCP) (HOST = OracleRACscan.dbase.lab)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP) (HOST = OracleRACscan.dbase.lab)(PORT = 1521))
Изменение статуса подключаемой базы данных:
При создании блоков PDB по умолчанию для параметра «open_mode» установлено значение «Mounted». Это можно проверить следующим образом:
SQL> select name, open_mode from v$pdbs;
NAME OPEN_MODE PDB$SEED READ ONLY
Эта команда открывает все подключаемые базы данных в режиме чтения и записи.
SQL> Alter pluggable database all open;
После этогоможно установить подключение к базе данных с помощью sqlplus следующим образом:
[oracle@node1 bin]$ sqlplus sys/oracle@pdb1 as sysdba
SQL*Plus: версия 12.1.0.1.0, дата выпуска: 8 октября 2013 г., вторник, 11:23:32
© Oracle, 1982, 2013. Все права защищены.
Oracle Database 12c Enterprise Edition версия 12.1.0.1.0 — 64-разрядная производственная среда с разбиением на разделы, Real Application Clusters, Automatic Storage Management, OLAP, Advanced Analytics и Real Application Testing
2. Использование определенной пользователем службы для подключения к PDB
- создание службы базы данных со свойством PDB с помощью утилиты SRVCTL;
- создание записи в файле tnsnames.ora для созданной службы;
- запуск службы;
- подключение к базе данных с помощью службы со свойством PDB, созданным на шаге a.
Следующие команды, использующие утилиту SRVCTL, создают две службы базы данных «hr1» и «sales1» для связи с подключаемой базой данных «pdb1»:
[[oracle@node1 bin]$ srvctl add service -db cpdb -service hr1 -pdb pdb1 -preferred cpdb1 -available cpdb2
[oracle@node1 bin]$ srvctl add service -db cpdb -service sales1 -pdb pdb1 -preferred cpdb1 -available cpdb2
Свойство PDB можно просмотреть в представлении словаря данных all_services.
SQL> SELECT NAME, PDB FROM all_services;
Команда «$ srvctl config service –db » также содержит список доступных служб.
б) Создание записи в файле tnsnames.ora для созданной службы базы данных
Можно создать имена служб HR_PDB1 и SALES_PDB1, которые могут использоваться приложениями «hr» и «sales» для подключения к подключаемой базе данных «pdb1», следующим образом:
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))
в) Запуск службы
[oracle@nsnode1 bin]$ srvctl status service -db cpdb -service hr1
Служба «hr1» не запущена
[oracle@nsnode1 bin]$ srvctl start service -db cpdb -service hr1
При запуске службы, связанной с PDB, автоматически открывается PDB в режиме чтения и записи.
г) Подключение к службе базы данных
Пользователь подключается к PDB с помощью службы базы данных со свойством «pdb».
Например, пользователь SYS может подключиться к «pdb1» с помощью службы базы данных HR_PDB1, связанной с «pdb1», следующим образом:
SQL> connect sys/oracle@HR_PDB1 AS SYSDBA
SQL> SHOW CON_ID;
SQL> SHOW CON_NAME;
3. Использование команды «alter session» для подключения к PDB
По умолчанию при подключении к экземпляру RAC выполняется подключение к CDB$ROOT. Каждый экземпляр RAC открывает PDB, доступен единый образ системы. Если необходимо изменить сеанс на pdb, измените сеанс и укажите необходимый контейнер. Запрос «show con_name» можно использовать для проверки имени текущего контейнера.
[oracle@node1 bin]$ sqlplus / as sysdba
SQL*Plus: версия 12.1.0.1.0, дата выпуска: 9 октября 2013 г., среда, 13:56:27
© Oracle, 1982, 2013. Все права защищены.
Oracle Database 12c Enterprise Edition, версия 12.1.0.1.0 — 64-разрядная производственная среда
С разбиением на разделы, Real Application Clusters, Automatic Storage Management, OLAP
Advanced Analytics и Real Application Testing
SQL> show con_name;
SQL> ALTER SESSION SET CONTAINER = PDB1;
SQL> SHOW CON_NAME;
SQL> ALTER SESSION SET CONTAINER = PDB2;
SQL> SHOW CON_ID;
SQL> ALTER SESSION SET CONTAINER = CDB$ROOT;
SQL> SHOW CON_NAME;
Ниже приведено описание идентификаторов контейнеров.
ID контейнера | Описание |
0 | Вся CDB |
1 | CDB$ROOT |
2 | PDB$SEED |
От 3 до 254 | PDB |
Таблица 1. Описания идентификаторов контейнеров
В данном конкретном примере «con_id 3» представляет «pdb1», а «con_id 4» — «pdb2».
[grid@node1 bin]$ echo $ORACLE_HOME
[grid@node1 bin]$ echo $ORACLE_SID
[grid@node1 bin]$ sqlplus / as sysdba
SQL*Plus: версия 12.1.0.1.0, дата выпуска: 9 октября 2013 г., среда, 13:51:39
© Oracle, 1982, 2013. Все права защищены.
Oracle Database 12c Enterprise Edition, версия 12.1.0.1.0 — 64-разрядная производственная среда
С Real Application Clusters и Automatic Storage Management
SQL> show con_id;
SQL> show con_name;
4. Использование Enterprise Manager (EM) Express для подключения к PDB
Прежде чем перейти по URL-ссылке для доступа к EM Express, необходимо выпустить следующего SQL-оператора, чтобы подтвердить порт для EM Express:
Если отображаются данные, показанные выше, можно подключиться к URL-адресу, отображаемому DBCA.
Однако если отображаются неопределенные данные, например,
Процедура PL/SQL успешно завершена.
После этого попробуйте открыть EM Express с помощью URL-адреса.
Чтобы установить порт EM Express для PDB, необходимо изменить контейнер на соответствующие PDB и выполнить процедуру PL/SQL для настройки порта для этого контейнера.
SQL> alter session set container = pdb1;
SQL> alter session set container = pdb2;
Читайте также: