Вводная информация
Предполагается, что читатель знаком с Oracle Database версии хотя бы с 11-й, SQL, PL/SQL и особенно с тем, что такое и как оно работает.
IDE апекса значительно изменилась при переходе с версии 4.2 на 5.0 (релиз был как раз 4 года назад, в марте 2015-го). С тех пор IDE меняется мало, но иногда добавляются новые возможности. Я буду делать скриншоты на apex.oracle.com, где сейчас установлена версия 19.1, но если у вас где-то используется более ранняя версия (5.х, 18.х), вы без труда найдете нужный элемент, если только он не появился в более поздней версии, чем ваша.
Я начну с обзора наиболее часто используемых разделов IDE. Я тоже покажу несколько скриншотов. Куда же без них, раз всё здесь сделано из визуальных компонентов. Но их будет не так много, как в плохих туториалах, и в основном они будут в начальных главах, а дальше я буду просто указывать название раздела IDE, в котором находятся необходимые вещи
Сразу обращу ваше внимание, что это просто первое знакомство с IDE. Более подробная информация о том, когда на какую кнопку нажимать и где что смотреть, будет дана дальше, когда я перейду к конкретным темам
Поехали.
Инструменты для выполнения SQL команд: SQL *Plus и SQL Developer
Существует много инструментов для работы с Oracle. Два стандартных инструментра это SQL *Plus и SQL Developer. Они предоставляются компанией Oracle и подходят для администрирования и разработки. У SQL Developer больше функционал, но он требует графической подсистемы, а SQL *Plus можно использовать в режиме командной строки.
SQL *Plus доступен для всех платформ на которых можно установить Oracle, и он устанавливается по умолчанию с серверным и клиентским программным обеспечением Oracle. В Linux исполняемый файл называется sqlplus. Местоположение этого файла зависит от установки и обычно это
/u01/app/oracle/pdoruct/db_1/bin/sqlplus
Ваш системный аккаунт должен быть настроен определённым образом, чтобы работать с SQL *Plus. Необходимо установить переменные системы
- ORACLE_HOME
- PATH
- LD_LBIRARY_PATH
PATH должна включать в себя путь к папке bin в домашней директории программы. LD_LIBRARY_PATH – это путь к папке lib домашней директории программы. На рисунке 2-1 представлен пример проверки системных переменных и запуск SQL *Plus.
В системе Windows раньше было две версии SQL *Plus: программа в режиме командной стркои и программа с графическим интерфейсом (sqlplus.exe и sqplusw.exe соответственно). В версии 11g графическая версия больше недоступна, однако можно использовать программу более ранней версии (до 9i включительно, изменения в Oracle Net не позволят использовать программы версии ниже 9i для работы с БД версии старше 9i). Т.е. SQL Plus 10g может подключаться к БД 9i и наборот: SQL *Plus версии 9i можно использовать для работы с БД 11g. В Windows OUI сохраняет значения системных переменных в реестре в процессе установки, поэтому необязательно устанавливать значения переменных вручную, однако если SQL *Plus не запускается, стоит проверить реестр. На рисунке 2-2 указано окно Windows с фрагментов реестра. Путь к значениям используемым SQL *Plus
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1
Установка Oracle SQL Developer на Windows 10
Весь процесс установки Oracle SQL Developer заключается в том, что необходимо скачать дистрибутив программы, извлечь файлы из скаченного ZIP-архива и запустить само приложение, иными словами, SQL Developer — это некая переносимая программа, которая не требует как таковой классической установки.
Сейчас мы рассмотрим те шаги, которые необходимо выполнить, чтобы начать использовать Oracle SQL Developer на Windows 10.
Шаг 1 – Скачивание программы
Oracle SQL Developer доступен на официальном сайте Oracle, и его можно скачать абсолютно бесплатно, единственное, как и в случае с самой СУБД, необходимо авторизоваться или зарегистрироваться на сайте, при этом если Вы скачивали и устанавливали Oracle Database XE, то у Вас уже есть учетная запись Oracle и Вам достаточно авторизоваться на сайте.
Итак, переходим на страницу загрузки Oracle SQL Developer, вот она
Далее, нажимаем на ссылку Download» в разделе Windows 64-bit with JDK 8 included.
После этого соглашаемся с условиями, отметив соответствующую галочку, и нажимаем на кнопку Download sqldeveloper-20.2.0.175.1842-x64.zip». Если Вы еще не авторизованы на сайте, Вас перенаправит на страницу авторизации (где можно и зарегистрироваться), а если Вы уже авторизованы, то сразу начнется процесс загрузки.
В результате у Вас должен загрузиться ZIP-архив sqldeveloper-20.2.0.175.1842-x64.zip» (на момент написания статьи это актуальная версия) размером около 500 мегабайт, в данном архиве находятся все необходимые для SQL Developer файлы.
Шаг 2 – Распаковка архива и запуск программы
После того как архив загрузится, его необходимо распаковать и запустить файл «sqldeveloper.exe».
При первом запуске у Вас могут спросить, есть ли у Вас сохраненные настройки, которые Вам хотелось бы импортировать, у нас таких нет, отвечаем «No».
В результате запустится программа и сначала появится окно, в котором Вас спросят, хотите ли Вы автоматически отправлять отчеты по работе программы в компанию Oracle, если не хотите, то снимите галочку и нажмите «OK».
Интерфейс Oracle SQL Developer выглядит следующим образом.
СУБД Oracle имеет собственный язык PL/SQL
PL/SQL — это принадлежащее фирме Oracle процедурное языковое расширение языка SQL. PL/SQL сочетает легкость и гибкость SQL с процедурными возможностями языка структурного программирования, такими как IF…THEN, WHILE и LOOP.
При написании приложения базы данных разработчик должен рассмотреть преимущества использования хранимых подпрограмм PL/SQL:
— Поскольку код PL/SQL может сохраняться централизованно в базе данных, сетевой трафик между приложениями и базой данных сокращается, что увеличивает производительность как приложений, так и системы.
— Благодаря хранимому коду PL/SQL можно контролировать доступ к данным. При этом методе пользователи PL/SQL могут обращаться к данным лишь так, как это предусмотрено разработчиком приложения (если не предоставлен иной маршрут доступа). — Блоки PL/SQL могут пересылаться приложениями к базе данных, что позволяет выполнять комплексные операции без избыточной нагрузки на сеть.
Даже если PL/SQL не хранится в базе данных, приложения могут пересылать к базе данных не отдельные предложения SQL, а целые блоки, опять-таки сокращая сетевой трафик. Следующие секции описывают различные программные единицы, которые могут быть определены и централизованно сохранены в базе данных.
Процедуры и функции представляют собой совокупности предложений SQL и PL/SQL, сгруппированных в единицу для решения специфической проблемы или выполнения множества взаимосвязанных задач. Процедура создается и сохраняется в базе данных в откомпилированной форме, и может выполняться (вызываться) любым пользователем или приложением. Процедуры и функции похожи друг на друга, с той разницей, что функция всегда возвращает вызывающей программе единственное значение, тогда как процедура не возвращает значения.
Пакеты дают метод инкапсулирования и хранения взаимосвязанных процедур, функций, переменных и других конструктов пакета как единицы в базе данных. Предоставляя администратору базы данных или разработчику приложений организационные преимущества, пакеты в то же время расширяют функциональные возможности (например, глобальные переменные пакета могут объявляться и использоваться любой процедурой в пакете) и увеличивают производительность базы данных (так, все объекты пакета синтаксически разбираются, компилируются и загружаются в память один раз).
Триггеры базы данных ORACLE позволяет вам писать процедуры, которые выполняются автоматически в результате обновления, вставки или удаления из таблицы. Такие процедуры называются триггерами базы данных. Триггеры базы данных могут использоваться самыми разнообразными способами для информационного управления вашей базой данных. Например, их можно использовать для автоматизации генерации данных, аудита модификаций данных, введения в действие комплексных ограничений целостности или организации сложных процедур обеспечения защиты.
Многопользовательские системы баз данных, такие как ORACLE, включают средства защиты, которые контролируют обращения к базе данных и использование данных. Например, механизмы защиты выполняют следующее:
— предотвращают несанкционированный доступ к базе данных
— предотвращают несанкционированный доступ к объектам схем
— контролируют использование дисков
— контролируют использование системных ресурсов (таких как время процессора)
— осуществляют аудит действий пользователя
Защита базы данных может быть классифицирована по двум различным категориям: защита системы и защита данных. ЗАЩИТА СИСТЕМЫ включает механизмы, контролирующие доступ к базе данных и ее использование на уровне системы.
Например, защита системы включает:
— действительные комбинации имен пользователей и паролей;
— уполномочен ли пользователь присоединяться к базе данных ;
— объем дисковой памяти, доступный объектам пользователя ;
— лимиты ресурсов для пользователя ;
— активность или неактивность аудита базы данных ;
-какие системные операции разрешено выполнять пользователю .
Защита данных включает механизмы, контролирующие доступ к базе данных и ее использование на уровне объектов.
Например, защита данных включает:
— какие пользователи имеют доступ к конкретному объекту схемы и какие типы действий разрешены каждому пользователю на этом объекте (например, пользователь SCOTT может выдавать для таблицы EMP предложения SELECT и INSERT, но не предложения DELETE) ;
— какие действия подлежат аудиторскому отслеживанию для каждого объекта схемы.
ORACLE управляет защитой базы данных, используя несколько различных средств, среди которых:
— пользователи базы данных и схемы;
— привилегии;
— роли;
— назначения пространства и квоты;
— лимиты на ресурсы;
— аудитинг.
Сторонние языки программирования
Другие языки программирования доступные для создания клиент-серверных приложения запускают вне базы-данных. Наиболее широко используются С и Java, но возможно использовать почти все популярные запросы третьего-уровня. Для большинства языков Oracle предоставляет OCI (Oracle Call Interface) библиотеки, которые позволяют подключаться к базе данных и выполнять SQL запросы.
Программы написанные на C или другом процедурном языке используют OCI библиотеки для создания подключения к базе данных. Эти библиотеки являются собственностью Oracle. Это значит что любой код, написанный с использование этих библиотек написан только для Oracle базы данных и должен быть переписан для работы с другими базами данных. Программы написанные на языке Java могут избежать этой проблемы. Oracle предоставляет возможности для подключения к базе с помощью Java для «толстых» (thich) и «тонких» (thin) клиентов.
«Толстый» клиент направлен на работу с Oracle. Он использует OCI библиотеку и может использовать все возможности базы данных, включая структурные особенности Oracle. Но такой клиент не сможет работать с другими базами данных, и необходима OCI библиотека для работы.
«Тонкий» клиент работает вне зависимости от типа базы данных: он работает с виртуальной базой согласно Java стандарту, и позволяет соотносить виртуальную базу с базой. Это даёт приложению возможность работать с любой другой базой данных и такое приложение может быть развёрнуто в не-Oracle среде без изменений. Однако функциональность огранчена только Java Database Connectivity (JDBC) стандартом.
Выбор между «толстым» и «тонким» клиентом должен производиться командой, после изучения всех потребностей к функционалу, производительности работы базы данных, производительности разработки, возможности перехода на другую СУБД и т.п. С помощью JDeveloper можно разрабатывать оба типа Java приложений.
Сервер баз данных
Сервер баз данных Оракл включает в себя экземпляр (instance) базы данных и саму базу данных с множеством возможностей таких как потоки, партицирование, хранилище данных, репликация и RAC (Real Application Cluster), но самое главное, это надёжное, высоко-производительное хранилище данных, построенное на объектно-ориентированной системе для баз данных. Исторически, один из проектов в поздних 70-ых для поддержки теории предложенной Dr. E.F Codd, привел к созданию реляционной системы управления базами данных (РСУБД), со временем ставшую известной как Oracle Server. Oracle Server это основной продукт Oracle, который продолжает активно развиваться и является ядром других продуктов.
База данных – это набор файлов в дисковой системе. База существует пока существуют файлы. Теоретически нету ограничений по размеру и количеству файлов, таким образом нет ограничений размера базы данных. Доступ к данным происходит через экземпляр (instance) сервера базы данных. Инстанс – набор процессов и структур данных в памяти. Инстанс может быть стартован и остановлен. Пользователи подключаются к инстансу и уже инстанс управляет доступом к данным. Невозможно работать с данными напрямую. Инстанс и файлы базы данных вместе и создают Oracle сервер.
Такая модель доступа является клиент-серверной моделью, также известной как двухуровненой (two-tier) модель. В клиент-серверной модели пользовательский интерфейс и логика приложения не зависят от управления данными. Для приложения разработанного с использованием SQL это значит, что пользовательская часть приложения создаёт SQL запросы, а серверная часть исполняет их. Это классическое разделение клиентской и серверной части, обычно соединённой локальной сетью. Сетевой протокол используемый в Oracle – закрытый и называется Oracle Net.
Клиентская часть состоит из 2ух компонентов: пользователей и пользовательских процессов. В серверной части три составляющие: серверный процесс, который исполняет SQL запросы, instance и сама база данных. Каждый пользователь взаимодействует с пользовательски процессом. Пользовательский процесс взаимодействует с серверным процессом, обычно посредством локальной сети. Серверный процесс взаимодействует с экземпляром, и экземпляр с базой данных. Рисунок 1-1 показывает это взаимодействие. Сессия – это пользовательский процесс с серверным процессом. Обычно это один пользовательскйи процесс для пользователя и серверный процесс для каждого пользовательского процесса. Сессия обычно создается по запросу пользователя и уничтожается когда она больше не нужна: это называется log-on и log-off цикл. Экземпляр и структуры в памяти нужные для работы запускаются администратором и существуют пока администратор не остановит их: это называется запуск и остановка экземпляра.
Пользовательским процессом может выступать любое клиент-серверное приложение которые можнт подключится к Oracle серверу.Мы будет использовать SQL*Plus и SQL Developer. Это программное обеспечение предоставляемое Oracle-ом для подключения к серверу и выполнения SQL запросов
Что использует пользователь абсолютно не важно для Oracle сервер-а. Когда пользователь вводит данные и нажимает кнопку «Выполнить» будет сгенерирована команда, к примеру INSERT и отправлена команда серверному процессу для исполнения на инстансе и базе данных
Единственное требования это чтобы команда была корректной. Не стоит забывать что все взаимодействие осуществляется согласно клиент-серверной модели. Даже если пользовательский процесс запущен на той же самой системе что и сервер – клиент-серверное разделение всё равно работает и сетевой протокол использвется для взаимодействия между двумя процессами.
Постройте словарь данных Views
В качестве последнего шага, выполните catalog.sql и catproc.sql. каталог сценарий создаст все словарные таблицы, представления, связанные с производительностью, необходимые общественные синонимы. Он также предоставит соответствующий доступ ко всем синонимам, который был создан. Скрипт catproc выполняет все сценарии, которые необходимы для функциональности PL/SQL.
SQL> @?/rdbms/admin/catalog.sql; SQL> @?/rdbms/admin/catproc.sql
Частичный вывод из указанных выше команд.
SQL> @?/rdbms/admin/catalog.sql; DOC>###################################################################### DOC>###################################################################### DOC> The following statement will cause an "ORA-01722: invalid number" DOC> error and terminate the SQLPLUS session if the user is not SYS. DOC> Disconnect and reconnect with AS SYSDBA. DOC>###################################################################### DOC>###################################################################### DOC># no rows selected Package created. Package body created. .. .. Synonym created. Grant succeeded. PL/SQL procedure successfully completed. SQL> @?/rdbms/admin/catproc.sql .. .. Comment created. Synonym created. Grant succeeded. PL/SQL procedure successfully completed.
Если вам интересно, вы можете посмотреть на каталог и сценарий catproc, чтобы понять, что именно он делает.
vi $ORACLE_HOME/rdbms/admin/catalog.sql; vi $ORACLE_HOME/rdbms/admin/catproc.sql
Скрипты и файлы создаваемые DBCA
DBCA создаёт скрипты и файлы которые находятся в папке ORACLE_BASE/admin/DB_NAME/scripts.
Файл параметров Parameter File
Рассмотрим файл параметров, с именем init.ora. Ниже представлен фрагмент сгенерированного DBCA файла
######################################################################
# Copyright (c) 1991, 2001, 2002 by Oracle Corporation
######################################################################
###########################################
# Cache and I/O
###########################################
db_block_size=8192
###########################################
# Cursors and Library Cache
###########################################
open_cursors=300
###########################################
# Database Identification
###########################################
db_domain=»»
db_name=ocp11g
###########################################
# File Configuration
###########################################
control_files=(«D:\oracle\app\oradata\ocp11g\control01.ctl»,
«D:\oracle\app\oradata\ocp11g\control02.ctl»,
«D:\oracle\app\oradata\ocp11g\control03.ctl»)
db_recovery_file_dest=D:\oracle\app\flash_recovery_area
db_recovery_file_dest_size=2147483648
###########################################
# Job Queues
###########################################
job_queue_processes=10
###########################################
# Miscellaneous
###########################################
compatible=11.1.0.0.0
diagnostic_dest=D:\oracle\app
###########################################
# NLS
###########################################
nls_language=»ENGLISH»
nls_territory=»UNITED KINGDOM»
###########################################
# Processes and Sessions
###########################################
processes=150
###########################################
# SGA Memory
###########################################
sga_target=318767104
###########################################
# Security and Auditing
###########################################
audit_file_dest=D:\oracle\app\admin\ocp11g\adump
audit_trail=db
remote_login_passwordfile=EXCLUSIVE
###########################################
# Shared Server
###########################################
dispatchers=»(PROTOCOL=TCP) (SERVICE=ocp11gXDB)»
###########################################
# Sort, Hash Joins, Bitmap Indexes
###########################################
pga_aggregate_target=105906176
###########################################
# System Managed Undo and Rollback Segments
###########################################
undo_management=AUTO
undo_tablespace=UNDOTBS1
Все строки начинающиеся с символа # являются комментариями. Всего доступно около 300 параметров однако DBCA устанавливает значения только для некоторых. Два главных это DB_BLOCK_SIZE и CONTROL_FILES. DB_BLOCK_SIZE устанавливает значение размера буферов в буфере кэша БД (database buffer cache). Так же это значение будет использовано для форматирования файлов данных табличных пространств SYSTEM и SYSAUX. После создания нельзя изменить это значение. CONTROL_FILES являетяс указателем на все копии контрольного файла. В данный момент времени этот файл не существует и значение укажет экзмепляру где создать новый файл. Назначение некоторых других параметров понятно, и все они описаны в документации Oracle. Единственный параметр у которого нет значения по умолчанию – это DB_NAME.
Настройка подключения к базе данных Oracle Database 18c Express Edition (XE)
Переходим к настройке подключения к базе данных Oracle Database 18c Express Edition (XE), для этого щелкаем на плюсик и выбираем New Connection».
После чего у Вас откроется окно настройки подключения, необходимо ввести следующие данные:
- Name – имя подключения (придумываете сами);
- Username – имя пользователя, в данном случае подключаемся от имени системного пользователя SYS;
- Password – пароль пользователя SYS, это тот пароль, который Вы задали во время установки Oracle Database XE;
- Role – SYSDBA (пользователь SYS является администратором сервера, поэтому выбираем соответствующую роль);
- Hostname – адрес сервера, если Oracle Database установлен на этом же компьютере, то в поле оставляем Localhost;
- Port – порт подключения, по умолчанию 1521;
- Service name – имя подключаемой базы данных Oracle Database. По умолчанию в Oracle Database 18c Express Edition (XE) создается база данных с именем XEPDB1, поэтому чтобы сразу подключиться к этой базе, вводим в это поле ее название, т.е. XEPDB
Чтобы проверить корректность всех введенных настроек, можно нажать на кнопку Test, и если Вы получили ответ в строке состояния «Успех», т.е. «Status: Success», то это означает, что все хорошо, сервер доступен и мы можем к нему подключиться с указанными настройками подключения.
Для сохранения подключения нажимаем Save».
В результате Вы подключитесь к серверу и у Вас отобразится обозреватель объектов и окно для написания SQL запросов.
В Oracle Database 18c Express Edition (XE) есть схема «HR», которую можно использовать, например, для изучения языка SQL.
Давайте напишем простой запрос SELECT к таблице employees.
SELECT * FROM HR.employees;
Как видим, все работает.
На сегодня это все, надеюсь, материал был Вам полезен и интересен, пока!
Нравится33Не нравится1
Создание новой базы данных Oracle
Используйте следующую команду CREATE DATABASE, чтобы создать пустую базу данных.
SQL> CREATE DATABASE dev USER SYS IDENTIFIED BY DevSysPass USER SYSTEM IDENTIFIED BY DevSystemPass LOGFILE GROUP 1 ('/home/oracle/u02/oradata/dev/redomed_01.log') SIZE 50M, GROUP 2 ('/home/oracle/u02/oradata/dev/redomed_02.log') SIZE 50M, MAXLOGFILES 5 MAXLOGHISTORY 10 MAXDATAFILES 50 CHARACTER SET US7ASCII NATIONAL CHARACTER SET AL16UTF16 DATAFILE '/home/oracle/u02/oradata/dev/system01.dbf' SIZE 100M REUSE SYSAUX DATAFILE '/home/oracle/u02/oradata/dev/sysaux01.dbf' SIZE 100M REUSE DEFAULT TABLESPACE USERS DATAFILE '/home/oracle/u02/oradata/dev/users01.dbf' SIZE 50M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED DEFAULT TEMPORARY TABLESPACE TEMPTS TEMPFILE '/home/oracle/u02/oradata/dev/tempts01.dbf' SIZE 30M REUSE UNDO TABLESPACE UNDOTS DATAFILE '/home/oracle/u02/oradata/dev/undots01.dbf' SIZE 100M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
В приведенной выше команде:
- Команда Create database создаст базу данных Oracle с именем «dev»
- Пароль, указанный во 2-й строке будет назначен пользователю SYS
- Пароль, указанный в 3-й строке будет назначен пользователю SYSTEM
- Мы создаем два повторных логов с размером 100МБ каждый.
- MAXLOGFILES – Максимальное количество файлов журнальных установлен в 5
- MAXDATAFILES – Это указывает на то, что максимальное количество файлов данных Oracle, которые могут быть созданы для этой базы данных.
- DATAFILE – Указывает на файл данных, который будет использоваться в табличной СИСТЕМЕ
- SYSAUX DATAFILE – Это свидетельствует о том, что файл данных будет использоваться в табличном пространстве SYSAUX
- Табличное пространство по умолчанию для этой базы данных устанавливаются в USERS
- Временное табличное пространство по умолчанию устанавливается в TEMPTS
- Отмены табличного пространство устанавливается в UNDOTS
Примечание:
Если вы укажете DB_CREATE_FILE_DEST в файле инициализации на расположение каталога, то вам не нужно указывать точное местоположение и имена файлов для всех файлов данных, Oracle позаботиться об этом за вас.
Например, если вы указали это в файле initdev.ora.
# vi initdev.ora DB_CREATE_FILE_DEST='/home/oracle/u02/oradata/dev'
В этом случае, вы можете упростить вашу команду CREATE DATBASE, как показано ниже.
SQL> CREATE DATABASE dev USER SYS IDENTIFIED BY DevSysPass USER SYSTEM IDENTIFIED BY DevSystemPass MAXLOGFILES 5 MAXLOGHISTORY 10 MAXDATAFILES 50 CHARACTER SET US7ASCII NATIONAL CHARACTER SET AL16UTF16 DEFAULT TABLESPACE USERS DEFAULT TEMPORARY TABLESPACE TEMPTS UNDO TABLESPACE UNDOTS
Команды выше создадут соответствующие файлы данных, необходимые для всех табличных пространств (undo, temporary и т.д.) в соответствии с местом, указанным в каталоге DB_CREATE_FILE_DEST.