Создание базы данных Oracle вручную. Создание базы данных Oracle вручную Создание новой базы данных Oracle

Процесс создания БД состоит из следующих шагов

  1. Создание файла параметров
  2. Создание экземпляра
  3. Выполнение команды CREATE DATABASE / это приведёт к созданию минимум файла контроля, двух файлов логов, двух файлов данных для табличных пространств SYSTEM и SYSAUX внутри которых будет создан словарь данных.
  4. Запуск SQL скриптов для создания представлений надо словарём данных и необходимых PL/SQL объектов
  5. Запуск SQL скриптов для создания объектов необходимых для работы Enterprise Manager Database Control и других настроеных в процессе установки утилит

В системе Windows также необходим дополнительный шаг, так как в Windows Oracle сервер работает как сервис. Oracle предоставляет дополнительный инструмент oradim.exe в помощь при создании этого сервиса

Эти шаги могут быть последовательно выполнены из SQL *Plus или с помощью специального графического инструмента DBCA (Database Configuration Assistant). Также вы можете написать свои скрипты для этой цели или использовать «тихую» установку.

Наиболее простым способом является создание БД с помощью DBCA. Это мастер-установщик который в режиме диалога запросит необходимые параметры и сделает всё в автоматическом режиме.

DBCA написан на Java и поэтому он выглядит одинаково на всех платформах. На Unix подобных системах вы запускаете DBCA на компьютере где вы хотите создать БД, однако выводить графические интерейс можно на любом компьютере где установлен X сервер для отображения графической информации. Путём установки системной переменной DISPLAY можно перенаправить вывод инфомрации на другое устройство. К примеру команда export DISPLAY=10.10.10.65:0.0 перенаправит информацию на компьютер с етевым адресом 10.10.10.65 вне зависимости от того где реально запущен DBCA.

Для запуска DBCA на Linux вначале необходимо установить системные переменные ORACLE_BASE,ORACLE_HOME,PATH и LD_LIBRARY_PATH. Примерные значения могут быть такими

export ORACLE_BASE=/u02/app/db11g

export ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1

export PATH=$ORACLE_HOME/bin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

И запустить приложение вызвав команду dbca.

Помните, что почти все параметры (за исключением одного) можно изменить после создания БД, но это потребует нефункционирования БД.

Если будет установлен Enterprise Manager Database Control, то тогда необходимо выполнить ещё один предварительные шаг; настройка listener-а БД. Это необходимо так как Database Control всегда подключается к БД с помощью listener-а и в процесе установки проверяет наличие хотя бы одного доступного listener-а. Listener можно легко настроить с помощью Net Configuration Assistant (netca).

DBCA создаёт скрипты и файлы которые находятся в папке ORACLE_BASE/admin/DB_NAME/scripts.

Файл параметров Parameter File

Рассмотрим файл параметров, с именем init.ora. Ниже представлен фрагмент сгенерированного DBCA файла

###########################

# Copyright (c) 1991, 2001, 2002 by Oracle Corporation

###########################################

###########################################

db_block_size=8192

###########################################

# Cursors and Library Cache

###########################################

open_cursors=300

###########################################

# Database Identification

###########################################

###########################################

# 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_queue_processes=10

###########################################

###########################################

compatible=11.1.0.0.0

diagnostic_dest=D:\oracle\app

###########################################

###########################################

nls_language=»ENGLISH»

nls_territory=»UNITED KINGDOM»

###########################################

# Processes and Sessions

###########################################

###########################################

###########################################

sga_target=318767104

###########################################

# Security and Auditing

###########################################

audit_file_dest=D:\oracle\app\admin\ocp11g\adump

remote_login_passwordfile=EXCLUSIVE

###########################################

###########################################

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.

Скрипт создания БД

Ниже представлен скрипт который DBCA выполняет в процессе создания БД (пример для Windows).

mkdir D:\oracle\app

mkdir D:\oracle\app\admin\ocp11g\adump

mkdir D:\oracle\app\admin\ocp11g\dpdump

mkdir D:\oracle\app\admin\ocp11g\pfile

mkdir D:\oracle\app\cfgtoollogs\dbca\ocp11g

mkdir D:\oracle\app\flash_recovery_area

mkdir D:\oracle\app\oradata\ocp11g

mkdir D:\oracle\app\product\11.1.0\db_3\database

set ORACLE_SID=ocp11g

set PATH=%ORACLE_HOME%\bin;%PATH%

D:\oracle\app\product\11.1.0\db_3\bin\oradim.exe -new -sid OCP11G

Startmode manual -spfile

D:\oracle\app\product\11.1.0\db_3\bin\oradim.exe -edit -sid OCP11G

Startmode auto -srvcstart system

D:\oracle\app\product\11.1.0\db_3\bin\sqlplus /nolog

@D:\oracle\app\admin\db11g\scripts\ocp11g.sql

Вначале скрипт создаёт несколько папок внутри папки ORACLE_BASE. Далее устанавливаются значения системной переменной ORACLE_SID и добавляется путь ORACLE_HOME/bin к переменной PATH. Две команды которые используют oradim.exe не используются в Linux. В Windows они нужны чтобы настроить запуск экземпляра БД как сервиса.

После скрипт запускает SQL *Plus и выполняется SQL скрипт %DB_NAME%.sql который управляет процессом создания БД

PROMPT specify a password for sys as parameter 1;

DEFINE sysPassword = &1

PROMPT specify a password for system as parameter 2;

DEFINE systemPassword = &2

PROMPT specify a password for sysman as parameter 3;

DEFINE sysmanPassword = &3

PROMPT specify a password for dbsnmp as parameter 4;

DEFINE dbsnmpPassword = &4

host D:\oracle\app\product\11.1.0\db_3\bin\orapwd.exe

file=D:\oracle\app\product\11.1.0\db_3\database\PWDocp11g.ora

password=&&sysPassword force=y

@D:\oracle\app\admin\ocp11g\scripts\CreateDB.sql

@D:\oracle\app\admin\ocp11g\scripts\CreateDBFiles.sql

@D:\oracle\app\admin\ocp11g\scripts\CreateDBCatalog.sql

@D:\oracle\app\admin\ocp11g\scripts\emRepository.sql

@D:\oracle\app\admin\ocp11g\scripts\postDBCreation.sql

