Застосовується до:
База даних Oracle - Операційна система Oracle 12cR1 12.1.0.1.0 Enterprise Edition
– Oracle Linux 6.4 з ядром 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, яке створюється програмним забезпеченням бази даних автоматично.
- Використання користувацьких сервісів, створених за допомогою властивості pdb за допомогою утиліти SRVCTL, яка пов'язує службу з базами даних, що підключаються
- Використання команди alter session і встановлення контейнера в потрібний контейнер
- Використання Enterprise Manager Express
1.Використання служби за замовчуванням для підключення до PDB
Щоб встановити з'єднання з pdb за допомогою служби за замовчуванням, потрібно зробити наступне.
- У файлі tnsnames.ora потрібно зробити запис, який визначає адреси баз даних, які дозволяють встановити зв'язок з базою даних.
- Стан pdb має бути змінено з mount на режим читання запису.
Запис, який необхідно зробити у файлі tnsnames.ora:
У випадку 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 =
(ОПИС =
(ADDRESS = (PROTOCOL = TCP) (HOST = OracleRACscan.dbase.lab)(PORT = 1521))
(CONNECT_DATA =
(СЕРВЕР = ВИДІЛЕНИЙ)
(SERVICE_NAME = pdb2.dbase.lab)
))
Зміна
статусу бази даних, що підключається:При створенні pdbs, за замовчуванням,
open_mode має значення тільки 'Mounted'. Це можна перевірити наступним чином:
SQL> select name, open_mode from v$pdbs;
ІМ'Я OPEN_MODE
PDB$SEED ТІЛЬКИ
ДЛЯ ЧИТАННЯ PDB1 MOUNT PDB2 MOUNT
Наступна команда відкриває всі бази даних, що підключаються, у режимі читання запису.
> База даних SQL Alter, що підключається, вся відкрита;
Після цього
з'єднання з базою даних можна встановити за допомогою sqlplus наступним чином:[oracle@node1 bin]$ sqlplus sys/oracle@pdb1 as sysdba
SQL*Plus:
Реліз 12.1.0.1.0 Виробництво на Вт жовтня 8 11:23:32 2013 Авторське право (c) 1982, 2013
, Oracle. Всі права захищені.
Підключено до:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64-розрядне виробництво з розбивкою на розділи, кластерами реальних додатків, автоматичним управлінням сховищем, OLAP, розширеною аналітикою та опціями
тестування реальних додатків
2. Використання визначеної користувачем служби для підключення до PDB
Описану вище службу за замовчуванням слід використовувати лише для адміністративних цілей, і її не слід використовувати для програм. Завжди для застосунків потрібно використовувати користувацькі служби, оскільки користувацькі служби можна налаштувати відповідно до вимог програм. Встановлення з'єднання за допомогою користувацьких сервісів включає в себе наступні кроки:
- Створення служби баз даних з властивістю PDB за допомогою утиліти SRVCTL
- Створіть запис у файлі tnsnames.ora для створеного сервісу
- Запустити послугу
- Підключіться до бази даних за допомогою сервісу з властивістю pdb, створеним на кроці a
a. Створіть службу бази даних з властивістю PDB за допомогою утиліти
SRVCTLНаступні команди за допомогою утиліти SRVCTL створюють дві служби баз даних hr1 і sales1, які будуть пов'язані з базою даних, що підключається pdb1 :
[[oracle@node1 bin]$ srvctl add service -db cpdb -service hr1 -pdb pdb1 -pdb pdb1 -available cpdb2[oracle@node1 bin]$ srvctl add service -db cpdb -service sales1 -pdb pdb1 -ppdb1 -available cpdb2
Властивість pdb можна переглянути з all_services словника даних.
SQL> SELECT NAME, PDB FROM all_services;
NAME PDB pdb1.dbase.lab PDB1 hr1 PDB1 sales1 PDB1 PDB1
Команда $ srvctl config service –db <databasename> також виводить список доступних служб.
b.Створіть запис у файлі tnsnames.ora для створеної
служби бази даних Ми можемо створити HR_PDB1 та SALES_PDB1, мережеві назви послуг, які HR-додаток та додаток для продажів можуть використовувати, відповідно, для підключення до бази даних, що підключається, pdb1, наступним чином:
HR_PDB1 =
(ОПИС = (АДРЕСА = (ПРОТОКОЛ = TCP)(ХОСТ = OracleRACscan.dbase.lab)(ПОРТ = 1521)) (CONNECT_DATA = (СЕРВЕР = ВИДІЛЕНИЙ) (SERVICE_NAME = hr1.dbase.lab) ))SALES_PDB1 =(ОПИС = (АДРЕСА = (ПРОТОКОЛ = TCP)(ХОСТ = OracleRACscan.dbase.lab)(ПОРТ = 1521)) (CONNECT_DATA = (СЕРВЕР =
ВИДІЛЕНИЙ)
(SERVICE_NAME = sales1.dbase.lab)
)
)
c. Запустіть службу[oracle@nsnode1 bin]$ srvctl status service -db cpdb -service hr1 Service 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
Connected.
> SQL SHOW CON_ID;
CON_ID 3
> SQL ПОКАЗАТИ 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 13:56:27 2013 Авторське право (c) 1982, 2013
, Oracle. Всі права захищені.
Підключено до:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64-розрядне виробництво
з розбивкою на розділи, кластерами реальних додатків, автоматичним управлінням сховищем, OLAP,
розширеною аналітикою та параметрами
тестування реальних додатків SQL> show con_name;
CON_NAME CDB$ROOT
SQL> ALTER SESSION SET CONTAINER = PDB1;
Сеанс змінено.
> SQL SHOW CON_NAME;
CON_NAME PDB1
SQL> ALTER SESSION SET CONTAINER = PDB2;
Сеанс змінено.
> SQL SHOW CON_ID;
CON_ID 4
SQL> ALTER SESSION SET CONTAINER = CDB$ROOT;
Сеанс змінено.
> SQL SHOW CON_NAME;
CON_NAME CDB$ROOT
Описи ідентифікаторів контейнера такі:
Ідентифікатор контейнера |
Опис |
0 |
Весь ЦБД |
1 |
CDB$ROOT |
2 |
PDB$SEED |
від 3 до 254 |
PDB |
Таблиця 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 13:51:39 2013 Авторське право (c) 1982, 2013
, Oracle. Всі права захищені.
Підключено до:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64-розрядна продакшн
з реальними кластерами додатків і опціями
автоматичного управління сховищем SQL> show con_id;
CON_ID 0
SQL> показати con_name;
CON_NAME Не консолідований
4.Використання Enterprise Manager(EM) Express для підключення до PDB
Коли база даних створюється за допомогою Database Configuration Assistant (DBCA), на момент завершення URL-адреса для EM Express надається DBCA. URL-адреса має формат http://< hostname>:p ortnumber/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. SETHTTPSPORT, щоб встановити порт HTTPS для EM Express. Наприклад:
SQL> exec dbms_xdb_config.sethttpsport(5500);
Процедура PL/SQL успішно завершена.
Після цього спробуйте отримати доступ до EM Express за допомогою URL-адреси.
Порт HTTP також можна налаштувати для EM Express, як показано нижче:
SQL> виберіть dbms_xdb_config.gethttpport з dual;
> SQL exec dbms_xdb_config.sethttpport(8080);
Щоб встановити порт EM Express для pdbs, потрібно змінити контейнер на відповідний pdbs і виконати процедуру PL /SQL для встановлення порту для цього контейнера.
Після цього можна перевірити порт HTTP для cpdb,pdb1 і pdb2 наступним чином:
SQL> вибрати dbms_xdb_config.gethttpport з dual;
GETHTTPPORT
8080
SQL> alter session set container = pdb1;
Сеанс змінено.
> SQL вибираємо dbms_xdb_config.gethttpport з dual;
GETHTTPPORT
8081
SQL> alter session set container = pdb2;
Сеанс змінено.
> SQL вибираємо dbms_xdb_config.gethttpport з dual;
GETHTTPPORT
8082
ПРИМІТКИ: Якщо все одно не вдається підключитися до URL-адреси EM Express, перезавантажте елемент керування прослуховування як користувач сітки та повторіть спробу.