Мануал по сертификации Oracle
Процесс регистрации аккаунта является стандартным, поэтому в этом пункте опишу возможности существования данного аккаунта.
В целом, аккаунт Oracle это хорошо! Самый большой плюс, который я пока ощутил, это возможность скачать свежие дистрибутивы некоторых программ. Но нас больше интересует часть, связанная с сертификацией. Всю информацию о достигнутых результатах можно увидеть в сервисе CertView, как информация туда попадает, будет понятно из дальнейшей части статьи.
2. Регистрация аккаунта Pearson VUE
Процедуру проведения сертификационных тестов Oracle отдали на аутсорсинг, и этой процедурой как раз занимается Pearson VUE. У них в свою очередь есть куча аккредитованных центров тестирования по всему миру, в которых можно сдавать сертификационные тесты.
Так как за тестирование отвечает Pearson VUE, нам нужен их аккаунт. Регистрацию аккаунта опущу, так как это стандартная процедура.
Так как Pearson VUE проводит тестирование по всему, что только можно есть нюанс при регистрации и использование аккаунта, это помнить свою программу тестирования. Для нас это Information Technology (IT) -> Oracle.
3. Регистрируемся на экзамен
Регистрация на экзамен проходит через аккаунт Pearson VUE. Все шаги регистрации интуитивно понятны и просты за исключением выбора времени экзамена и центра. На этапе выбора центра тестирования, можно, указав свой город, выбрать несколько близлежащих центров, но после выбора одно из них мы можем увидеть, что выбрать время сдачи экзамена мы не можем. У нас в городе всего один центр тестирования и у них время сдачи экзаменов всегда закрыто, поэтому, когда я хочу сдать экзамен, я им звоню и договариваюсь, чтобы они открыли время на определенный день. При регистрации оплачиваем экзамен, готовимся (можно начать это делать задолго до регистрации на экзамен), сдаем, уходим из центра.
После первой сдачи экзамена вам присваивается персональный и уникальный Oracle Testing ID, его надо будет использовать на следующем этапе.
4. Привязка аккаунтов Pearson VUE и Oracle
Это, наверное, самое не очевидное в этой цепочке, но вкратце поясню, зачем это. Pearson VUE отвечает только за процедуру сдачи сертификационных экзаменов. У них нету сервисов, которые предоставляют вам информацию как вы сдали экзамен, и какие экзамены вы уже сдавали. Они выдают софт для аккредитованных организаций, где вы сдаете экзамен, после сдачи ваши результаты отправляют в Oracle, где они считают баллы и агрегируют все ваши успехи в сервисе CertView.
Для привязки нам понадобится в нашем аккаунте Oracle привязать его к аккаунту Pearson VUE по полученному нами Oracle Testing ID. Процедура привязки интуитивна и понятна, по крайней мере, каких-либо проблем с этим не помню, делается в несколько кликов.
Дополнительная информация
Результаты о сдаче экзамена в CertView появляются в течение получаса, а вот электронные вариант сертификата и логотипа только в течение 48 часов.
Постепенно с достижением новых вершин CertView появляются разные бонусы для сертифицированных специалистов, на пример, скидки на книжки.
Перечень сертификатов можно найти по ссылке.
P.S.: всем удачи на сдаче экзаменов.
Отладка в PL/SQL Developer
Привет! Меня зовут Алексей Маряхин, я работаю разработчиком на Oracle и пишу много, очень много кода. И когда программа ведёт себя не так, как ожидалось, на помощь приходит отладка.
Не так давно выяснил, что не все разработчики владеют функционалом отладки или знают её фичи. А если код сложный и баги искать всё равно надо? Литературы на русском языке про отладку практически нет.
Тогда я собрал подробный гайд для коллег и провёл внутренний семинар по обмену опытом. Материал получился настолько подробным и полезным, что решил поделиться им с сообществом программистов. На примере инструментов для работы с СУБД Oracle, которые используются у нас в компании, посмотрим, как работает отладка, сравним их в теории и узнаем, что внутри.
В серии из двух статей подробно расскажу о способах, инструментах и нюансах отладки кода PL/SQL. Первая часть — про инструмент PL/SQL Developer. Поехали!
Отладка: что и зачем. Настройка окружения
Отладка программного кода значительно упрощает его написание: можно сразу отлаживать алгоритмы и проверять, что происходит на каждом шаге. В существующем коде она ускоряет поиск ошибок и, как следствие, их исправление. Возможность полноценной пошаговой отладки существует и для PL/SQL.
Oracle предоставляет интерфейс для отладки в виде DBMS-пакетов — DBMS_DEBUG и DBMS_DEBUG_JDWP. Отлаживать можно хранимые объекты Oracle с SQL-кодом: procedure, function, package, package body, trigger, anonymous block, object type, object type body.
Помимо своих сессий, можно удалённо отлаживать код «чужих» сессий, а ещё по описанию в документации Oracle — хранимый Java-код. Но это отдельная тема со своими инструментами, и нужна другая среда разработки, её мы не проверяли.
Чтобы отладка стала функциональным инструментом, сэкономила время и упростила поиск критичных ошибок, перед началом работы нужно выполнить ряд настроек.
Права
Для запуска отладки необходимо выдать права пользователю, в сессии которого хотим выполнять отладку. Это обязательный пункт, без него отладка работать не будет:
-- Под SYS: GRANT DEBUG CONNECT SESSION TO ;
Эти права дают пользователю возможность выполнения отладки объектов своей схемы.
Если есть необходимость отладки объектов, расположенных в других схемах, то можно отдельно дать права на отладку конкретных объектов:
-- Под пользователем схемы-владельца объекта, который нужно отлаживать: GRANT DEBUG ON TO ;
Также есть возможность выдать права на отладку любого объекта БД, доступного для пользователя в его или других схемах:
-- Под SYS: GRANT DEBUG ANY PROCEDURE TO ;
Включение отладки для объектов
Чтобы отладка хранимого объекта стала возможной, необходимо скомпилировать его с добавлением отладочной информации.
Сделать это можно через контекстное меню объекта в PL/SQL Developer — пункт «Add debug information» (важно: данное действие приведёт к перекомпиляции объекта!):
Те же действия можно выполнить командой компиляции (ALTER PACKAGE Statement):
-- На примере пакетов, но для хранимых процедур или функций синтаксис аналогичный: ALTER PACKAGE COMPILE PLSQL_DEBUG = TRUE; -- Или ALTER PACKAGE COMPILE DEBUG; -- Или ALTER PACKAGE COMPILE PLSQL_CCFLAGS = 'debug:TRUE';
Рекомендованный Oracle вариант (см. COMPILE clause):
ALTER PACKAGE COMPILE PLSQL_OPTIMIZE_LEVEL = 1;
Также включить отладочную информацию можно на уровне сессии:
ALTER SESSION SET PLSQL_CCFLAGS = 'debug:TRUE'; -- Или ALTER SESSION SET PLSQL_DEBUG = TRUE; -- Или (рекомендованный враиант) ALTER SESSION SET PLSQL_OPTIMIZE_LEVEL = 1;
Эти команды не перекомпилируют существующие объекты, а только сообщают компилятору, что всё, что будет далее скомпилировано в этой сессии, будет снабжено отладочной информацией. То есть, чтобы включить отладку для какого-то уже существующего объекта, его всё равно нужно будет перекомпилировать в этой сессии.
Проверить включение отладки для объекта можно запросом:
SELECT * FROM USER_STORED_SETTINGS s WHERE s.object_name = 'PK_DEBUG_DEMO';
Шаги отладки
Подготовка скрипта
Для отладки в PL/SQL Developer есть специальный тип окна — «Test window».
Создаём отладочный скрипт одним из способов:
- Вручную: открываем тестовое окно — меню File >New >Test Window. Код скрипта пишем вручную.
- Из контекстного меню программного объекта: заходим в нужный пакет, вызываем контекстное меню для нужной процедуры или функции (только для public-методов), выбираем пункт «Test»:
В этом случае также откроется тестовое окно, но скрипт отладки будет сформирован автоматически. При этом все параметры будут автоматически добавлены в список bind-переменных скрипта (только для простых типов, сложные типы будут вынесены в блок DECLARE с пометкой, что для них нужна специальная обработка):
Настройка переменных скрипта
В тестовом скрипте есть возможность задания bind-переменных. Синтаксис стандартный для Oracle: двоеточие + имя переменной, например, «:1» или «:res».
Список bind-переменных отображается в таблице в нижней части тестового окна. Для обновления списка переменных можно использовать контекстное меню таблицы — пункт «Scan Variables»:
При этом все bind-переменные будут добавлены в таблицу, нужно будет только при необходимости поменять для них тип (по умолчанию добавляются с типом String). Также, при запуске скрипта все переменные будут добавлены в таблицу автоматически (если в настройках включён соответствующий параметр; по умолчанию включён).
Для некоторых типов переменных существуют такие особенности:
- LOB. Есть две категории таких типов — обычные CLOB / BLOB, а также Temporary CLOB / Temporary BLOB. Первые требуют дополнительной инициализации на сервере, и простой ввод данных в текстовое поле для них не имеет эффекта — в скрипт эти данные передаваться не будут (хотя сами данные ввести можно). Вторые могут содержать данные ещё до выполнения скрипта.
- Cursor. После выполнения скрипта содержимое курсора можно посмотреть, нажав кнопку «. » справа в поле с этой переменной.
Запуск
Для запуска пошаговой отладки нажимаем «Start debugger»:
После этого окно перейдёт в режим отладки: станут активными кнопки управления отладкой, и будет подсвечена текущая строка, на которой остановлено выполнение:
Пошаговая отладка
Команды пошаговой отладки
Команда
Описание
Выполнить скрипт до конца или до следующей точки остановки
Зайти внутрь процедуры или функции, находящейся на текущем шаге отладки. Для DML-операторов данная кнопка приведёт ко входу в соответствующий триггер, если он есть для таблицы
Пройти шаг отладки без захода в процедуру или функцию (внутрь зайдём, только если во вложенном методе есть точка остановки)
Выйти из текущей процедуры или функции на уровень выше — в код, из которого зашли в эту процедуру или функцию в режиме Step into
Run to cursor line
Выполнить до строки, в которой установлен курсор
Run to next exception
Выполнить до следующего исключения. Выполнение прервётся на строке, где на следующем шаге будет поднято исключение
Execute SQL in debug session.
Выполнить SQL-запрос в текущей сессии отладки
Точки прерывания
Для прерывания выполнения кода в нужном месте можно использовать точки прерывания. По ним разработчик может уточнить состояние исполняемого кода (значения переменных, состояние данных, текущий стек вызовов), чтобы определить, правильно ли ведёт себя программа. После остановки на точке прерывания есть возможность продолжить выполнение кода в режиме пошаговой отладки или выполнить до конца (или до следующей точки).
Что важно знать про работу с точками прерывания:
- Нужны для прерывания выполнения кода на указанной строке.
- Имеют эффект только на строках, содержащих исполняемые инструкции. То есть не будут работать в комментариях или в середине инструкции.
- Имеют эффект только для объектов, скомпилированных с добавлением отладочной информации (см. Включение отладки для объектов). То есть в анонимных блоках ставить нельзя.
- Точка применяется к номеру строки объекта (согласно номеру из dba_source). То есть, если установить точку в неактуальном объекте (в ещё не скомпилированной версии объекта), то она будет учитываться при отладке (если в dba_source на этой строке находится исполняемая инструкция), но поведение будет отличаться от ожидаемого, так как фактически точка установлена на другой строке.
- Ставятся локально для данного экземпляра PL/SQL Developer. Другие пользователи не будут видеть установленные вами точки прерывания.
Установка
Установка точки происходит стандартно, достаточно нажать на номер строки в объекте, в результате чего отобразится соответствующая иконка:
Установить точку можно как непосредственно в нужном объекте, открыв его для просмотра или редактирования, так и из скрипта отладки, когда отладка уже в процессе.
В самом тестовом скрипте точки остановки устанавливать нельзя — только в скомпилированных объектах. Поэтому, если код самого скрипта сложный и для его отладки требуются точки прерывания, нужно оформить его как хранимую процедуру, и уже её вызывать из тестового скрипта.
Управление точками прерывания также доступно через контекстное меню (правой кнопкой на номер строки). Через это же меню можно включить или отключить ранее установленную точку, а также открыть панель управления точками прерывания.
Настройка параметров
Для настройки параметров точки нужно открыть окно управления точками прерывания через контекстное меню «Modify breakpoint». Откроется окно со списком всех установленных точек и их параметрами:
- Use Condition. Можно задать условие прерывания в данной точке в виде SQL-выражения. Например, :var = ‘hello’ , где var — имя переменной в отлаживаемом коде.
- Use Message. При проходе через точку в output будет выводиться указанное здесь сообщение. Можно указывать подстановочные переменные типа «[Date]» (текущая дата), «[Pass]» (количество проходов в этой точке) (полный список см. в выпадающем меню под текстовым полем), а также значения переменных из PL/SQL-кода в формате «[:var]», где var — имя переменной (в том числе поддерживаются переменные сложных типов — массивы, структуры).
- Don’t Break. Не прерывать выполнение. Используется в сочетании с Use Message, когда нужно только вывести сообщение в лог (output скрипта; так называемые Logpoint или Tracepoint).
- Use Pass Count. Условие на количество проходов. Например, если указать 10, то выполнение будет останавливаться только каждый 10-й проход. Удобно для отладки циклов.
Возникновение исключений
Для поиска мест в коде, в которых возникает исключение, может быть полезен функционал остановки выполнения по видам ошибок Oracle.
Точки прерывания для ошибок (Error breakpoint) позволяют остановить выполнение на инструкции, в которой возникло исключение. При этом остановка происходит на шаг раньше поднятия исключения, что позволяет посмотреть место в коде и значения переменных, которые привели к исключению.
Для установки таких точек нужно задать коды ошибок, при возникновении которых требуется остановить выполнение. Делается это через меню «Modify breakpoints. » на вкладке «Error breakpoints». Сами точки на строке кода при этом ставить не нужно.
Например: создадим пакет с функцией, где происходит деление. Создаём скрипт, который приведёт к делению на ноль, и в «Error breakpoints» указываем ошибку деления на ноль:
Запустим скрипт под отладкой и выполним его до конца. Видим, что выполнение прервалось на инструкции, где возникло исключение деления на ноль, но отладка ещё активна, и можно посмотреть значения переменных:
Значения переменных
Просмотр в режиме отладки
Посмотреть значения переменных в режиме отладки можно двумя способами: 1) навести курсор на переменную (значение отобразится во всплывающей подсказке); 2) добавить переменную в область просмотра в нижней таблице окна отладки, либо прописав там имя переменной вручную, либо добавив её через меню «Add variable to Watches».
Переменные сложных типов
Довольно часто в PL/SQL-коде приходится использовать переменные сложных типов — коллекции и структуры. Возможности отладчика для таких типов ограничены, но, тем не менее, есть несколько полезных функций и для них:
- Коллекцию простых типов можно посмотреть целиком через контекстное меню «View collection variable»:
Если навести курсор на переменную, то значение будет вычисляться по всей подстроке. Например, для la_str_arr(i) отладчик попытается вычислить значение всей конструкции с учётом индекса i . Если нужно посмотреть значение не всей строки, а только её части, то эту часть нужно выделить — тогда отладчик будет пытаться вычислить значение только для выделенного текста. Например, если навести курсор на переменную типа «структура», то отобразится значение конкретного свойства:
Но если выделить саму структуру и навести курсор на выделенный текст, то отобразится вся структура целиком:
- Для коллекций добавить переменную в область просмотра можно как в виде конкретного элемента с указанием его индекса, например la_str_arr(1) , так и с переменной индекса, la_str_arr(i) . Если в контексте текущей исполняемой строки кода индекс задан, то значение будет вычислено.
- Если для структуры выполнить Add variable to watches из контекстного меню, то в список переменных будут добавлены все поля структуры:
Имеет эффект только для плоской (одноуровневой) структуры, без вложенных других структур или массивов.
Установка значений переменных
В режиме отладки есть возможность установки значений для переменных простых типов и для коллекций простых типов. Делается это через контекстное меню, команда «Set variable». В окне в поле ввода отобразится текущее значение переменной — указываем новое, нажимаем Enter (без этого значение не применится):
Выполнение запросов в сессии отладки
Ещё одна крайне полезная функция — возможность выполнения SQL- или PL/SQL-кода прямо в сессии отладки.
Позволяет просматривать и изменять данные непосредственно в процессе отладки, и таким образом проверять, как отлаживаемый скрипт влияет на данные. Также при необходимости можно изменять данные.
Для выполнения запроса в сессии отладки нажимаем «Execute SQL in debug session. », в открывшемся окне вводим текст запроса:
Результат выполнения откроется в отдельном окне:
Важно учитывать, что все выводимые в таком случае поля будут приведены к строке с ограничением в 1000 символов. Числовые поля и даты будут сконвертированы в строку согласно NLS-настройкам сессии отладки.
Для выражений SELECT есть ограничения к наименованиям полей: у них должны быть уникальные имена. Для повторяющихся названий полей необходимо присвоить уникальный псевдоним.
В сессии отладки можно выполнять любые DML-конструкции — SELECT, INSERT, UPDATE, DELETE, MERGE, изменять состояние сессии (ALTER SESSION SET. ), а также управлять транзакцией (COMMIT / ROLLBACK).
Кроме DML можно выполнять и PL/SQL-код. Например:
BEGIN DBMS_OUTPUT.put_line(PK_DEBUG_DEMO.get_order(19014)); END;
Результат такого запроса будет выведен в output сессии отладки.
Стоит заметить, что парсер этого окна довольно капризный. Он может выдавать ошибки на вполне правильный с точки зрения синтаксиса код, поэтому писать его лучше как можно более просто. Например, если в начале скрипта будет закомментированная строка, то такой код уже будет считаться некорректным. И также ошибки могут возникать при добавлении в код блочных комментариев, при слишком большом количестве полей в запросе и т. д.
Особенности отладки в PL/SQL Developer
1. В самом тестовом скрипте нельзя ставить точки остановки, поэтому если нужно проверить сложный скрипт с большим количеством вызовов и циклов, то лучше оформить его в виде пакета или хранимой процедуры или функции.
2. В некоторых случаях при отладке может не работать отображение значений переменных. Связано это с наличием в коде определённых конструкций (использование пользовательских типов), см. SQL Developer doesn’t step into code (для SQL Developer проблема также актуальна). В таком случае можно сделать копию пакета, удалив мешающий код и оставив только те процедуры или функции, которые собираемся отлаживать.
3. Если уже открытый в Test window объект изменился, нужно обновить его, закрыв соответствующую ему вкладку (переключиться на вкладку объекта, закрыв его через контекстное меню «Close page»). Иначе для него будет отображаться неактуальное содержимое, и текущая отображаемая исполняемая строка может не совпадать с фактической. После закрытия вкладки она снова будет открыта при следующем запуске, когда отладчик дойдёт до кода этого объекта.
4. Есть проблема с зависанием приложения при отладке. В этом случае может помочь убийство сессии отладки из другого экземпляра PL/SQL Developer. По поводу зависания есть даже баг, где в качестве решения проблемы Oracle просто рекомендует не использовать PL/SQL Developer для отладки…
5. В качестве механизма отладки в PL/SQL Developer используется системный пакет DBMS_DEBUG, который помечен как deprecated начиная с 19-й версии Oracle. Актуальным механизмом отладки на данный момент является Java Debug Wire Protocol (пакет DBMS_DEBUG_JDWP). Он, например, используется в SQL Developer.
6. Окно Test window имеет удобный функционал с bind-переменными, которые можно использовать для запуска обычных скриптов, без отладки. Особенно это актуально для переменных типа CLOB и BLOB: их можно легко передать на вход скрипта через bind-переменные без необходимости вставлять их прямо в скрипт. И так же с выходными переменными: не нужно заморачиваться с выводом результатов в output, результат можно увидеть прямо в этих переменных. Особенно актуально для типа BLOB, например, когда функция возвращает бинарный файл, типа PDF или изображения. В таком случае объявляем bind-переменную типа BLOB, передаём в неё результат функции, сохраняем результат в файл или открываем содержимое для просмотра прямо из PL/SQL Developer.
Подведём итоги
Функционал отладки в PL/SQL Developer достаточно прост и интуитивно понятен. Есть удобные функции, вроде bind-переменных и выполнения запросов в сессии отладки. Есть подробная документация.
Но есть и минусы — нестабильная работа (зависания), ограничения по просмотру значений переменных. Также вызывает вопросы использование устаревшего механизма отладки DBMS_DEBUG. И стоит ещё учитывать, что инструмент платный.
Итак, мы рассмотрели базовый функционал отладки в PL/SQL Developer и некоторые нюансы использования отладки в этом инструменте. Надеюсь, что статья была полезна и как-то упростит жизнь разработчикам на Oracle; делитесь мнением в комментариях!
Дальше в планах — ещё одна статья про отладку. Посмотрим ближе на другой инструмент — SQL Developer, у которого есть свои особенности и возможности, типа удалённой отладки. Не переключайтесь!
Создание таблицы в Oracle: подробное руководство
Oracle create table — это команда для создания новой таблицы в базе данных Oracle. Для использования этой команды необходимо иметь права администратора (например, пользователь с ролью DBA).
Пример создания таблицы со следующими полями: ID (числовой), NAME (текстовый) и AGE (числовой):
CREATE TABLE example_table (
В данном примере мы создаем таблицу с названием example_table, а затем указываем в скобках названия столбцов и их типы данных. В нашем примере это числовой столбец ID, текстовый столбец NAME и числовой столбец AGE.
Для добавления индекса к столбцу (который ускорит поиск по этому столбцу) можно использовать следующий синтаксис:
CREATE TABLE example_table (
CONSTRAINT pk_example_table PRIMARY KEY (id)
Здесь мы добавляем индекс к столбцу ID с помощью ключевого слова CONSTRAINT и указываем, что он является PRIMARY KEY (основным ключом) таблицы.
Также можно добавить к таблице различные ограничения (например, ограничения на значения столбцов):
CREATE TABLE example_table (
id NUMBER CONSTRAINT pk_example_table PRIMARY KEY,
name VARCHAR2(50) CONSTRAINT nn_example_table_name NOT NULL,
age NUMBER CONSTRAINT chk_example_table_age CHECK (age >= 0 AND age
Как создать пользователя в Oracle SQL Developer
Базы данных Oracle поставляются с несколькими встроенными пользователями: SYS и SYSTEM.
Это пользователи административного уровня, обладающие достаточной властью.
Возможно, вы захотите создать своих собственных пользователей, чтобы лучше управлять доступом и иметь свои собственные таблицы и данные.
В этой статье я покажу вам, как это сделать. К концу статьи у вас будет новый пользователь с таблицей и некоторыми данными в ней.
Этапы, описанные в этой статье, представляют собой процесс, в ходе которого пробуются разные вещи, попутно объясняя возникающие проблемы.
Если вам просто нужны шаги для создания нового пользователя, вот что нужно сделать:
- Войдите в систему как администратор (например, SYS или SYSTEM)
- Создайте нового пользователя с паролем
- Предоставьте ему права на создание сеанса, создание таблицы, неограниченное табличное пространство.
Подключиться как SYS или SYSTEM
Первое, что нужно сделать, это подключиться к вашей базе данных как пользователь SYS или SYSTEM. Оба этих пользователя имеют права администратора и могут создавать для вас других пользователей.
Для этого примера у меня есть база данных Oracle, настроенная с помощью Docker, но вы можете использовать любой метод доступа к базе данных:
- Oracle Express для Windows (руководство)
- База данных Oracle в Windows
- База данных Oracle на виртуальной машине в Windows или Mac (руководство)
- База данных Oracle в облаке на Windows или Mac
Шаг 1. Подключитесь к базе данных как SYS или SYSTEM.
Если вы используете SQL Developer, у вас должна открыться новая вкладка с этим подключением.
Шаг 2. Создайте нового пользователя с помощью команды «Создать пользователя».
Команда для создания нового пользователя — «Создать пользователя».
Синтаксис выглядит следующим образом:
Вы заменяете имя пользователя на имя пользователя, которое хотите создать, и пароль на пароль для этого нового пользователя.
Например, чтобы создать нового пользователя с именем james и паролем somepassword:
Пароль может содержать буквы, цифры и большинство специальных символов.
Примечание. Если пароль содержит специальные символы, заключите его в двойные кавычки. Это обеспечит правильную работу команды.
Допустим, мы запустили команду для создания пользователя с паролем «somepassword». Вы должны увидеть этот вывод:
Подключиться как новый пользователь
Мы можем попробовать подключиться как этот новый пользователь.
Шаг 3. Подключитесь как новый пользователь (в SQL Developer или командной строке).
Если вы используете SQL*Plus или sqlcl, вы можете подключиться с помощью команды «conn»:
В этой статье я использую SQL Developer, поэтому я создам новое соединение с именем пользователя и паролем.
Примечание. Приведенные здесь сведения о подключении относятся к запуску базы данных в Docker, поэтому у вас они могут отличаться.
При проверке соединения я получаю сообщение об ошибке:
Эта ошибка возникает из-за того, что у нового пользователя нет разрешений. По умолчанию новые пользователи не могут войти в систему.
Это легко изменить!
Предоставить права
Шаг 4. Повторно подключитесь как системный пользователь
Нам нужно снова вернуться к пользователю SYSTEM (или SYS), чтобы предоставить разрешения. Итак, подключитесь как этот пользователь, как на шаге 1.
Шаг 5. Предоставьте права новому пользователю
Чтобы наш новый пользователь мог подключиться к базе данных, ему необходима привилегия CREATE SESSION.
Это можно сделать одним из двух способов:
- Предоставление пользователю роли CONNECT
- Предоставление пользователю права CREATE SESSION
Роль – это набор привилегий, которые могут быть назначены пользователю. Я скоро напишу более подробное руководство по этой концепции, но для наших целей подойдет любой из этих шагов.
Примечание. Раньше роль CONNECT содержала ряд привилегий, таких как создание сеанса и создание множества других объектов, но начиная с Oracle 10g R2 роль CONNECT содержит только право на создание сеанса.
Итак, запустите любую из этих команд:
Или, чтобы выделить сеанс создания напрямую:
Давайте запустим команду. Вы должны увидеть этот вывод:
Снова подключиться как новый пользователь
Шаг 6. Повторно подключитесь как новый пользователь
Теперь у нас есть нужные привилегии, мы можем попытаться снова подключиться.
Откройте новое подключение в SQL Developer и проверьте его или подключитесь к нему. Вы должны успешно подключиться и увидеть открытую новую вкладку.
Шаг 7. Создайте новую таблицу
Теперь мы подключились к базе данных как новый пользователь, давайте попробуем создать таблицу и добавить в нее некоторые данные.
Выполните эту команду, чтобы создать простую таблицу:
Когда вы попытаетесь запустить его, вы получите следующую ошибку:
Ошибка, начинающаяся со строки: 1 в команде –
CREATE TABLE newtable (
testvalue NUMBER(4)
)
Отчет об ошибке –
ORA-01031: недостаточно привилегии
01031 00000 — «недостаточно привилегий»
*Причина: Предпринята попытка выполнить операцию с базой данных без
необходимых привилегий.
*Действие: попросите администратора базы данных или назначенного
администратора безопасности предоставить вам необходимые права
Как мы можем это исправить?
Мы можем вернуться к пользователю SYSTEM или SYS и предоставить больше прав.
Предоставить права доступа к таблице
Шаг 8. Подключитесь как пользователь SYSTEM или SYS.
Еще раз подключитесь к пользователю SYSTEM или SYS.
Вам не нужно подключаться к пользователю несколько раз, как в этой статье. Вы можете создать пользователя и предоставить все привилегии сразу. Но мы просто демонстрируем процесс и причины каждого шага в этом руководстве.
Шаг 9. Предоставьте права доступа к таблице.
Нам нужно предоставить пару привилегий новому пользователю:
- Создать таблицу, чтобы мы могли создать таблицу
- Неограниченное табличное пространство, поэтому таблицу нужно где-то хранить
Мы можем сделать это с помощью следующих команд:
Или мы можем объединить предоставление нескольких привилегий в один оператор:
Выполните любую из этих команд, и ваш новый пользователь должен получить эти новые привилегии. Вы должны увидеть этот вывод:
Создать таблицу как новый пользователь
Теперь вернемся к новому пользователю и попробуем создать и заполнить новую таблицу.
Шаг 10. Подключитесь как новый пользователь
После того как вы подключитесь как новый пользователь, мы можем попробовать создать таблицу еще раз.
Шаг 11. Создайте новую таблицу
Мы создадим простую таблицу, используя ту же команду, что и раньше.
Вывод должен быть:
Шаг 12. Вставьте данные
Давайте вставим некоторые данные в новую таблицу, чтобы протестировать ее.
Вы должны получить следующий результат:
Шаг 13. Выберите из таблицы.
Теперь, когда мы вставили в таблицу, мы можем попробовать выбрать из нее, просто чтобы убедиться, что у нас есть правильные разрешения.
ТЕСТЗНАЧЕНИЕ |
1 |
Отлично! Новый пользователь может создавать таблицы, вставлять данные и выполнять запросы SELECT.
Если вам нужны дополнительные привилегии для этого пользователя, например создание представлений или доступ к таблицам других пользователей, вы также можете предоставить их.
Заключение
Вот как вы создаете нового пользователя в Oracle.
Вы запускаете команду «Создать пользователя». Затем вы предоставляете пару привилегий для подключения и создания таблиц.
Если у вас есть какие-либо вопросы или проблемы с этим процессом, дайте мне знать в комментариях ниже.
Оставить комментарий Отменить ответ
Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.
Прежде чем начать
В этом 15-минутном учебном пособии показано, как создать учетную запись пользователя Data Miner и подключение SQL Developer с помощью подключаемой базы данных (PDB).
Фон
Oracle SQL Developer — это клиент программного обеспечения Oracle Database. Для доступа к таблицам базы данных Oracle и использования Oracle Data Miner требуется учетная запись пользователя Oracle SQL Developer.
Что вам нужно?
Создайте учетную запись пользователя в подключаемой базе данных
В вашем экземпляре Oracle Database 19c должен быть хотя бы один экземпляр подключаемой базы данных (PDB). Вы будете использовать учетную запись с соответствующими разрешениями для создания учетной записи пользователя для своей учетной записи пользователя Data Miner.
Примечание. Если вы используете экземпляр базы данных Oracle в своей корпоративной среде, вам может потребоваться запросить у администратора базы данных выполнение этих действий.
- Откройте Разработчик SQL.
- Нажмите правой кнопкой мыши на свой аккаунт пользователя PDB sys и выберите Подключиться.
- На вкладке «Соединения с разработчиком SQL» разверните соединение.
- Нажмите правой кнопкой мыши узел «Другие пользователи» и выберите «Создать пользователя» во всплывающем меню.
- В окне «Создать пользователя» выберите вкладку «Пользователь» и укажите имя пользователя, пароль, табличное пространство по умолчанию и временное табличное пространство для учетной записи пользователя. Используйте следующие параметры:
- Имя пользователя: DMUSER
Примечание. Необходимо использовать имя пользователя в верхнем регистре. - Пароль. Создайте пароль по своему выбору (он должен состоять не менее чем из 9 символов и содержать два символа верхнего регистра).
- Имя пользователя: DMUSER
- Перейдите на вкладку «Предоставленные роли» и установите флажок в столбце «Предоставленные» для ПОДКЛЮЧЕНИЯ.
- Перейдите на вкладку Quotas и установите флажок, чтобы установить для табличного пространства USERS по умолчанию значение Unlimited.
- Нажмите «Применить», чтобы создать учетную запись. Затем нажмите «ОК» в появившемся окне «Успешно».
Создать подключение разработчика SQL для пользователя Data Miner
Это подключение можно создать либо с помощью вкладки «Подключения SQL Developer», либо с помощью вкладки Data Miner. В любом случае появится одно и то же диалоговое окно New/Edit Database Connection. Все сохраненные соединения SQL Developer отображаются на обеих вкладках.
- На вкладке «Подключения SQL Developer» щелкните правой кнопкой мыши «Подключения» и выберите «Новое подключение» во всплывающем меню.
- В диалоговом окне «Создать/выбрать подключение к базе данных» введите следующие параметры:
- Имя подключения: PDB1-DMUSER
- Пароль: выбранный вами пароль
- Проверьте пароль для сохранения
- Тип подключения: обычный
- Имя хоста: имя хоста вашего сервера базы данных (localhost, если база данных установлена на вашем ПК, или IP-адрес, если он удален).
- Порт: введите соответствующий номер порта (по умолчанию – 1521).
- Имя службы. Имя службы для вашей PDB, например orclpdb1.example.com.
- Нажмите «Тест», чтобы проверить подключение. Если соединение установлено успешно, статус (прямо над кнопкой «Справка») меняется на «Успешно». Затем нажмите Подключиться, чтобы сохранить подключение, а также установить подключение к базе данных. Описание иллюстрации create-dmuser-connection.jpg
Следующее руководство
В следующем руководстве вы установите репозиторий образцов данных Data Miner.
Вывод: в этом руководстве вы узнаете, как использовать оператор Oracle CREATE USER для создания нового пользователя в базе данных Oracle.
Введение в оператор Oracle CREATE USER
Команда CREATE USER позволяет создать нового пользователя базы данных, которого можно использовать для входа в базу данных Oracle.
Основной синтаксис оператора CREATE USER следующий:
СОЗДАТЬ имя пользователя ПОЛЬЗОВАТЕЛЯ
Укажите имя создаваемого пользователя.
ОПРЕДЕЛЯЕТСЯ ПО ПАРОЛЮ
Укажите пароль, который локальный пользователь будет использовать для входа в базу данных. Обратите внимание, что вы можете создать внешнего или глобального пользователя, что не рассматривается в этом руководстве.
ТАБЛИЧНОЕ ПРОСТРАНСТВО ПО УМОЛЧАНИЮ
Укажите табличное пространство объектов, таких как таблицы и представления, которые создаст пользователь.
Если вы пропустите это предложение, объекты пользователя будут храниться в табличном пространстве базы данных по умолчанию, если оно доступно, обычно это табличное пространство USERS; или табличное пространство SYSTEM, если в базе данных нет табличного пространства по умолчанию.
КВОТА
Укажите максимальное пространство в табличном пространстве, которое может использовать пользователь. У вас может быть несколько предложений QUOTA, каждое для табличного пространства.
Используйте UNLIMITED, если вы не хотите ограничивать размер табличного пространства, которое может использовать пользователь.
ПРОФИЛЬ профиля
Профиль пользователя ограничивает ресурсы базы данных или пароль, который пользователь не может превысить. Вы можете назначить профиль вновь созданному пользователю. Если вы пропустите это предложение, Oracle назначит пользователю профиль ПО УМОЛЧАНИЮ.
Срок действия ПАРОЛЯ ИСЧЕЗ
Используйте PASSWORD EXPIRE, если вы хотите заставить пользователя сменить пароль при первом входе пользователя в базу данных.
Используйте БЛОКИРОВКУ АККАУНТА, если хотите заблокировать пользователя и отключить доступ. С другой стороны, укажите РАЗБЛОКИРОВАТЬ АККАУНТ, чтобы разблокировать пользователя и разрешить доступ.
Чтобы выполнить оператор CREATE USER, вы должны иметь системную привилегию CREATE USER. Как только вы создадите нового пользователя, домен привилегий пользователя будет пуст. Поэтому, если вы хотите, чтобы пользователь мог войти в базу данных, вы должны предоставить ему системную привилегию CREATE SESSION.
Примеры Oracle CREATE USER
Давайте потренируемся с оператором CREATE USER.
1) Пример использования инструкции Oracle CREATE USER для создания нового локального пользователя
В этом примере оператор CREATE USER используется для создания нового локального пользователя с именем john и паролем abcd1234:
Oracle выдает следующий вывод, указывающий, что пользователь john успешно создан.
Чтобы найти список пользователей со статусом OPEN, вы запрашиваете информацию из dba_users :
Как видно из вывода, пользователь john имеет табличное пространство по умолчанию как USERS , профиль как DEFAULT и входит в базу данных, используя ПАРОЛЬ .
Давайте воспользуемся учетной записью john для входа в базу данных.
Запустите программу SQL*Plus и введите следующую информацию:
Oracle выдал следующую ошибку:
Чтобы позволить пользователю john войти в систему, вам необходимо предоставить системную привилегию CREATE SESSION пользователю john с помощью следующего оператора:
Теперь пользователь john должен иметь возможность войти в базу данных.
2) Использование инструкции Oracle CREATE USER для создания нового локального пользователя с просроченным паролем, пример
Сначала используйте оператор CREATE USER, чтобы создать нового пользователя jane:
Во-вторых, проверьте, успешно ли создан пользователь:
В-третьих, предоставьте привилегию CREATE SESSION пользователю jane, чтобы вы могли использовать этого пользователя для входа в базу данных Oracle.
Наконец, используйте пользователя jane для входа в базу данных через программу SQL*plus:
Oracle запросил изменение пароля для jane , вы должны ввести новый пароль и подтвердить его, прежде чем сможете войти в систему:
В этом руководстве вы узнали, как использовать оператор Oracle CREATE USER для создания нового пользователя в базе данных Oracle.
В этом руководстве мы узнаем, как создать нового пользователя и подключение в SQL Developer. Мы также узнаем, как разблокировать учетную запись отдела кадров, и узнаем больше о схеме отдела кадров.
Эта статья разделена на 3 части:
- Создать новое подключение для пользователя SYS
- Создать новое подключение для пользователя отдела кадров.
- Создать нового пользователя и подключение в SQL Developer
Создать новое подключение к базе данных для пользователя SYS
Это первое, что нам нужно сделать после установки SQL Developer.
После того, как мы установили базу данных Oracle и SQL Developer в нашей системе, нам нужно создать соединение с помощью SQL Developer для подключения к базе данных Oracle. Мы можем использовать как SQL Developer, так и командную строку для взаимодействия с базой данных.
Когда мы устанавливаем базу данных Oracle, она поставляется с некоторыми предопределенными пользователями, такими как STS, SCOTT, SYSTEM, HR и т. д. Пользователь SYS имеет все административные привилегии. Мы входим в базу данных под этим пользователем только тогда, когда нам нужно выполнить административные задачи.
Поскольку пользователи SYS и SYSTEM уже созданы при установке Oracle Database, нам просто нужно создать подключение в SQL Developer для подключения к базе данных.
Шаг 1. Откройте окно нового подключения
Нажмите значок «Зеленый плюс» в разделе «Подключения» слева, чтобы открыть окно «Новое подключение». Откроется этот экран.
- Имя пользователя — SYS, а пароль — то, что вы указали во время установки базы данных Oracle. В нашем случае
- Имя — Система (Вы можете указать любое имя, но мы даем его как Система для быстрого ознакомления)
- имя пользователя – SYS
- пароль-система
- Роль — SYSDBA
- Тип подключения – базовый
Шаг 2. Проверьте имя хоста, порт и SID в файле tsnames.ora
Имя хоста, порт и SID можно проверить в файле tsnames.ora в каталоге установки Oracle.
Путь к этому файлу на моей машине >>
Вы также можете найти это в каталоге установки Oracle.
Откройте этот файл в Notepad++ или любом другом текстовом редакторе, и вы получите имя хоста, порт и SID. Используйте эту информацию при создании любого нового пользователя или подключения в SQL Developer. В большинстве случаев это значение по умолчанию, но в некоторых случаях SID может отличаться
После этого нажмите «Проверить», а затем «Сохранить», чтобы создать новое подключение к базе данных для пользователя SYS в SQL Developer.
Создать новое подключение к базе данных для пользователя отдела кадров
HR — это другой предопределенный пользователь, который входит в схему HR. Схема HR состоит из некоторых таблиц базы данных, которые мы используем для обучения оракула. Эти таблицы обычно используются для изучения Oracle, и мы выполняем все SQL-запросы на этих учебных таблицах.
Как и пользователь SYS, пользователь HR автоматически создается при установке Oracle Database. Нам просто нужно создать новое подключение для этого пользователя HR в SQL Developer.
Шаг 1. Откройте новое окно подключения в SQL Developer
Как и раньше, нажмите на значок «Зеленый плюс» под подключениями, чтобы открыть окно «Новое подключение».
Введите следующую информацию:
- Имя – ч
- имя пользователя -hr
- пароль -hr
- Роль — по умолчанию
- Тип подключения – базовый
Имя хоста, порт и SID совпадают с теми, которые мы использовали при создании подключения пользователя SYS. Вы также можете проверить это в файле tsnames.ora.
Как видите, мы получили сообщение об ошибке ORA-28000, говорящее о том, что учетная запись заблокирована. Это происходит потому, что иногда мы забываем разблокировать эти учетные записи во время установки базы данных Oracle. Мы можем разблокировать эту учетную запись, написав простой двухстрочный SQL-запрос.
Шаг 2. Разблокируйте учетную запись отдела кадров в SQL Developer
Для этого мы используем инструмент командной строки SQL. Просто найдите инструмент командной строки SQL в меню «Пуск», так как этот инструмент также устанавливается при установке базы данных Oracle.
SQL Developer — это инструмент с графическим интерфейсом пользователя, который позволяет нам работать с базой данных, используя только нашу мышь, и мы можем просматривать и редактировать данные в таблицах, как мы это делаем в Excel. Но инструмент командной строки SQL используется только для написания запросов и не предлагает никакого графического интерфейса для взаимодействия с данными в базе данных.
Давайте воспользуемся инструментом командной строки SQL, чтобы написать эти 2 запроса один за другим
подключить систему/систему как sysdba;
изменить пользователя hr, идентифицированного при разблокировке учетной записи hr;
Первая строка используется для подключения к базе данных с использованием системного имени пользователя и пароля.
Вторая строка используется для изменения учетной записи пользователя hr и указания Oracle разблокировать ее.
Шаг 3. Создайте подключение отдела кадров в SQL Developer
Повторите шаг 1, и на этот раз, как вы видите, все получилось.
Нажмите «Проверить» > «Сохранить», а затем войдите в эту учетную запись с помощью
Схема управления персоналом
Все реляционные объекты, такие как таблицы, представления, функции и т. д. в базе данных, принадлежат определенному пользователю. Эти объекты вместе называются схемой.
Как мы уже видели, SYS, SCOTT, SYSTEM, HR — это некоторые из пользователей, которые создаются во время установки Oracle Database. У каждого пользователя есть собственная схема или связанные с ним реляционные объекты.
Схема HR состоит из 7 таблиц, представления и процедуры. Это практические таблицы с фиктивными данными, которые отражают данные, используемые в реальной организации.
Мы используем эти таблицы для выполнения операций и управления данными в этих таблицах в соответствии с нашими требованиями, а также для изучения Oracle SQL.
Создать нового пользователя и подключение
Системы SYS и HR были предустановленными пользователями. Давайте посмотрим, как создать нового пользователя с помощью SQL Developer.
Шаг 1. Войдите в учетную запись SYS и создайте нового пользователя
Для создания нового пользователя нам необходимо войти в учетную запись SYS, используя имя пользователя и пароль.
Здесь у нас есть возможность просто написать запрос для создания нового пользователя или использовать интерфейс SQL Developer для создания нового пользователя.
Шаг 2. Откройте схему пользователя SYS и выберите > Другие пользователи > Создать пользователя
Шаг 3. Укажите имя пользователя и пароль
Укажите любое имя, но убедитесь, что оно не конфликтует с именем пользователя, предустановленным в Oracle.
- Табличное пространство по умолчанию — Пользователи
- Временное табличное пространство — Temp
Шаг 4. Предоставление прав
Предоставьте этому новому пользователю привилегии Connect, DBA и Resource.
Шаг 5. Предоставление квоты для табличного пространства
Нажмите «Применить», и новый пользователь будет создан.
Шаг 6. Создайте новое подключение для этого нового пользователя
Альтернативный метод создания нового пользователя
Мы также можем создать нового пользователя и соединение, используя несколько простых запросов.
Шаг 1:
Давайте создадим пользователя напрямую, используя SQL-запросы, войдя в учетную запись пользователя SYS.
СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ «obama» с именем «obama»;
Шаг 2:
Введите этот запрос, чтобы проверить, соответствует ли статус учетной записи. Если он заблокирован, мы можем получить ошибку. Замените имя пользователя на имя пользователя, которое вы дали.
SELECT * FROM dba_users WHERE username =’obama’;
Шаг 3:
Создайте новое подключение, нажав на зеленый знак плюса в SQL Developer.
Как видите, мы получаем ошибку ORA-01045, так как мы не предоставили пользователю привилегии.
Шаг 4:
Давайте предоставим все права новому пользователю:
предоставить привилегии Обаме;
Наконец мы создали нового пользователя и подключение.
Давайте проверим, все ли работает нормально, написав один простой запрос после входа в новую учетную запись пользователя, которую мы только что создали:
Все работает нормально.
В этом руководстве мы узнали, как создать нового пользователя и подключение в SQL Developer.
Как обычно, начните с подключения к серверу, на котором размещен Oracle, а затем подключитесь к самому Oracle в качестве системной учетной записи.
Учетная запись SYSTEM — одна из нескольких предопределенных административных учетных записей, автоматически создаваемых при установке Oracle. SYSTEM может выполнять большинство административных задач, но нас особенно интересует задача управления учетными записями.
Создание пользователя
После подключения как SYSTEM просто введите команду CREATE USER, чтобы создать новую учетную запись.
Здесь мы просто создаем учетную запись books_admin, которая ИДЕНТИФИЦИРОВАНА или аутентифицирована с помощью указанного пароля.
Заявление о гранте
Создав новую учетную запись books_admin, мы можем приступить к добавлению привилегий к учетной записи с помощью инструкции GRANT. GRANT — это очень мощная инструкция со многими возможными параметрами, но основная функциональность заключается в управлении привилегиями как пользователей, так и ролей во всей базе данных.
Предоставление ролей
Как правило, сначала нужно назначить права пользователю, привязав учетную запись к различным ролям, начиная с роли CONNECT:
В некоторых случаях, чтобы создать более мощного пользователя, вы также можете рассмотреть возможность добавления роли RESOURCE (позволяющей пользователю создавать именованные типы для пользовательских схем) или даже роли DBA, которая позволяет пользователю не только создавать пользовательские именованные типы но также изменить и уничтожить их.
Назначение прав
Далее вам нужно убедиться, что у пользователя есть права на фактическое подключение к базе данных и создание сеанса с помощью GRANT CREATE SESSION . Мы также объединим это со всеми привилегиями, используя GRANT ANY PRIVILEGE .
Нам также необходимо убедиться, что у нашего нового пользователя есть дисковое пространство, выделенное в системе для фактического создания или изменения таблиц и данных, поэтому мы предоставим GRANT TABLESPACE следующим образом:
Права доступа к таблице
Хотя это обычно не требуется в более новых версиях Oracle, в некоторых старых установках может потребоваться вручную указать права доступа, которые новый пользователь имеет к определенной схеме и таблицам базы данных.
Например, если мы хотим, чтобы наш пользователь books_admin имел возможность выполнять функции SELECT , UPDATE , INSERT и DELETE для таблицы books, мы можем выполнить следующую инструкцию GRANT:
Это гарантирует, что books_admin сможет выполнять четыре основных оператора для таблицы books, которая является частью схемы схемы.
Читайте также:
- Форум по выбору электронных книг 2021
- Как создать XML-файл
- Как сбросить настройки посудомоечной машины bosch без дисплея
- Неисправность моноблока списать
- Как снять ddos-атаку с компьютера