Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информационное обеспечение управляющих систем реального времени

..pdf
Скачиваний:
3
Добавлен:
15.11.2022
Размер:
3.63 Mб
Скачать

SELECT ABS(100) XI, ABS(-100) Х2, ABS(-100.2) Х3

FROM DUAL

Функция CEIL возвращает наименьшее целое, большее или равное переданному в качестве параметра числу n. Например:

SELECT CEIL(100) X1, CEIL(-IOO) Х2, CEIL(100.2) Х3, CEIL(-100.2) Х4 FROM DUAL

Функция FLOOR возвращает наибольшее целое, меньшее или равное переданному в качестве параметра числу n. Например:

SELECT FL00R(100.22) X1, FL00R(- 100.22) Х2, FL00R(100.99) ХЗ, FL00R(100.01) Х4 FROM DUAL

Функция TRUNC возвращает число n, усеченное до m знаков после десятичной точки. Параметр m может не указываться – в этом случае n усекается до целого.

SELECT TRUNC(100.25678) X1, TRUNC(- 100.25678) Х2, TRUNC(100.99) ХЗ, TRUNC(100.25678, 2) Х4 FROM DUAL

Ознакомиться со всеми сотнями функций можно в руководствах программиста SQL, например в [23].

2.6.SQL-операторы определения данных

(Data Definition Language, DDL)

SQL-DDL (Data Definition Language) – язык определе-

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

101

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

Операторы определения данных (Data Definition Language, DDL):

CREATE создает объект БД (саму базу, таблицу, представление, пользователя и т.д.),

ALTER изменяет объект,

DROP удаляет объект.

Основными командами являются [23]: CREATE DATABASE (создать базу данных) CREATE TABLE (создать таблицу)

CREATE VIEW (создать виртуальную таблицу) CREATE INDEX (создать индекс)

CREATE TRIGGER (создать триггер)

CREATE PROCEDURE (создатьсохраненнуюпроцедуру) ALTER DATABASE (модифицировать базу данных) ALTER TABLE (модифицировать таблицу)

ALTER VIEW (модифицировать виртуальную таблицу) ALTER INDEX (модифицировать индекс)

ALTER TRIGGER (модифицировать триггер)

ALTER PROCEDURE (модифицировать сохраненную процедуру)

DROP DATABASE (удалить базу данных) DROP TABLE (удалить таблицу)

DROP VIEW (удалить виртуальную таблицу) DROP INDEX (удалить индекс)

DROP TRIGGER (удалить триггер)

DROP PROCEDURE (удалить сохраненную процедуру)

102

Язык управления данными используется для управления правами доступа к данным и выполнением процедур в многопользовательской среде. Более точно его можно назвать «язык управления доступом». Он состоит из двух основных команд [23]:

GRANT (дать права)

REVOKE (забрать права)

2.7. Средства определения схемы. Схема пользователя базы данных

Средства определения схемы БД в стандарте SQL/89 относятся к наиболее слабым и допускающим различную интерпретацию частям стандарта.

Всоответствии с правилами SQL/89 каждая таблица данной БД имеет простое и квалифицированное (уточненное) имена. В качестве квалификатора имени выступает «идентификатор полномочий» таблицы, который обычно в реализациях совпадает с именем некоторого пользователя. Квалифицированное имя таблицы имеет вид:

<идентификатор полномочий>. <простое

имя>

Воператоре определения схемы содержится иденти-

фикатор полномочий и список элементов схемы, каждый из которых может быть определением таблицы, определением представления (view) или определением привилегий. Каждое из этих определений представляется отдельным оператором SQL/89, но все они, как уже говорилось, должны быть встроены в оператор определения схемы.

В различных СУБД процедура создания баз данных обычно закрепляется только за администратором баз данных. В однопользовательских системах принимаемая по умолчанию база данных может быть сформирована непосредственно в процессе установки и настройки самой

103

СУБД. Стандарт SQL не определяет, как должны создаваться базы данных, поэтому в каждом из диалектов языка SQL обычно используется свой подход. В соответствии со стандартом SQL таблицы и другие объекты базы данных существуют в некоторой среде. Помимо этого каждая среда состоит из одного или более каталогов, а каждый каталог – из набора схем. Схема представляет собой поименованную коллекцию объектов базы данных, некоторым образом связанных друг с другом (все объекты в базе данных должны быть описаны в той или иной схеме). Объектами схемы могут быть таблицы, представления, домены, утверждения, сопоставления, толкования и наборы символов. Все они имеют одного и того же владельца и множество общих значений, принимаемых по умолчанию.

