Как установить соединение с подключаемыми базами данных в Oracle RAC 12cR1?
Summary: Наша задача — предоставлять решения для упрощения ИТ-инфраструктуры, предлагая решения для баз данных, специализированную разработку, динамические ЦОД и гибкие вычислительные системы.
This article applies to
This article does not apply to
This article is not tied to any specific product.
Not all product versions are identified in this article.
Symptoms
Применимо к следующим компонентам.
База данных Oracle — Oracle 12cR1 12.1.0.1.0 Enterprise Edition
Операционные системы — Oracle Linux 6.4 с ядром kernel 2.6.39-400.109.17.1.el6uek.x86-64 и
Платформы хранения данных — Dell EqualLogic PS 5000 и Dell EqualLogic PS 6110
Проблема.
Как установить соединение с подключаемыми базами данных в Oracle RAC 12CR1?
Решение.
Существует четыре способа установки соединения с подключаемыми базами данных (PDB).
Для установки соединения с PDB с помощью службы по умолчанию необходимо выполнить следующие действия.
При использовании Oracle RAC 12c, хотя программное обеспечение базы данных автоматически создает службу по умолчанию с тем же именем, что и подключаемая база данных, файл tnsnames.ora создается только с одной записью, имеющей отношение к глобальной базе данных. Например, при использовании двухузлового Oracle RAC 12c, где «cpdb» — глобальная база данных, «pdb1» и «pdb2» — две созданные подключаемые базы данных, а «cpdb1» и «cpdb2» — два экземпляра, запись по умолчанию в файле tnsnames.ora приведена ниже:-
CPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = cpdb.dbase.lab)
)
)
Таким образом, необходимо создать соответствующие записи для имени службы по умолчанию подключаемых баз данных в файле tnsnames.ora, как показано ниже:
PDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP) (HOST = OracleRACscan.dbase.lab)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdb1.dbase.lab)
)
)
PDB2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP) (HOST = OracleRACscan.dbase.lab)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdb2.dbase.lab)
)
)
Изменение статуса подключаемой базы данных.
При создании PDB по умолчанию для параметра «open_mode» установлено значение «Mounted». Это можно проверить следующим образом:
SQL> select name, open_mode from v$pdbs;
NAME OPEN_MODE
PDB$SEED READ ONLY
PDB1 MOUNTED
PDB2 MOUNTED
Следующая команда открывает все подключаемые базы данных в режиме чтения/записи.
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
Описанную выше службу по умолчанию следует использовать только в административных целях, а не для приложений. Для приложений всегда необходимо использовать определенные пользователем службы, поскольку их можно настраивать в соответствии с требованиями приложений. Установка соединения с помощью определенных пользователем служб включает следующие действия:
Следующие команды, использующие утилиту 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;
NAME PDB
pdb1.dbase.lab PDB1
hr1 PDB1
sales1 PDB1
Команда «$ srvctl config service –db <имя_базы_данных>» также содержит список доступных служб.
б) Создание записи в файле tnsnames.ora для созданной службы базы данных
Имена служб HR_PDB1 и SALES_PDB1, которые могут использоваться приложениями «hr» и «sales» соответственно для установки соединения с подключаемой базой данных «pdb1», можно создать следующим образом:
HR_PDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = hr1.dbase.lab)
)
)
SALES_PDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = sales1.dbase.lab)
)
)
в) Запуск службы
[oracle@nsnode1 bin]$ srvctl status service -db cpdb -service hr1
Service hr1 is not running
[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
Connected.
SQL> SHOW CON_ID;
CON_ID
3
SQL> SHOW CON_NAME;
CON_NAME
PDB1
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. All rights reserved.
Назначение соединения:
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;
CON_NAME
CDB$ROOT
SQL> ALTER SESSION SET CONTAINER = PDB1;
Session altered.
SQL> SHOW CON_NAME;
CON_NAME
PDB1
SQL> ALTER SESSION SET CONTAINER = PDB2;
Session altered.
SQL> SHOW CON_ID;
CON_ID
4
SQL> ALTER SESSION SET CONTAINER = CDB$ROOT;
Session altered.
SQL> SHOW CON_NAME;
CON_NAME
CDB$ROOT
Ниже приведено описание идентификаторов контейнеров.
Таблица 1. Описания идентификаторов контейнеров
В данном конкретном примере «con_id 3» представляет «pdb1», а «con_id 4» — «pdb2».
[grid@node1 bin]$ echo $ORACLE_HOME
/u01/app/12.1.0/grid
[grid@node1 bin]$ echo $ORACLE_SID
+ASM1
[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;
CON_ID
0
SQL> show con_name;
CON_NAME
Non Consolidated
4. Использование Enterprise Manager (EM) Express для подключения к PDB
При создании базы данных с помощью Database Configuration Assistant (DBCA) на момент завершения URL-адрес для EM Express предоставляется DBCA. URL-адрес имеет формат «http://<hostname>:portnumber/em» с 5500 в качестве идентификатора порта по умолчанию.
Прежде чем перейти по этому URL-адресу для доступа к EM Express, необходимо выполнить следующую инструкцию SQL, чтобы подтвердить порт для EM Express:
SQL> SELECT dbms_xdb_config.gethttpsport from dual;
GETHTTPSPORT
5500
Если выходные данные совпадают с указанными выше, можно подключиться к URL-адресу, отображаемому DBCA.
Однако, если выходные данные не определены, например
GETHTTPSPORT,
необходимо выполнить процедуру PL/SQL, DBMS_XDB_CONFIG.SETTPSPORT, чтобы установить порт HTTPS для EM Express. Например:
SQL> exec dbms_xdb_config.sethttpsport(5500);
Процедура PL/SQL успешно завершена.
После этого попробуйте открыть EM Express с помощью URL-адреса.
Порт HTTP также можно настроить для EM Express, как указано ниже:
SQL> select dbms_xdb_config.gethttpport from dual;
SQL> exec dbms_xdb_config.sethttpport(8080);
Чтобы установить порт EM Express для баз данных PDB, необходимо изменить контейнер на соответствующие PDB и выполнить процедуру PL/SQL для установки порта для этого контейнера.
После этого можно проверить порт HTTP для «cpdb», «pdb1» и «pdb2» следующим образом:
SQL> select dbms_xdb_config.gethttpport from dual;
GETHTTPPORT
8080
SQL> alter session set container = pdb1;
Session altered.
SQL> select dbms_xdb_config.gethttpport from dual;
GETHTTPPORT
8081
SQL> alter session set container = pdb2;
Session altered.
SQL> select dbms_xdb_config.gethttpport from dual;
GETHTTPPORT
8082
ПРИМЕЧАНИЕ. Если по-прежнему не удается подключиться к URL-адресу EM Express, перезагрузите элемент управления прослушивателя в качестве пользователя «grid» и повторите попытку.
База данных Oracle — Oracle 12cR1 12.1.0.1.0 Enterprise Edition
Операционные системы — Oracle Linux 6.4 с ядром kernel 2.6.39-400.109.17.1.el6uek.x86-64 и
Red Hat Enterprise Linux с ядром 2.6.32-431.el6.x86_64
Платформы хранения данных — Dell EqualLogic PS 5000 и Dell EqualLogic PS 6110
Проблема.
Как установить соединение с подключаемыми базами данных в Oracle RAC 12CR1?
Решение.
Существует четыре способа установки соединения с подключаемыми базами данных (PDB).
- Использование службы по умолчанию с тем же именем, что и имя базы данных, которая создается автоматически программным обеспечением базы данных.
- Использование определенных пользователем служб, созданных со свойством PDB с помощью утилиты SRVCTL, которая связывает службу с подключаемыми базами данных
- Использование команды «alter session» и установка необходимого контейнера
- Использование Enterprise Manager Express
Для установки соединения с PDB с помощью службы по умолчанию необходимо выполнить следующие действия.
- В файле tnsnames.ora необходимо создать запись, которая определяет адреса баз данных, позволяющие установить соединение с базой данных.
- Необходимо изменить состояние PDB с установленного на режим чтения и записи.
При использовании Oracle RAC 12c, хотя программное обеспечение базы данных автоматически создает службу по умолчанию с тем же именем, что и подключаемая база данных, файл tnsnames.ora создается только с одной записью, имеющей отношение к глобальной базе данных. Например, при использовании двухузлового Oracle RAC 12c, где «cpdb» — глобальная база данных, «pdb1» и «pdb2» — две созданные подключаемые базы данных, а «cpdb1» и «cpdb2» — два экземпляра, запись по умолчанию в файле tnsnames.ora приведена ниже:-
CPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = cpdb.dbase.lab)
)
)
Таким образом, необходимо создать соответствующие записи для имени службы по умолчанию подключаемых баз данных в файле tnsnames.ora, как показано ниже:
PDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP) (HOST = OracleRACscan.dbase.lab)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdb1.dbase.lab)
)
)
PDB2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP) (HOST = OracleRACscan.dbase.lab)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdb2.dbase.lab)
)
)
Изменение статуса подключаемой базы данных.
При создании PDB по умолчанию для параметра «open_mode» установлено значение «Mounted». Это можно проверить следующим образом:
SQL> select name, open_mode from v$pdbs;
NAME OPEN_MODE
PDB$SEED READ ONLY
PDB1 MOUNTED
PDB2 MOUNTED
Следующая команда открывает все подключаемые базы данных в режиме чтения/записи.
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;
NAME PDB
pdb1.dbase.lab PDB1
hr1 PDB1
sales1 PDB1
Команда «$ srvctl config service –db <имя_базы_данных>» также содержит список доступных служб.
б) Создание записи в файле tnsnames.ora для созданной службы базы данных
Имена служб HR_PDB1 и SALES_PDB1, которые могут использоваться приложениями «hr» и «sales» соответственно для установки соединения с подключаемой базой данных «pdb1», можно создать следующим образом:
HR_PDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = hr1.dbase.lab)
)
)
SALES_PDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = sales1.dbase.lab)
)
)
в) Запуск службы
[oracle@nsnode1 bin]$ srvctl status service -db cpdb -service hr1
Service hr1 is not running
[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
Connected.
SQL> SHOW CON_ID;
CON_ID
3
SQL> SHOW CON_NAME;
CON_NAME
PDB1
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. All rights reserved.
Назначение соединения:
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;
CON_NAME
CDB$ROOT
SQL> ALTER SESSION SET CONTAINER = PDB1;
Session altered.
SQL> SHOW CON_NAME;
CON_NAME
PDB1
SQL> ALTER SESSION SET CONTAINER = PDB2;
Session altered.
SQL> SHOW CON_ID;
CON_ID
4
SQL> ALTER SESSION SET CONTAINER = CDB$ROOT;
Session altered.
SQL> SHOW CON_NAME;
CON_NAME
CDB$ROOT
Ниже приведено описание идентификаторов контейнеров.
| ID контейнера | Описание |
| 0 | Вся CDB |
| 1. | CDB$ROOT |
| 2. | PDB$SEED |
| От 3 до 254 | PDB |
В данном конкретном примере «con_id 3» представляет «pdb1», а «con_id 4» — «pdb2».
[grid@node1 bin]$ echo $ORACLE_HOME
/u01/app/12.1.0/grid
[grid@node1 bin]$ echo $ORACLE_SID
+ASM1
[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;
CON_ID
0
SQL> show con_name;
CON_NAME
Non Consolidated
4. Использование Enterprise Manager (EM) Express для подключения к PDB
При создании базы данных с помощью Database Configuration Assistant (DBCA) на момент завершения URL-адрес для EM Express предоставляется DBCA. URL-адрес имеет формат «http://<hostname>:portnumber/em» с 5500 в качестве идентификатора порта по умолчанию.
Прежде чем перейти по этому URL-адресу для доступа к EM Express, необходимо выполнить следующую инструкцию SQL, чтобы подтвердить порт для EM Express:
SQL> SELECT dbms_xdb_config.gethttpsport from dual;
GETHTTPSPORT
5500
Если выходные данные совпадают с указанными выше, можно подключиться к URL-адресу, отображаемому DBCA.
Однако, если выходные данные не определены, например
GETHTTPSPORT,
необходимо выполнить процедуру PL/SQL, DBMS_XDB_CONFIG.SETTPSPORT, чтобы установить порт HTTPS для EM Express. Например:
SQL> exec dbms_xdb_config.sethttpsport(5500);
Процедура PL/SQL успешно завершена.
После этого попробуйте открыть EM Express с помощью URL-адреса.
Порт HTTP также можно настроить для EM Express, как указано ниже:
SQL> select dbms_xdb_config.gethttpport from dual;
SQL> exec dbms_xdb_config.sethttpport(8080);
Чтобы установить порт EM Express для баз данных PDB, необходимо изменить контейнер на соответствующие PDB и выполнить процедуру PL/SQL для установки порта для этого контейнера.
После этого можно проверить порт HTTP для «cpdb», «pdb1» и «pdb2» следующим образом:
SQL> select dbms_xdb_config.gethttpport from dual;
GETHTTPPORT
8080
SQL> alter session set container = pdb1;
Session altered.
SQL> select dbms_xdb_config.gethttpport from dual;
GETHTTPPORT
8081
SQL> alter session set container = pdb2;
Session altered.
SQL> select dbms_xdb_config.gethttpport from dual;
GETHTTPPORT
8082
ПРИМЕЧАНИЕ. Если по-прежнему не удается подключиться к URL-адресу EM Express, перезагрузите элемент управления прослушивателя в качестве пользователя «grid» и повторите попытку.
Article Properties
Article Number: 000146485
Article Type: Solution
Last Modified: 21 Feb 2021
Version: 3
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.