Подключение к БД
Для подключения к БД Oracle можно использовать программу « SQL Plus » и запускать ее лучше не из папки «Пуск – OraClient11g_home1 – Application Development – SQL Plus », а из консоли «Пуск – Выполнить… – cmd – sqlplus », т.к. если будут глючить шрифты, то надо их тут же переключить командами « chcp 1251» или « chcp 866».
После запуска утилиты « SQL Plus » будет предложено ввести логин и пароль, типа:
Enter user-name : SYSTEM
Enter password : masterkey
Если логины /пароли правильные, то появится строка с приглашением ввести SQL -код:
Не могу подключиться к БД через SQL*Plus после создания нового пользователя
db12c — это SERVICE_NAME. Да правда ошибся в последней команде. Но и при правильном написании ошибка ORA-01017.
9 июл 2020 в 9:01
У вас как минимум два имени, на cdb и pdb. Какое из них?
9 июл 2020 в 9:04
@0xbd, прости, немного не понял. Использовал только сл. имена: SID — db12c, pluggable database name — orclpdb.
9 июл 2020 в 9:07
Почитать можно в документации, там вполне доступно написано, с картинками. Контейнер это только оболочка, которая вмешает одну или несколько баз данных. Комманда — alter session set container . как раз осушествляет переход из контейнера в конкретную БД. Пожалуйста замените картинку текстом, чтобы команды оттуда можно было копировать.
9 июл 2020 в 9:36
Как и с SQL*Plus, имя сервиса — orclpdb. а не DB12C.
9 июл 2020 в 10:51
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
TL;DR С вновь созданным пользователем admin надо подключаться по имени сервиса самой БД (PDB), а не контейнера (CDB):
$ sqlplus admin/qq@localhost/orclpdb
Аналогично в других приложениях/инструментах, например через JDBC:
conn = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521/orcldb", "admin", "qq");
В общем случае, разработчик должен знать только имя сервиса подключаемой БД (PDB). После подключения, он работает как с обычной БД, ничем не отличающейся от одиночной БД в ранних версиях. О существовани какого-то контейнера, который эту БД включает, он знать ничего не должен.
Немного вглубь
Начиная с версии 12 введена мултиарендная (multitenant) арxитектура, состоящая из:
- Контейнер БД (CDB Container Database): Это оболочка для одной или нескольких БД, служит для их управления и содержит только их общую часть. Ни пользователей приложений, ни их данных, здесь нет.
- Подключаемые БД (PDB Pluggable Database): Это сами БД, то есть PDB это синоним того, к чему все привыкли — База Данных. Здесь собственно и содержатся пользователи и данные приложений. PDB делит общую часть CDB с другими PDB, но полностью от них независима.
Первые щаги для перемещения между CDB и PDB.
Без указания имени сервиса, подключение всегда в CDB, далее, переход в заданую PDB и обратно:
$ sqlplus /nolog SQL> conn / as sysdba Connected. SQL> show con_name CON_NAME ------------------------------ CDB$ROOT SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB1 READ WRITE NO 4 PDB2 MOUNTED SQL> alter session set container=pdb1; Session altered. SQL> show con_name CON_NAME ------------------------------ PDB1 SQL> alter session set container=cdb$root; Session altered. SQL> show con_name CON_NAME ------------------------------ CDB$ROOT
Как подключиться к подключаемым базам данных в Oracle RAC 12cR1?
Наша задача — предоставлять решения для упрощения ИТ-инфраструктуры, предлагая решения для баз данных, специализированную разработку, динамические ЦОД и гибкие вычислительные системы.
Сводка: Наша задача — предоставлять решения для упрощения ИТ-инфраструктуры, предлагая решения для баз данных, специализированную разработку, динамические ЦОД и гибкие вычислительные системы. . Показать больше Показать меньше
- Содержание статьи
- Свойства статьи
- Оцените эту статью
Возможно, эта статья была переведена автоматически. Если вы хотите поделиться своим мнением о ее качестве, используйте форму обратной связи в нижней части страницы.
Содержание статьи
Симптомы
Затронутые решения:
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 и
Red Hat Enterprise Linux с ядром 2.6.32-431.el6.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
При создании базы данных с помощью Database Configuration Assistant (DBCA) в момент завершения предоставляется URL-адрес для EM Express приложением DBCA. URL-адрес имеет формат «http://:portnumber/em» с 5500 в качестве идентификатора порта по умолчанию.
Прежде чем перейти по URL-ссылке для доступа к EM Express, необходимо выпустить следующего SQL-оператора, чтобы подтвердить порт для EM Express:
SQL> SELECT dbms_xdb_config.gethttpsport from dual;
Если отображаются данные, показанные выше, можно подключиться к 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;
SQL> alter session set container = pdb1;
SQL> select dbms_xdb_config.gethttpport from dual;
SQL> alter session set container = pdb2;
SQL> select dbms_xdb_config.gethttpport from dual;
ПРИМЕЧАНИЕ. Если по-прежнему не удается подключиться к URL-адресу EM Express, перезагрузите элемент управления приемника в качестве пользователя сетки и повторите попытку.
SQL Plus: Создание и выполнение сценариев — Подключение к стандартной и удаленной базе данных в SQL*Plus
Подключение к стандартной и удаленной базе данных в SQL*Plus
Для доступа к данным необходимо сначала подключиться к базе данных. При запуске SQL*Plus обычно происходит подключение к стандартной базе данных с указанным именем пользователя и паролем. После запуска и успешной регистрации можно в любой момент подключиться к схеме другого пользователя или к другой базе данных. Для этого используется команда CONNECT.
Стандартная база данных конфигурируется на уровне операционной системы, путем установки переменной среды или редактирования файла конфигурации Oracle.
Использование команды CONNECT
Команда CONNECT имеет следующий синтаксис:
Информация о пользователе и базе данных, к которым необходимо подключиться, вводится в том же формате, что и при запуске (см. синтаксис вызова утилиты SQL*Plus выше). При подключении, как и при запуске, можно указать роль пользователя, от имени которого оно выполняется.
Если пароль пользователя устарел, при подключении придется ввести новый пароль. Если же учетная запись заблокирована, то выдается сообщение об этом и подключение не происходит, пока администратор не разблокирует учетную запись.
В случае если подключение по любой причине не удалось, вы остаетесь отключенными от базы данных, о чем будет сообщено. Можно также явно отключиться от схемы текущего пользователя с помощью команды DISCONNECT.
Базы данных на других компьютерах или просто отличающиеся от стандартной называются удаленными . К удаленной базе данных можно подключиться, если для нее сконфигурированы сетевые службы Oracle Net и драйверы сетевых служб удаленной базы данных и локального клиента SQL*Plus совместимы.
Формат строки связи для удаленной базы данных
К удаленной базе данных можно подключиться двумя способами:
- из SQL*Plus с помощью команды CONNECT;
- при запуске SQL*Plus с помощью опций командной строки.
В обоих случаях необходимо указать строку связи , задающую сетевую службу, к которой необходимо подключиться. Формат строки связи зависит от версии сетевых служб Oracle на машине, с которой выполняется подключение. При использовании Net8 обычно строка связи соответствует имени сетевой службы из файла tnsnames.ora, находящегося (в версиях 8.1.x и выше) в каталоге $ORACLE_HOME/network/admin/.
Пусть в файле tnsnames.ora имеется следующая запись для сетевой службы Oracle:
TRAINING = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = creator)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = training) ) )
Тогда для подключения к соответствующей базе данных при запуске SQL*Plus необходимо ввести, например, следующую команду в окне командной строки операционной системы:
sqlplus scott/tiger@training
Для подключения к соответствующей базе данных из SQL*Plus необходимо выполнить команду вида:
CONNECT scott/tiger@training