Вначале задаются пароли для системных учётных записей (эти пароли указываются в процессе работы с DBCA). Потомы вызывается программа orapwd которая создаст файл паролей для БД. Имя файла будет %ORACLE_HOME%\database\PWD.ora для Windows или $ORACLE_HOME/dbs/orapw для Linux. После этого запускается скрипт CreateDB.sql который непосредственно создаёт БД.

Команда CREATE DATABASE

Пример скрипта CreateDB.sql

connect «SYS»/»&&sysPassword» as SYSDBA

spool D:\oracle\app\admin\ocp11g\scripts\CreateDB.log

startup nomount pfile=»D:\oracle\app\admin\ocp11g\scripts\init.ora»;

CREATE DATABASE «ocp11g»

MAXDATAFILES 100

DATAFILE ‘D:\oracle\app\oradata\ocp11g\system01.dbf’

SIZE 300M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED

EXTENT MANAGEMENT LOCAL

SYSAUX DATAFILE ‘D:\oracle\app\oradata\ocp11g\sysaux01.dbf’

SIZE 120M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED

SMALLFILE DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE

‘D:\oracle\app\oradata\ocp11g\temp01.dbf’ SIZE 20M REUSE

AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED

SMALLFILE UNDO TABLESPACE «UNDOTBS1» DATAFILE

‘D:\oracle\app\oradata\ocp11g\undotbs01.dbf’ SIZE 200M REUSE

AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED

CHARACTER SET WE8MSWIN1252

NATIONAL CHARACTER SET AL16UTF16

LOGFILE GROUP 1 (‘D:\oracle\app\oradata\ocp11g\redo01.log’) SIZE 51200K,

GROUP 2 (‘D:\oracle\app\oradata\ocp11g\redo02.log’) SIZE 51200K,

GROUP 3 (‘D:\oracle\app\oradata\ocp11g\redo03.log’) SIZE 51200K

USER SYS IDENTIFIED BY «&&sysPassword»

USER SYSTEM IDENTIFIED BY «&&systemPassword»;

Скрипт подключается к экземпляру, используя авторизацию из файла паролей. Команды echo и spool выводя в лог всё что происходит.

Команда STARTUP NOMOUNT создаёт структуры экземпляр в памяти используя файл параметров. NO MOUNT означает что база данных не будет подключена и открыта. После того как эта команда выполнена – экземпляр существует в памяти и работают фоновые процессы. Размеры SGA установлены согласна файла параметров.

Команда CREATE DATABASE использует имя базы данных и множество параметров. Вначале устанавливаются определенные ограничения для всей БД. Они могут изменять позже, но лучше всего устанавливать допустимые значения сейчас, поскольку их изменение очень трудоёмкая операция. Далее указываются где создать файлы данных для табличных пространств SYSTEM, SYSAUX и UNDO. Также указываются где хранить файлы для временного табличного пространства (TEMPORARY tablespace). Так же указывается кодировка БД для словаря данных и столбцов типа VARCHAR2, CHAR и CLOB. Параметры для файлов логов и т.д. В конце идёт указание на использование паролей из файла паролей и отключение записи в лог.

Этот файл с командой CREATE DATABASE создаст базу данных. После успешного выполнения экзмепляр будет работать в памяти и БД будет создана, включая файлы контроля, файлы данных и файлы логов. Словарь данных будет сгенерирован в табличном пространстве SYSTEM. Однако несмотря на то что БД создана, она пока непригодна для использования. Оставшиеся скрипты, которые вызовет файл %DB_NAME%.sql исправят это. У команды CREATE DATABASE много параметров, однако все они имеют значение по умолчанию. Например если вы не укажете файлы данных для табличного пространства SYSTEM все равно создатся минимум один файл. Для табличных пространств UNDO и TEMPORARY нет значений по умолчанию – но БД может быть создана без них, а потом можно указать эти значения.

Скрипты после создания БД

Остальные скрипты вызываемые %DB_NAME%.sql зависят от выбора в процессе работы с DBCA. В нашем примере был выбран только Enterprise Manager Database Control и поэтому будут запущены только 4 скрипта.

CreateDBfiles.sql – создаёт небольшон табличное пространство USERS где будет хранится объекты созданные пользователями

CreateDBCatalog.sql – важный скрипт. Он запускает скрипты для построения представлений над словарём данных и генерации PL/SQL объектов которые делают возможным управление БД

emRepository.sql – этот скрипт создаёт объекты необходимые для работы Enterprise Manager Database Control

postDBCreation.sql – создание файла параметров сервера из файла параметров init.ora, включение пользователей DBSNMP и SYSMAN используемых для работы Enterprise Manager и запуск Enterprise Manager Configuration Assistant (emca) для настройки новой БД.

Лабораторная работа № 1

База данных Oracle Database 11g Express Edition. Конструирование SQL-запросов

Цель работы

Изучение пользовательского интерфейса (БД) Oracle Database 11g Express Edition и конструирование SQL-запросов.

Задачи

Создание подключения к БД Oracle Database 11g Express Edition. Исследование объектов схемы HR и составление модели данных. Конструирование SQL-запросов на выборку данных в режимах редактора запросов и конструктора запросов.


Теоретическая часть

3.1. Общие сведения о БД

БД Oracle Database 11g Express Edition (Oracle Database XE) является свободно распространяемой (бесплатной) версией наиболее мощной реляционной базы данных в мире. Она прекрасно подходит для установки в учебных заведениях с целью обучения студентов современным методам работы с реляционными базами данных Oracle и разработки приложений для отображения пользовательских данных и манипулирования данными.

Oracle Database XE легко устанавливается и ею легко управлять. Скачать файлы установки для различных платформ можно на официальном сайте Oracle http://www. /technetwork/database/database-technologies/express-edition/downloads/index. html.

Oracle Database XE может быть установлена на компьютер (хост-машину) с любым количеством процессоров (одна БД на компьютере), но Oracle Database XE будет хранить только до 11 ГБ данных пользователя, использовать до 1 ГБ памяти, и использовать только один процессор на хост-машине.

Oracle Database 11g Express Edition представляет собой реляционную базу данных, которая хранит и извлекает коллекции связанной информации. В реляционной базе данных, объекты хранения информации организуются в структуры, называемые таблицами. Каждая таблица содержит строки (записи), которые состоят из столбцов (полей). Таблицы хранятся в базе данных в структурах, называемых схемами. Схемы - это логической структуры данных, в которых пользователи базы данных хранят свои таблицы и другие объекты.