Стандарт SQL оставляет за разработчиками СУБД право выбора конкретного механизма создания и уничтожения каталогов, однако механизм создания и удаления схем регламентируется посредством операторов CREATE SCHEMA и DROP SCHEMA. В стандарте также указано, что в рамках оператора создания схемы должна существовать возможность определения диапазона привилегий, доступных пользователям создаваемой схемы. Однако конкретные способы определения подобных привилегий в разных СУБД различаются.

В настоящее время операторы CREATE SCHEMA и DROP SCHEMA реализованы в очень немногих СУБД. В других реализациях, например в СУБД MS SQL Server, используется оператор CREATE DATABASE [29].

Схема пользователя базы данных Oracle. CREATE USER

Схема пользователя – логическая совокупность объектов БД, например таблиц, принадлежащих определенному владельцу.

104

Каждая база Oracle с момента своего создания содержит две схемы (следует отметить, что термины «учетная запись», «схема» и «пользователь» обозначают в Oracle одно и то же) – SYS и SYSTEM. Схема SYS содержит все системные объекты – внутренние таблицы базы данных, пакеты, процедуры. Кроме того, пользователь SYS является владельцем словаря данных. Словарь данных Oracle – это совокупность таблиц и представлений, позволяющих получить любую информацию о структуре базы данных, ее настройках и состоянии при помощи стандартных SQLзапросов. Учетная запись SYS является также учетной записью администратора базы данных с неограниченными полномочиями. Учетная запись SYSTEM предоставляет доступ ко всем объектам базы и наделена ролью DBA. При работе с учетными записями SYS и SYSTEM необходимо соблюдать ряд правил:

1.Разработка в базе данных не должна вестись от имени пользователей SYS и SYSTEM.

2.Нельзя удалять или изменять системные объекты, размещенные в этих схемах, – подобные действия могут привести к непредсказуемым последствиям.

3.У учетных записей SYS и SYSTEM должны быть заданы сложные, устойчивые к подбору пароли длиной не менее 6–8 символов. В случае необходимости можно вообще запретить регистрацию пользователей под учетными записями SYS и SYSTEM.

Роли в Oracle – это именованные группы привилегий. После формирования базы данных в ней создается несколько стандартных ролей:

1.Роль CONNECT – содержит только одну привилегию CREATE SESSION, позволяющую создавать соединение с базой.

2.Роль DBA – полный набор привилегий, необходимых администратору базы.

105

3.Роль RESOURCE – базовый набор привилегий, необходимых разработчику.

4.Роль DELETE_CATALOG_ROLE – привилегии для удаления информации из таблицы аудита.

5.Роль SELECT_CATALOG_ROLE – привилегия для чтения информации из таблиц аудита.

6.Роль EXP_FULL_DATABASE – необходима пользователю, из-под учетной записи которого будет производиться полный экспорт базы.

7.Роль IMP_FULL_DATABASE – необходима пользователю, из-под учетной записи которого будет производиться полный импорт базы [28].

Для создания схемы пользователя БД, используемой для доступа к базе данных и работы с ней, предназначена команда CREATE USER.

Для схемы пользователя (CREATE USER) при ее создании могут быть указаны следующие свойства:

– имя области данных в базе данных, используемой по умолчанию при работе данного пользователя с базой данных;

– имя области данных в базе данных, используемой для хранения временных данных при работе данного пользователя с базой данных;

– размеры области данных, выделенной для работы с базой данных данному пользователю;

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

Условия, необходимые для использования команды

(CREATE USER):

• Пользователь, создающий другого пользователя, должен иметь системную привилегию CREATE USER.

• Для указания имени области данных, используемой для хранения временных данных или используемой по умолчанию, необходимо, чтобы уровень в СУБД создаю-

106

щего пользователя был старше уровня создания области данных.

• Для назначения создаваемой схеме некоторого профиля пользователя необходимо, чтобы уровень в СУБД создающего пользователя был старше уровня создания данного профиля пользователя.

USER – является именем пользователя (USER), который будет создан.

IDENTIFIED – определяет способ доступа к Oracle:

BY password – доступ определяется по вводимому паролю (password); пароль должен соответствовать правилам именования объектов в СУБД;

EXTERNALLY – доступ определяется именем операционной системы устанавливаемого соединения.

DEFAULT TABLESPACE – устанавливает имя области данных, в которой по умолчанию будут создаваться объекты пользователя. Если имя области данных не указано, то объекты пользователя по умолчанию создаются в области данных SYSTEM.

TEMPORARY TABLESPACE – устанавливает имя об-

ласти данных для временных сегментов пользователя. Если имя области данных не указано, то временные сегменты создаются в области данных SYSTEM.

