Подключение к БД
Для подключения к БД 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 -код:
Подключение к базе данных Oracle (OracleToSQL)
Чтобы перенести базы данных Oracle в SQL Server, необходимо подключиться к базе данных Oracle, которую требуется перенести. При подключении SSMA получает метаданные обо всех схемах Oracle, а затем отображает его в области обозревателя метаданных Oracle. SSMA хранит сведения о сервере базы данных, но не сохраняет пароли.
Подключение к базе данных остается активным, пока не закроете проект. При повторном открытии проекта необходимо повторно подключиться, если требуется активное подключение к базе данных.
Метаданные базы данных Oracle не обновляются автоматически. Вместо этого, если вы хотите обновить метаданные в обозревателе метаданных Oracle, необходимо вручную обновить его. Дополнительные сведения см. в разделе об обновлении метаданных Oracle в этой статье.
Необходимые разрешения Oracle
Как минимум, учетная запись, используемая для подключения к базе данных Oracle, должна иметь следующие разрешения:
| Разрешение | Description |
|---|---|
| CONNECT | Требуется для подключения (создания сеанса) к базе данных. |
| SELECT ANY DICTIONARY | Требуется для запроса системных таблиц словарей (например, SYS.MLOG$ ) для обнаружения всех объектов. |
Это позволяет SSMA загружать все объекты в схеме, принадлежащей подключаемого пользователя. В большинстве реальных сценариев существуют перекрестные ссылки на схемы между хранимыми процедурами, и SSMA необходимо иметь возможность обнаруживать все объекты, на которые ссылается ссылка для успешного преобразования. Чтобы получить метаданные для объектов, определенных в других схемах, учетная запись должна иметь следующие дополнительные разрешения:
| Разрешение | Description |
|---|---|
| SELECT ANY TABLE | Требуется для обнаружения таблиц, представлений, материализованных представлений и синонимов в других схемах. |
| SELECT ANY SEQUENCE | Требуется для обнаружения последовательностей в других схемах. |
| CREATE ANY PROCEDURE | Требуется для обнаружения PL/SQL для процедур, функций и пакетов в других схемах. |
| CREATE ANY TRIGGER | Требуется для обнаружения определений триггеров в других схемах. |
| CREATE ANY TYPE | Требуется для обнаружения типов, определенных в других схемах. |
Для некоторых функций SSMA требуются дополнительные разрешения. Например, если вы хотите использовать функции тестирования и управления резервными копиями, необходимо предоставить пользователю следующие разрешения:
| Разрешение | Description |
|---|---|
| EXECUTE ANY PROCEDURE | Требуется для выполнения процедур и функций, которые вы хотите протестировать во всех схемах. |
| CREATE ANY TABLE и ALTER ANY TABLE | Требуется для создания и изменения временных таблиц для отслеживания изменений и резервных копий. |
| INSERT ANY TABLE и UPDATE ANY TABLE | Требуется вставить данные отслеживания изменений и резервного копирования во временные таблицы. |
| DROP ANY TABLE | Требуется удалить временные таблицы, используемые для отслеживания изменений и резервного копирования. |
| CREATE ANY INDEX и ALTER ANY INDEX | Требуется для создания и изменения индексов во временных таблицах, используемых для отслеживания изменений и резервного копирования. |
| DROP ANY INDEX | Требуется удалить индексы во временных таблицах, используемых для отслеживания изменений и резервного копирования. |
| CREATE ANY TRIGGER и ALTER ANY TRIGGER | Требуется для создания и изменения временных триггеров, используемых для отслеживания изменений. |
| DROP ANY TRIGGER | Требуется удалить временные триггеры, используемые для отслеживания изменений. |
Это универсальный набор разрешений, необходимых для правильной работы SSMA. Если вы хотите сузить область миграции в подмножество схем, можно сделать это, предоставив выше разрешения ограниченному набору объектов, а не ALL . Хотя это возможно, может быть очень трудно правильно определить все зависимости, поэтому предотвратить правильное функционирование SSMA. Настоятельно рекомендуется придерживаться универсального набора, определенного ранее, чтобы устранить возможные проблемы с разрешениями во время миграции.
Установка подключения к Oracle
При подключении к базе данных SSMA считывает метаданные базы данных, а затем добавляет эти метаданные в файл проекта. Эти метаданные используются SSMA при преобразовании объектов в синтаксис SQL Server и при переносе данных в SQL Server. Эти метаданные можно просмотреть в области обозревателя метаданных Oracle и просмотреть свойства отдельных объектов базы данных.
Прежде чем пытаться подключиться, убедитесь, что сервер базы данных запущен и может принимать подключения.
Соединение с Oracle
- В меню «Файл» выберите «Подключиться к Oracle«. Если вы ранее подключились к Oracle, имя команды — reconnect to Oracle.
- В поле «Поставщик» выберите поставщика клиентов Oracle или поставщик OLE DB в зависимости от того, какой поставщик установлен. По умолчанию используется клиент Oracle.
- В поле «Режим» выберите стандартный режим, режим TNSNAME или режим строки подключения. Используйте стандартный режим, чтобы указать имя сервера и порт. Используйте режим имени службы, чтобы вручную указать имя службы Oracle. Используйте режим строки подключения для предоставления полной строки подключения.
- Если выбрать стандартный режим, укажите следующие значения:
- В поле имени сервера введите или выберите имя или IP-адрес сервера базы данных.
- Если сервер базы данных не настроен на прием подключений к порту по умолчанию ( 1521 ), введите номер порта, используемый для подключений Oracle в поле порта сервера.
- В поле безопасности Oracle введите системный идентификатор.
- В поле имени пользователя введите учетную запись Oracle с необходимыми разрешениями.
- В поле «Пароль» введите пароль для указанного имени пользователя.
- В поле «Идентификатор подключения» введите идентификатор подключения (псевдоним TNS) базы данных.
- В поле имени пользователя введите учетную запись Oracle с необходимыми разрешениями.
- В поле «Пароль» введите пароль для указанного имени пользователя.
Повторное подключение к Oracle
Подключение к серверу базы данных остается активным, пока не закроете проект. При повторном открытии проекта необходимо повторно подключиться, если требуется активное подключение к базе данных. Вы можете работать в автономном режиме, пока не нужно обновлять метаданные, загружать объекты базы данных в SQL Server и переносить данные.
Обновление метаданных Oracle
Метаданные базы данных Oracle не обновляются автоматически. Метаданные в обозревателе метаданных Oracle — это моментальный снимок метаданных при первом подключении или при последнем обновлении метаданных вручную. Можно вручную обновить метаданные для всех схем, одной схемы или отдельных объектов базы данных.
Обновление метаданных
- Убедитесь, что вы подключены к базе данных.
- В обозревателе метаданных Oracle установите флажок рядом с каждой схемой или объектом базы данных, которые требуется обновить.
- Щелкните правой кнопкой мыши схемы или отдельный объект схемы или базы данных, а затем выберите «Обновить из базы данных«. Если у вас нет активного подключения, SSMA отображает диалоговое окно Connect to Oracle , чтобы подключиться.
- В диалоговом окне «Обновить из базы данных» укажите, какие объекты нужно обновить.
- Чтобы обновить объект, выберите активное поле рядом с объектом, пока не появится стрелка.
- Чтобы предотвратить обновление объекта, выберите активное поле рядом с объектом, пока не появится X.
- Чтобы обновить или отклонить категорию объектов, выберите активное поле рядом с папкой категории.
Чтобы просмотреть определения цветового кода, нажмите кнопку «Условные обозначения «.
Далее
- Следующим шагом в процессе миграции является подключение к экземпляру SQL Server.
См. также
Устранение неполадок подключений БД Oracle
Когда базы данных Oracle не работают, целесообразно проверить подключения к ним.
Периодически приходится проверять, работает ли база данных Oracle. Иногда процесс, запущенный на одном сервере, извлекает данные из базы данных на другом сервере, и, если процесс завершается неудачей, тестирование соединения с базой данных является хорошей отправной точкой для определения того, что пошло не так.
Проверка локальной базы данных
Если база данных находится в локальной системе, сперва проверяем состояние процесса и должны увидеть результат, подобный показанному на скриншоте ниже.
Эти выходные данные говорят нам, что процессы Oracle запущены, включая tnslsnr , часто называемый «прослушивателем» и критически важный для подключения к локальной базе данных. Также можно проверить вывод команды netstat , чтобы увидеть, порт, который «опрашивает» Oracle и использует по умолчанию. Это порт, который должен был открыть «прослушиватель».
Использование tnsping
Другая, потенциально более полезная команда — это tnsping , которая использует информацию из файла БД Oracle tnsnames.ora для проверки возможности подключения. Если, например, набрать команду tnsping ORCL , команда будет искать базу данных с именем службы ORCL, отправит запрос типа ping на настроенный порт и сообщит об ответе. Успешный ответ от tnsping будет выглядеть примерно так:
Обратите внимание на ответ «ОК» в последней строке. Также получен отчет о том, сколько времени потребовалось на ответ. Одиннадцать секунд — быстрый ответ. Если проверялась удаленная система, то потребовалось бы в десять или более раз больше времени, чтобы получить ответ.
Если Oracle прослушивает порт, отличный от 1521, команда tnsping все равно будет работать, предполагая, что файл tnsnames.ora содержит правильную информацию. Запись tnsnames.ora для одной базы данных будет выглядеть примерно так:
Обратите внимание, как имя службы (ORCL), которое использовалось в примере команды tnsping , и порт, на который отвечает «прослушиватель» Oracle (1521), настроены в этом дескрипторе базы данных.
Использование sqlplus
Другая команда, которую любят использовать администраторы БД для проверки связи с базой данных Oracle — это sqlplus . С помощью sqlplus (установленного вместе с Oracle) можно проверить, отвечает ли Oracle, а также и запустить несколько команд sqlplus , чтобы убедиться, что таблицы или их содержимое соответствуют тому, что мы ожидаем увидеть. Команда sqlplus имеет следующую форму для подключения к базе данных Oracle:
sqlplus username/password@SID
SID в этом описании может быть SID или SERVICE_NAME , взаимозаменяемыми в некоторых версиях Oracle. Например, можно ввести:
% sqlplus admin/f0xtrawt@ORCL
Эта команда определяет имя пользователя, пароль и SERVICE_NAME/SID в одной команде. После подключения можно ввести пару команд sql, чтобы убедиться, что база данных работает правильно. Можно подсчитать количество пользовательских таблиц с помощью такой команды:
SQL> select count(*) from user_tables; COUNT(*) ---------- 45
Создание скрипта
Поскольку я не так часто пытаюсь устранить неполадки в базах данных Oracle, я предпочитаю сохранять команды для подключения к конкретной базе данных в виде простого скрипта. Я мог бы назвать скрипт для подключения к локальной базе данных connect2local и аналогичный сценарий для подключения к базе данных на удаленном сервере connect2rem или connect2mars (если удаленная система была названа mars ).
Чтобы облегчить мне использование БД Oracle, я сохраню переменные, которые хочу использовать, в профиле и буду использовать их по мере необходимости:
Мною написанный скрипт будет выглядеть так:
Когда я набираю connect2local , я ожидаю увидеть в ответ OK и возможность остаться в приглашении SQL> , из которого я могу выдавать запросы или набрать quit для выхода. Быстрые тесты, позволяющие определить, реагирует ли база данных Oracle, имеют большое значение для устранения проблем с подключением.
Не могу подключиться к БД через 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:511 ответ 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