Для доступа к Oracle Database XE используется домашняя страница базы данных, имеющая интуитивно понятный графический интерфейс. Доступ к домашней странице организован на основе веб-сервиса. Домашняя страница предоставляет пользователю веб-средства для администрирования базы данных, создания таблиц, представлений и других объектов схемы, импорта, экспорта, просмотра, редактирования данных таблиц. Эти средства позволяют выполнять SQL-запросы и SQL-скрипты, создавать и отлаживать программы на языке PL/SQL, разрабатывать приложения базы данных и генерировать отчеты.

База данных Oracle Database XE содержит встроенную схему HR (Human Resource), которая является примером схемы со связанными таблицами. В схеме HR есть таблицы для хранения вымышленной информации о сотрудниках и отделах. Таблицы содержат общие столбцы, которые позволяют данные из одной таблицы связывать с данными из других таблиц. Схема HR принадлежит пользователю с именем HR.

3.2. Получение доступа к Oracle Database XE

Пользователи получают доступ к Oracle Database 11g Express Edition через учетную запись пользователя базы данных. При установке базы данных автоматически создаются учетные записи пользователей SYS и SYSTEM – это пользователи с привилегиями администрирования баз данных. Так же автоматически создается учетная запись пользователя HR, не обладающего привилегиями администрирования.

Однако по соображениям безопасности учетная запись пользователя HR заблокирована. Нужно разблокировать эту учетную запись, прежде чем начинать работу с объектами схемы HR. Для этого можно воспользоваться командной строкой SQL*Plus.


Чтобы разблокировать учетную запись пользователя с использованием командной строки SQL*Plus, необходимо:

Кнопка Пуск –> Все программы -> Oracle Database 11g Express Edition –> Run SQL Command Line. Подключитесь как пользователь SYSTEM:

    Напечатайте connect Введите имя для подключения: SYSTEM Введите пароль: <пароль-для-SYSTEM >
После успешного подключения (сообщения connected) введите следующий SQL-оператор:

SQL> ALTER USER HR ACCOUNT UNLOCK;

Введите пароль для пользователя HR с помощью следующего SQL-оператора:

SQL> ALTER USER HR IDENTIFIED BY HR;

Для выхода из редактора введите SQL-оператор:

Окно редактора командной строки SQL*Plus показано на рис. 1.1.

Рис. 1.1. Окно редактора командной строки SQL*Plus

Подключение к базе данных Oracle Database XE производится через домашнюю страницу - веб-интерфейс на основе браузера для выполнения различных операций администрирования баз данных, в том числе следующих:

    Мониторинг базы хранения (Storage); Мониторинг сеансов базы данных (Sessions); Просмотр параметров инициализации базы данных (Parameters); Начало работы с Oracle Application Express (Application Express).

Доступ к домашней странице: кнопка Пуск –> Все программы -> Oracle Database 11g Express Edition –> Get Started.

В окне веб-браузера появится домашняя страница Oracle Database XE (рис. 1.2).

Рис. 1.2. Домашняя страница Oracle Database XE

Нажмите кнопку Application Express. После запроса информации для входа укажите: имя пользователя – SYSTEM, пароль - <пароль-для-SYSTEM >, как в редакторе командной строки SQL*Plus. Нажмите кнопку Login (рис. 1.3).


Рис. 1.3. Подключение к Oracle Database XE пользователя с ролью администратора БД

Следующий шаг – создание рабочего пространства Oracle Application Express для пользователя HR. В этом рабочем пространстве будут находиться все приложения БД, с которыми разрешена работа пользователю HR. Форма создания рабочего пространства показана на рис. 1.4.

Рис. 1.4. Создание рабочего пространства Oracle Application Express

Application Express Username – имя рабочего пространства. Можно использовать как имя пользователя (HR), так и любое другое (например, hr_apex). Подтвердите пароль. Нажмите Create Workspace. На следующей странице нажмите Click here для входа в рабочую область. Первый раз, когда вы пытаетесь получить доступ к рабочей области, вам будет предложено сбросить пароль для рабочей области (можно указать тот же пароль ил другой).

Создание рабочего пространства Oracle Application Express нужно произвести только один раз. При следующих подключениях к БД используйте кнопку Already have in account? Login Here. Для входа в рабочее пространство будет показана форма для Oracle Application Express, рис. 1.5.