QUOTA – позволяет пользователю использовать область (области) данных, а также указать (необязательно) размер используемого пространства в байтах, килобайтах (К) или мегабайтах (М). Возможно указание различного значения QUOTА для нескольких областей данных. Ключевое слово UNLIMITED используется при предоставлении неограниченного права на использование областей данных.

PROFILE – определяет профиль пользователя, устанавливающий ограничения на использование ресурсов базы данных. По умолчанию пользователю назначается профиль

DEFAULT.

107

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

Oracle CREATE USER Пример 1 CREATE USER st IDENTIFIED BY st DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp

QUOTA 150K ON users QUOTA UNLIMITED ON temp;

Созданный пользователь обладает следующими характеристиками:

имя – st;

пароль – st;

область данных – users;

размер области данных – 150 килобайт;

область временных данных – temp;

размер области временных данных – неограниченное использование.

2.8. Метаданные в Oracle

Словарь метаданных содержит информацию об интересующих объектах и структурах. В табл. 1 перечислены многие из представлений и указано их назначение. Табли-

цы USER_SOURCE и USER_TRIGGERS полезны, когда требуется узнать, исходные тексты каких процедур и триггеров хранятся в настоящий момент в базе данных [3].

108

 

Таблица 1

Метаданные в СУБД Oracle [3]

 

 

Имя таблицы

Содержимое

DICT

Метаданные, описывающие сло-

варь данных

 

 

Список таблиц, представлений,

USER_CATALOG

последовательностей и других

структур, принадлежащих пользо-

 

 

вателю

USER_TABLES

Структуры таблиц пользователя

 

Потомок таблицы USER TABLES.

USER_TAB_COLUMNS

Содержит данные о столбцах таб-

 

лиц. Синонимом является COLS

USER_VIEW

Пользовательские представления

USER_ CONSTRAINTS

Пользовательские ограничения

 

 

 

Потомок таблицы

USER_CONS_COLUMNS

USER_CONSTRAINTS. Содержит

столбцы, на которые наложены

 

 

ограничения

 

Метаданные, описывающие триг-

 

геры. Есть смысл запрашивать

 

столбцы Trigger Name, Trigger

USER_TRIGGERS

Type и Trigger Event. Предупреж-

 

дение: Trigger Body в действитель-

 

ности не содержит исходного кода

 

триггера

 

Исходные тексты. Например, для

 

получения текста процедуры

USER_SOURCE

MYTRIGGER: SELECT Text

 

FROM USER_SOURCE WHERE

 

Name = 'MYTRIGGER' AND

 

Type = 'PROCEDURE'

CTX> COLUMN object_name FORMAT A30 CTX> COLUMN object_type FORMAT A30 CTX> COLUMN segment_name FORMAT A30 CTX> COLUMN segment_type FORMAT A30

109

 

CTX> SELECT object_name, object_type

FROM user_objects ORDER BY 2, 1;

 

 

 

 

CTX>

SELECT

segment_name,

segment_type

FROM

user_segments

ORDER

BY

2,

1;

 

 

 

 

 

 

 

Результат:

 

 

 

 

 

 

OBJECT_NAME OBJECT_TYPE

 

 

------

 

------------------------------

 

--------------DOCS_VC2DOC_IDX INDEX

 

 

DR$DOCS_VC2DOC_IDX$X INDEX

 

 

 

 

SYS_IOT_TOP_51619 INDEX

 

 

 

 

 

SYS_IOT_TOP_51624 INDEX

 

 

 

 

 

SYS_LOB0000051616C00006$$ LOB

 

 

 

SYS_LOB0000051621C00002$$ LOB

 

 

 

DOCS TABLE

 

 

 

 

 

 

DR$DOCS_VC2DOC_IDX$I TABLE

 

 

 

 

DR$DOCS_VC2DOC_IDX$K TABLE

 

 

 

 

DR$DOCS_VC2DOC_IDX$N TABLE

 

 

 

 

DR$DOCS_VC2DOC_IDX$R TABLE

 

 

 

 

CTX>

SELECT

segment_name,

segment_type

FROM

user_segments

ORDER

BY

2,

1;

 

 

 

 

 

 

 

Результат:

 

 

 

 

 

 

SEGMENT_NAME SEGMENT_TYPE

 

------

 

------------------------------

--------------

DR$DOCS_VC2DOC_IDX$X INDEX SYS_IOT_TOP_51619 INDEX SYS_IOT_TOP_51624 INDEX SYS_IL0000051616C00006$$ LOBINDEX SYS_IL0000051621C00002$$ LOBINDEX SYS_LOB0000051616C00006$$ LOBSEGMENT SYS_LOB0000051621C00002$$ LOBSEGMENT DOCS TABLE

110