Чтобы при следующих подключениях к рабочему пространству пропустить шаги авторизации пользователя SYSTEM и перехода к форме рис. 1.5, скопируйте и сохраните URL этой формы (например, вида http://127.0.0.1:8080/apex/f? p=4550:1:494885012264286) и используйте его в веб-браузере для непосредственного начала работы с формой авторизации.


После выполнения входа в рабочее пространство Oracle Application Express открывается домашняя страница, на которой расположены основные элементы управления – иконки Application Builder, SQL Workshop, Team Development, Administration (рис. 1.6).

Рисунок 1.6. Иконки элементов управления домашней страницы рабочего пространства Oracle Application Express

Щелчок на изображении иконки вызывает переход на новую страницу с иконками допустимых операций. Щелчок на иконке SQL Workshop позволяет получить доступ к инструментам исследования объектов БД (Object Browser, Utilites) и работы с SQL-запросами SQL Commands, SQL Scripts, Query Builder (рис. 1.7).

Рис. 1.7. Инструменты исследования объектов БД и работы с SQL-запросами

3.3. Доступ к данным с помощью SQL

SQL является непроцедурным языком для доступа к базе данных. SQL-операторы предназначены для выполнения различных задач, таких как получение данных из таблиц в Oracle Database XE. Все операции с базой данных выполняются с помощью операторов SQL. С помощью операторов SQL можно выполнить следующие операции:

    запроса, вставки и обновления данных в таблицах; форматирования данных, выполнения расчетов на основе данных, хранения и печати результатов запроса; изучения структуры таблиц и определения объектов базы данных.

Создание запросов на выборку данных

Синтаксис оператора SELECT для выборки всех записей таблицы


Вы можете указать псевдоним после имени столбца в списке выбора, используя пробел в качестве разделителя. Если псевдоним содержит пробелы или специальные символы, такие как знак номера # или знак доллара $, или, если он чувствителен к регистру, заключите псевдоним в кавычки "". Пример:

SELECT employee_id "Employee ID number",

last_name "Employee last name",

first_name "Employee first name"

Ограничение выборки строк

Вы можете ограничить количество строк, которые извлекаются из базы данных, с помощью инструкции WHERE в операторе SQL. Добавляя инструкцию WHERE, вы можете задать условие, которое должно быть выполнено, и только те строки, которые соответствуют условию, будут возвращены.

При использовании инструкции WHERE:

    инструкция WHERE непосредственно следует за инструкцией FROM в синтаксисе оператора SQL; инструкции WHERE состоит из ключевого слова WHERE и условия (или нескольких условий); условие инструкции WHERE указывает сравнение значений, которые ограничивают количество строк, возвращаемых запросом.

Объединение таблиц

Иногда возникает необходимость отображать данные из нескольких таблиц. Чтобы сделать это, в инструкции FROM оператора SELECT указывается список имен таблиц, из которых извлекаются данные. Если информация поступает из более чем одной таблицы, происходит объединение таблиц.


Например, в таблице EMPLOYEES столбец DEPARTMENT_ID представляет номер отдела сотрудника. В таблице DEPARTMENTS есть столбец DEPARTMENT_ID, а также столбец DEPARTMENT_NAME. Можно объединить данные из таблиц EMPLOYEES и DEPARTMENTS с использованием столбца DEPARTMENT_ID и подготовить отчет, который будет показывать имена работников и названия отделов.

Внутренние объединения таблиц

При внутреннем объединении объединяются столбцы связанных таблиц на основе общего поля или комбинации общих полей. При таком объединении в результирующее множество не включаются строки какой-либо из таблиц, которые не имеют соответствия в другой таблице. При внутренних объединениях условие объединения должно строго соблюдаться.

Естественное объединение

Естественное объединение позволяет отображать данные из двух таблиц, когда значение в одном столбце одной таблицы прямо соответствует значению в другом столбце во второй таблице. Если две таблицы включают один или несколько столбцов, которые имеют одинаковые имена и типы данных, естественное соединение возвращает все строки из двух таблиц, которые имеют одинаковые значения во всех соответствующих столбцах. Часто этот тип объединения включает в себя первичный ключ и столбцы внешних ключей.

Синтаксис

Пример:

SELECT employee_id, last_name, first_name, department_id,

department_name, manager_id

FROM employees NATURAL JOIN departments

Объединение двух таблиц с инструкцией USING

Инструкция USING позволяет указать столбцы, которые будут использоваться для соединения между двумя таблицами. Имена столбцов должны быть одинаковыми для обеих таблиц и должны иметь совместимые типы данных. Используйте инструкцию USING, если ваши таблицы содержат более одного столбца, чьи имена совпадают, и необходимо четко определить имя столбца, по которому необходимо образовать соединение таблиц.


Синтаксис


Объединение таблиц с идентификацией столбцов. Оператор ON

Оператор ON используетcя, чтобы задать условие объединения двух таблиц или условие самообъединения таблицы. Оператор ON позволяет записывать условие объединения для разных имен столбцов, однако при этом типы данных этих столбцов должны совпадать.

Синтаксис

FROM employees JOIN job_history

Применение дополнительных условий объединения

Часто бывает необходимо объединить данные из двух таблиц так, чтобы выполнялись некоторые дополнительные условия. Пусть, например, нужно показать результат объединения таблиц EMPLOYEES и DEPARTMENTS только для сотрудника, который имеет идентификатор 149. Чтобы добавить дополнительные условия для оператора ON, можно добавить оператор AND. Кроме того, можно использовать оператор WHERE, чтобы применить дополнительные условия для предварительного отбора строк таблицы.

Использование оператора AND

AND e. manager_id = 149

Использование оператора WHERE

SELECT e. employee_id, e. last_name, e. department_id,


d. department_id, d. location_id

FROM employees e JOIN departments d

ON (e. department_id = d. department_id)

WHERE e. manager_id = 149

Псевдонимы таблиц

В примерах показано, как псевдонимы используются для идентификации имен таблиц. В операторе FROM сокращенное наименование указывается после имени таблицы. Это сокращенное наименование называется псевдонимом. После того, как псевдоним создан в операторе FROM, его можно использовать в любой части предложения SELECT.

Объединение нескольких таблиц

Объединение нескольких таблиц используется, когда необходимая информация распределена по более чем двум таблицам. Примером может служить трехстороннее соединение - объединение трех таблиц. Пусть необходимо найти сотрудников, их подчиненных и названия отделов для сотрудников. Для этого требуется доступ к трем таблицам: - EMPLOYEES, DEPENDENTS и DEPARTMENTS. Возможно объединение любого количества таблиц, сколько необходимо для получения связной информации.

Синтаксис

В операторе FROM необходимо указать таблицы, которые должны объединиться.

Пример

SELECT e. last_name, d. first_name, w. department_name
FROM employees e

JOIN dependents d

ON d. relative_id = e. employee_id

JOIN departments w

ON w. department_id = e. department_id

Самообъединение таблиц

Оператор ON может быть также использован для присоединения столбцов, которые имеют разные наименования (в той же таблице или в другой таблице). Если разноименные объединяемые столбцы расположены в одной таблице, то имеет место самообъединение таблиц. Например, вы можете выполнить самообъединение таблицы EMPLOYEES на основе столбцов EMPLOYEE_ID и MANAGER_ID.

Внешние объединения таблиц

При внешнем объединении также происходит объединение строк связанных таблиц на основе общего поля или комбинации общих полей. Однако результирующее множество включает в себя строки какой-либо из таблиц даже в том случае, когда они не имеют соответствия в другой таблице. При внешних объединениях условие объединения соблюдается нестрого. Одна из таблиц является обязательной – в результирующем множестве будут находиться все ее строки.

Синтаксис

LEFT – левое внешнее объединение. Указывает, что таблица1 - обязательная таблица (в результирующем множестве будут находиться все ее строки), а таблица2 - необязательная. Для тех строк таблица1, которым нет соответствия в таблица2, возвращается NULL.

RIGHT – правое внешнее объединение. Обязательная таблица таблица2, таблица1 необязательная.

FULL – полное внешнее объединение. Является двунаправленным внешним объединением. В результирующее множество включаются:

    все строки внутреннего объединения таблиц; строки таблица1, которым нет соответствия в таблица2; строки таблица2, которым нет соответствия в таблица1.

OUTER – необязательное ключевое слово. Указывает, что выполняется внешнее объединение.

SELECT employees.*, job_history.*

FROM employees LEFT JOIN job_history
ON employees. hire_date = job_history. start_date


Групповые операции

Групповые операции обрабатывают по нескольку строк и возвращают один обобщенный результат. Фактически они позволяют объединять в той или иной форме сходные элементы информации, возвращаемые из базы данных. Для выполнения групповых операций Oracle предоставляет обобщающие функции и инструкции группировки (GROUP BY, HAVING и другие).

Синтаксис большинства обобщающих функций:

обобщающая_функция( выражение)

Обобщающая_функция – указывает имя обобщающей функции: COUNT (количество), AVG (среднее значение), MAX (максимальное значение), MIN (минимальное значение), STDDEV (стандартное среднеквадратичное отклонение), SUM (сумма), VARIANCE (статистическая ).

DISTINCT – указывает, что обобщающая функция должна учитывать только неповторяющиеся значения выражения.

ALL – указывает, что обобщающая функция должна учитывать все значения выражения, в том числе и дублирующиеся. По умолчанию считается, что использовано ALL.

Выражение – указывает столбец или любое другое выражение, по которому необходимо выполнить обобщение.

Значения NULL для выражения обобщающими функциями игнорируются, в результат не входят.

Select MAX(salary) from Employees – найти максимальное значение по столбцу salary во всей таблице EMPLOYEES.

Select count(*) from Regions – вычисляет количество записей в таблице REGIONS.

Инструкция GROUP BY

Используется совместно с обобщающими функциями, разбивает результирующее множество на несколько групп, а затем для каждой группы выдается одна строка сводной информации. Если в списке SELECT присутствует смесь обобщенных и необобщенных значений, SQL считает, что нужно выполнить операцию Group by, поэтому все необобщенные выражения должны быть указаны и в инструкции Group by. Если этого не сделать, Oracle выдаст сообщение об ошибке.


Не разрешено использование групповой (обобщающей) функции в инструкции GROUP BY.

При группировке по столбцу, содержащему в некоторых строках NULL-значения, все строки с NULL-значениями помещаются в одну группу и представляются в выводе одной сводной строкой.

Для получения итоговых результатов с использованием инструкции GROUP BY существует возможность фильтрации записей таблицы при помощи инструкции WHERE. При выполнении оператора SQL, содержащего инструкции WHERE и GROUP BY, Oracle сначала применяет инструкцию WHERE и отсеивает строки, не удовлетворяющие условию WHERE. Затем строки, удовлетворяющие условию WHERE, группируются в соответствии с инструкцией GROUP BY. Синтаксис SQL требует, чтобы инструкция WHERE предшествовала инструкции GROUP BY.

Инструкция HAVING

Используется для наложения фильтра на группы, созданные инструкцией GROUP BY. Если запрос содержит GROUP BY и HAVING, результирующее множество будет содержать только те группы, которые удовлетворяют условию, указанному в инструкции HAVING. Синтаксис инструкции HAVING подобен синтаксису инструкции WHERE. Но для инструкции HAVING существует одно ограничение. Это условие (указанное в инструкции HAVING), может относиться только к выражениям списка SELECT или инструкции GROUP BY. Если в HAVING будет содержаться что-то, чего нет в SELECT или GROUP BY, будет выдано сообщение об ошибке.

Порядок следования инструкций GROUP BY и HAVING в операторе SELECT не имеет значения.

Можно использовать в одном запросе инструкции WHERE и HAVING. При этом важно понимать, как одна инструкция воздействует на другую. Инструкция WHERE выполняется первой, и строки, которые удовлетворяют условию WHERE, передаются в инструкцию GROUP BY. Инструкция GROUP BY сводит отфильтрованные данные в группы, а затем уже к группам применяется инструкция HAVING для устранения групп, не удовлетворяющих условию HAVING.


Синтаксис для запросов с обобщающими функциями и группировкой

3.4. Инструменты для создания и выполнения SQL - запросов

В Oracle Database XE писать и выполнять SQL-операторы можно с помощью инструмента SQL Commands (редактор SQL-запросов), или же можно использовать инструмент Query Builder (конструктор запросов) для построения запросов с графическим интерфейсом (рис. 1.7).

Запуск редактора SQL-запросов: щелчок на иконке SQL Commands.

Ввод и выполнение SQL-запроса: на странице SQL Commands написать тексты запросов -> выделить нужный для выполнения запрос -> щелчок на кнопке Run. Результат выполнения запроса – в нижней части окна (рис. 1.8).

Рис. 1.8. Ввод и выполнение SQL-запросов на странице SQL Commands

Oracle Database XE имеет удобный графический инструмент для создания SQL-запросов – конструктор запросов. Запуск конструктора запросов: щелчок на иконке Query Builder (рис. 1.7) или на таком же элементе раскрывающегося списка SQL Workshop -> открывается страница браузера с формой конструктора запросов. На левой панели – список доступных таблиц. Щелчок на имени таблицы -> форма таблицы с перечнем доступных столбцов размещается на правой верхней панели. На форме таблицы отметьте те столбцы, данные по которым должны войти в результирующее множество (рис. 1.9).


Рис. 1.9. Конструирование SQL-запросов на странице Query Builder

На правой нижней панели расположены закладки:

Conditions – условия, накладываемые на столбцы таблицы. Позволяет задавать псевдонимы столбцов, вводить условия отбора строк по данным столбца, определять тип и порядок сортировки, видимость результата, применяемую к столбцу функцию, необходимость группировки.

SQL – текст сгенерированного SQL-запроса.

Results – результат выполнения SQL-запроса. Для его получения необходимо щелкнуть на кнопке Run.

Saved SQL – сохраненные SQL-запросы. Чтобы сохранить запрос, необходимо щелкнуть на кнопке Save.

Конструктор запросов позволяет в наглядном виде производить объединение таблиц. Для объединения двух таблиц надо: выбрать две таблицы -> отметить на их формах столбцы для результата -> расположить курсор над связываемым столбцом дочерней таблицы (COUNTRIES) -> нажать правую кнопку мыши и перетащить с нажатой кнопкой изображение связи на связываемый столбец родительской таблицы (REGIONS) (рис. 1.10).

Рис. 1.10. Конструирование SQL-запросов для объединения таблиц

Если навести курсор на изображение связи, появляется всплывающая подсказка с условием связи. Щелчок на связи вызывает всплывающее меню – удалить связь, установить левое или правое внешнее объединение. По умолчанию связь определяет внутреннее объединение таблиц.

3.5. Информация об объектах базы данных

Oracle хранит всю информацию об объектах базы данных в специальном словаре данных (data dictionary). Словарь содержит описания, как организованы реальные данные. Словарь состоит из таблиц и представлений, к которым можно обращаться с запросами точно так же, как и к любым другим таблицам и представлениям базы данных. Владельцем этих представлений является пользователь Oracle с именем SYS. В представлениях типа user_* содержится информация об объектах, которых является текущий пользователь. Для получения информации об объектах пользователя можно использовать следующие представления:

    User_tables – реляционные таблицы, принадлежащие текущему пользователю; User_views – представления, принадлежащие текущему пользователю; User_tab_comments – комментарии для таблиц, принадлежащие текущему пользователю; User_tab_columns – столбцы всех таблиц, принадлежащих текущему пользователю; User_col_comments – комментарии для столбцов таблиц и представлений, принадлежащих текущему пользователю; User_indexes – индексы таблиц текущего пользователя; User_cons_columns – столбцы в ограничениях текущего пользователя; User_constraints – ограничения на таблицы текущего пользователя; User_triggers – триггеры базы данных, принадлежащие текущему пользователю.

Oracle Database XE имеет инструменты для исследования объектов базы данных и формирования отчетов по ним.

Доступ к инструменту исследования объектов базы данных: иконка Object Browser (рис. 1.7) или соответствующий элемент раскрывающегося списка SQL Workshop. По умолчанию происходит переход к списку таблиц (другой тип объектов базы данных для исследования можно выбрать из выпадающего списка). Затем после выбора конкретного объекта отображаются его свойства. Вид страницы отображения свойств таблицы DEPARTMENTS (закладка Table – показывает список столбцов и их свойства) приведен на рис. 1.11.

Рис. 1.11. Отображение свойств таблицы: список столбцов

Если перейти на закладку Model, то можно увидеть модель данных - наглядное изображение связей исследуемой таблицы с другими таблицами базы данных (рис. 1.12).


Рисунок 1.12. Отображение модели данных: связи таблицы

Приведенная на рисунке модель данных показывает, что таблицы LOCATIONS и EMPLOYEES являются родительскими по отношению к исследуемой таблице DEPARTMENTS. Они в модели изображены выше исследуемой таблицы. Сама же таблица DEPARTMENTS является родительской по отношению к таблицам JOB_HISTORY и EMPLOYEES (расположеные ниже таблицы DEPARTMENTS). Аналогичную информацию о родительских (по отношению к исследуемой) таблицах можно увидеть в закладке Dependencies (список References).

Доступ к отчетам: иконка Utilites (рис. 1.7) или соответствующий элемент раскрывающегося списка SQL Workshop -> элемент списка (или иконка) Object Reports -> элемент списка по интересующему параметру. Например, для списка Table Reports - столбцы, комментарии, ограничения и др. (рис.1.13).

Рис. 1.13. Отчеты Object Reports

С помощью этих инструментов можно получить достаточно полную информацию об основных объектах, имеющихся в базе данных.


Меры безопасности

Во время выполнения необходимо:

    соблюдать правила включения и выключения вычислительной техники; не подключать кабели, разъемы и другую аппаратуру к компьютеру, не относящиеся к лабораторной установке; при включенном напряжении сети не отключать, не подключать и не трогать кабели, соединяющие различные устройства компьютера; в случае обнаруженной неисправности в работе оборудования или нарушения правил сообщить руководителю лабораторной работы; не пытаться самостоятельно устранить неисправности в работе аппаратуры; по окончании работы привести в порядок рабочее место.

ВНИМАНИЕ! При работе за компьютером необходимо помнить: к каждому рабочему месту подведено опасное для жизни напряжение. Поэтому во время работы надо быть предельно внимательным и соблюдать все требования техники безопасности!

Задание
Запустить интернет-браузер, например, Google Chrome. Запустить домашнюю страницу Oracle Application Express по адресу http://127.0.0.1:8080/apex/ . Войти в базу данных как пользователь HR. С помощью редактора SQL-запросов составить и выполнить запрос на выборку данных из таблицы EMPLOYEES, используя инструкцию сортировки по именам сотрудника. С помощью конструктора SQL-запросов составить и выполнить запрос на выборку данных из таблицы DEPARTMENTS, используя инструкцию сортировки по названию департамента. С помощью редактора SQL-запросов составить и выполнить запрос на выборку данных из связанных таблиц DEPARTMENTS и EMPLOYEES, используя русские псевдонимы столбцов и сортировку. Запрос должен возвращать названия всех департаментов, полные имена менеджеров этих департаментов, их адреса электронной почты/text/category/zarabotnaya_plata/" rel="bookmark">заработной платы по департаменту, среднюю заработную плату по департаменту. Получить полную информацию об объектах базы данных – таблицах, столбцах, ограничениях, представлениях, включая все комментарии и типы данных. Основываясь на этой информации, составить модель данных, на которой показать все таблицы и связи между ними.

Указания:

    общую информацию о связях между таблицами получить с помощью инструмента Object Browser; подробную информацию о связях между таблицами получить с помощью запроса

select uc. table_name "Таблица",

uc. constraint_name "Огр внеш ключа",

ucc1.column_name "Поле внеш ключа",

ucc2.table_name "Родит таблица",

uc. r_constraint_name "Огр в РТ",

ucc2.column_name "Поле ключа в РТ"

from user_constraints uc

join user_cons_columns ucc1 on ucc1.constraint_name = uc. constraint_name

join user_cons_columns ucc2 on ucc2.constraint_name = uc. r_constraint_name

where uc. constraint_type = "R";

    модель данных представить в графическом виде с помощью MS Word, MS Visio или ERWin Data Modeller.

Требования к содержанию и оформлению отчета

Отчет должен быть выполнен в текстовом редакторе MS Word. Отчет должен содержать:

    Краткие теоретические сведения, Модель данных в графическом виде, Тексты всех SQL-запросов с комментариями относительно каждой использованной в запросе инструкции, Результирующие таблицы с данными для всех выполненных запросов, Выводы по проделанной работе.
Контрольные вопросы

7.1. Каково назначение БД Oracle Database XE?

7.2. Как осуществляется подключение пользователя к БД Oracle Database XE?

7.3. Какие инструменты предоставляет пользовательский интерфейс БД Oracle Database XE для работы с SQL-запросами?

7.4. Какие инструменты предоставляет пользовательский интерфейс БД Oracle Database XE для исследования объектов БД?

7.5. Каков синтаксис оператора SELECT?

7.6. Каково назначение инструкции WHERE?

7.7. Какие существуют виды объединения таблиц?

7.8. В чем отличия между внутренним и внешними объединениями таблиц?

7.9. Для чего применяются групповые операции?

7.10. Как надо использовать инструкции GROUP BY и HAVING?

Создание базы данных Oracle вручную включает в себя несколько шагов. Некоторые из них зависят от операционной системы. Например, в среде Windows, прежде чем создавать базу данных, сначала необходимо выполнить oraсle-программу, используемую для создания службы базы данных. Шаги по созданию базы данных вручную:

  1. Напишите сценарий создания базы данных. Образец такого сценария приведен на шаге 6.
  2. Создайте структуру каталогов, в которых будет размещаться новая база данных. Следуйте инструкциям по созданию оптимальной гибкой архитектуры.
  3. Измените существующий образец файла init.ora , поддерживаемый Oracle, чтобы в нем отражались параметры для новой базы данных.
  4. Опишите SID-имя для Oracle. На платформе Windows на приглашение операционной системы необходимо ввести: set ORACLE_SID = mydb

    В UNIX вводим:

    Export ORACLE_SID = mydb

  1. Установите соединение с базой данных через SQL* Plus как SYSTEM / MANAGER as sysdba или как / as sysdba и введите следующую команду запуска базы данных в режиме nomount: startup nomount pfile= D:/oracleadmin/mydbscripts/initMYDB.ora; Подставьте свои параметры инициализации вместо приведенных здесь значений параметров pfile .
  2. После запуска базы данных используйте написанный вами сценарий создания базы данных Oracle. Вот образец: create database MYNEW maxinstances 1 maxloghistory 1 maxlogfiles 5 maxlogmembers 5 maxdatafiles 100 datafile d:/oracle/oradata/mydb/system01.dbf size 325M reuse autoextend on next 10240K maxsize unlimited character set WE8MSWIN1252 national character set AL16UTF16 Logfile group 1 (d:/oracle/oradata/mydb/edo01.log) size 100M, group 2 (d:/oracle/oradata/mydb/edo02.log) size 100M, group 3 (d:/oracle/oradata/mydb/edo03.log) size 100M default temporary tablespace TEMP tempfile d:/oracle/oradata/mydbemp01.dbf extent management local uniform size 1M undo tablespace UND0_TS datafile d:/oracle/oradata/mydb/emp0.dbf size 150M reuse autextend on next 10240K maxsize unlimited;
  • После создания базы данных выполните сценарии catalog.sql , catproc.sql , catexp.sql и все новые сценарии, необходимые для поддержки установленных вами продуктов. В системе UNIX сценарии размещаются в каталоге $ORACLE_HOME\rdbms\admin , а в среде Windows - в $ORACLE_HOME/rdbms/admin . Прежде чем выполнять сценарии, просмотрите их, так как многие сценарии каталога вызывают другие сценарии.
  • Для обеспечения повышенной безопасности введите, как минимум, какие-нибудь другие пароли для SYS и SYSTEM , а не оставляете пароли по умолчанию MANAGER и CHANGE_ON_INSTALL . В примере сценария, приведенного на шаге 6, создается табличное пространство UNDO . Параметрами инициализации для него являются: undo_management=AUTO undo_tablespce=UNDOTBS Единственный параметр, который вы не можете изменить после создания базы данных, это размер блока базы данных, который был описан вами в файле init.ora до ее создания. Для задания этого значения используется параметр DB_BLOCK_SIZE . Например, в следующей строке задается размер блока базы данных по умолчанию, который составляет 8 Кбайт. DB_BL0CK_SIZE=8k Для того чтобы увидеть параметры, действующие в вашей базе данных, запросите динамический просмотр V$PARAMETER: select Name, Value, IsDefault from V$PARAMETER;

Создание базы данных Oracle 12c с помощью Database Configuration Assistant

1. Запустите . Нажмите кнопку Windows на клавиатуре, вы попадете на стартовый экран (Start screen), внизу экрана есть кнопка для вызова экрана приложений (Apps screen). Нажмите ее.

2. На экранее Apps выберите иконку Database Configuration Assistant .

3. Окно Database Configuration Assistant — Database Operation . Выберите Create a Database . Нажмите Следующий .

4. Окно Database Configuration Assistant — Creation Mode . Выберите Advanced mode . Нажмите Следующий .

5. Окно Database Configuration Assistant — Database Template . Выберите Custom Database . Нажмите Следующий .

6. Окно Database Configuration Assistant — Database Identification . Задайте имя базы. В поле Global Database Name введите имя БД . Имя может быть произвольным, не более шести знаков, начинаться с буквы и не содержать спецсимволов, подчеркиваний и пробелов, например test или rp34 . В поле SID введите уникальный идентификатор базы данных. Сделайте его таким же, как имя БД. Нажмите Следующий .

7. Окно Database Configuration Assistant — Management Options . Поставьте галочку Configure Enterprise Manager (EM) Database Express . В поле EM Database Express Port введите номер порта (по умолчанию номер порта предлагается 5500 — оставьте его). Нажмите Следующий .

8. Окно Database Configuration Assistant — Database Credential . Задайте пароли для системных пользователей (в данном примере для всех системных пользователей задаётся одинаковый пароль, на промышленной БД так делать не нужно). Отметьте Use the Same Administrative Password for All Accounts , введите пароль. Введите пароль для Oracle Home User Password – владельца Oracle Home от имени которого запускаться сервисы Oracle (этого пользователя вы создаете или указываете при установке Oracle – ). Нажмите Следующий .

9. Окно Database Configuration Assistant — Network Configuration . Выберите процесс прослушиватель или создайте новый. Нажмите Следующий .

10. Окно Database Configuration Assistant — Storage Locations . Задайте механизм хранения файлов базы (в данном примере задаётся файловая система). Выберите File System . Задайте местоположение файлов базы (в данном примере будут использоваться пути по умолчанию). Отметьте Use Database File Locations from Template .

Задайте опции восстановления базы (в данном примере опции восстановления не используются). Установите галочку Specify Fast Recovery Area . В эту папку по умолчанию делается резервное копирование с помощью RMAN, и сохраняются архивные копии журнальных файлов. По умолчанию папка располагается в {ORACLE_BASE}\fast_recovery_area. В поле Fast Recovery Area вы можете изменить этот путь и явно задать папку для резервного копирования. В параметре Fast Recovery Area Size задаётся лимит на размер этой папки (лучше сделать его равным объёму всего жёсткого диска). Параметр Enable Archiving включает режим архивирования журнальных файлов. Если нажать кнопку Edit Archive Mode Paramets то можно изменить шаблон для имён архивов журнальных файлов, а также дополнительные пути для мультиплицирования архивных копий. Оставьте всё по умолчанию.

ВНИМАНИЕ : Для промышленной базы нужно обязательно включать режим архивирования журнальных файлов. Однако, при достижении лимита папки Fast Recovery Area (т.е. при её полном заполнении) база данных остановиться, и будет ждать свободного места. Поэтому, если вы не можете следить за заполнением этой папки – НЕ включайте режим архивирования журнальных файлов, т.е. не ставьте галочку в поле Enable Archiving .

Нажмите Следующий .

11. Окно Database Configuration Assistant — Database Options . Выберите необходимые компоненты базы. Нажмите Следующий .

12. Окно . Закладка Memory . Задайте способ распределения и размер памяти. Выберите Typical . В поле Percentage задайте количество физической памяти, которое будет выделено для Oracle. Обычно это 70-80% . Если на сервере кроме Oracle запущены другие ресурсоёмкие процессы, выберете число меньше 70% .

13. Нажмите кнопку … Окно All Initialization Parameters . Исправьте значения (поле Value ) следующих параметров:

Обязательные параметры (обязательно изменить!).

; Для большого количества активных пользователей (более 70-80).

; Считайте РЕАЛЬНЫХ ПОЛЬЗОВАТЕЛЕЙ,

; а не количество компьютеров в сети.

; Если пользователей меньше 70-80 – не трогайте эти параметры.

; Если пользователей больше 100-200 возможно более эффективно

; использовать режим разделяемого сервера (Shared Server Mode).

processes = кол.пользователей*2

sessions = 1,1*processes +5

Нажмите Close . Окно Database Configuration Assistant — Initialization Parameters .

14. Окно Database Configuration Assistant — Initialization Parameters . Закладка Sizing . Выберите размера блока БД. Размер блока БД следует выбирать не менее 8Кб . Если у сервера хорошая дисковая подсистема (SCSI диски или RAID ) можно выбрать 16Кб и выше (размер блока более 8Кб имеет смысл только для больших баз). В поле Block Size введите нужное значение (8192 или 16384 ).

15. Окно Database Configuration Assistant — Initialization Parameters . Закладка Character Sets . Выберите кодировку для БД. Кодировка должна быть CL8MSWIN1251 . По умолчанию выбрано Use the default . Если при этом указана правильная кодировка, то менять ничего не нужно. Если указана не правильная кодировка. В этом случае выберите Choose from the list of character sets и в списке выберите правильную кодировку CL8MSWIN1251 . В поле Default Language из раскрывающегося списка выбрать значение «Русский » и в следующем поле Default Territory – значение «Россия ».

14. Окно Database Configuration Assistant — Initialization Parameters . Закладка Connection Mode . Выберите Dedicate Server Mode . Нажмите Следующий .

15. Окно Database Configuration Assistant — Creation Option . Выберите Create Database . Нажмите Следующий .

16. Окно Database Configuration Assistant — Summary . Проверьте правильность установленных параметров. Нажмите OK .

17. Окно Database Configuration Assistant — Progress Page . Идет процесс создания БД. Дождитесь завершения.

18. Окно Database Configuration Assistant . Создание базы данных завершено. Запишите WEB-адрес для Database Control. Нажмите Закрыть .

19. БД создана и уже запущена. Для соединения с БД из других ORACLE_HOME, необходимо настроить сетевую среду Oracle для них.

20. После создания БД можно изменить некоторые настройки для БД. Для нужно выполнить несколько sql-команд в sqlplus (или TOAD) под SYS и перезапустить БД.

Запустите sqlplus /nolog.

C:\> sqlplus /nolog

соединитесь с БД под пользователем sys as sysdba

SQL> conn sys/sys as sysdba

отключить использование корзины в БД

SQL> alter system set recyclebin=off scope=spfile;

отключить регистрозависимость пароля

SQL> alter system set sec_case_sensitive_logon=FALSE scope=both;

исправить проблему с ORA-29471: DBMS_SQL access denied

SQL> alter system set «_dbms_sql_security_level»=384 scope=spfile;

(по желанию) чтобы не менять пароль пользователям каждые 60 дней

вместо unlimited можно поставить число = количеству дней

SQL> alter profile DEFAULT limit password_life_time unlimited;

перезапуск БД

SQL> shutdown immediate

SQL> startup

21. Старые версии клиентов 8, 9, 10, 11 не могут соединиться с Oracle 12c с ошибками:

ORA-28040: No matching authentication protocol — для forms 6i

ORA-01031: insufficient privileges — для клиента 11g

Для решения проблемы нужно добавить в sqlnet.ora на сервере

SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8

SQLNET.ALLOWED_LOGON_VERSION_SERVER=8

22. Некоторые клиенты oracle 10 и 11 падают с ORA-01031: insufficient privileges при попытке выполнить

SELECT u.NAME
FROM sys. USER$ u
WHERE u. TYPE# = 1
ORDER BY 1

Starting 12c, the SELECT ANY DICTIONARY privilege no longer permits access to security sensitive data dictionary tables DEFAULT_PWD$, ENC$, LINK$, USER$, USER_HISTORY$, and XS$VERIFIERS. This change increases the default security of the database by not allowing access to a subset of data dictionary tables through the SELECT ANY DICTIONARY privilege.

Обходной маневр:

GRANT SELECT ON sys. USER$ TO PUBLIC;



Copyright © 2024 Немного о компьютере.