Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК по СРОД-10-12.doc
Скачиваний:
10
Добавлен:
13.11.2018
Размер:
2.55 Mб
Скачать

8.2. Табличные пространства и файлы данных

Табличное пространство (tablespace) – это набор, состоящий из одного или нескольких файлов данных. В этих файлах размещается информация, относящаяся к базе данных. Каждая база данных Oracle содержит табличные пространства System и SYS (рис.2). Они автоматически создаются, когда создается база данных. Пространство System всегда находится в оперативном состоянии, когда открыта база данных. В нем хранятся таблицы, поддерживающие функциональные возможности ядра базы данных (например, таблицы словаря данных). SYS – вспомогательное по отношению к System табличное пространство. Оно хранит многие компоненты базы данных и должно быть в оперативном состоянии для корректного функционирования базы данных.

Рис.8.2. Табличные пространства System и Sys

В базе данных существуют следующие структуры хранения:

- Логические:

база данных, схема, табличное пространство, сегмент, экстент, блок Oracle,

- Физические:

файлы данных, файлы параметров, журналы и блок ОС.

8.3. PL/SQL ORACLE

Продукты Oracle можно разделить на пять категорий.

  • Oracle database

  • Oracle Application Server (Сервер приложений)

  • Internet Development Suite (Комплект продуктов для Интернет разработок)

  • Data Warehousing and Business Development (Средства для работы с хранилищем данных и организации бизнеса)

  • Oracle E-business Suite (Набор комплексных приложений для электронного бизнеса)

PL/SQL – Procedural Language/Structured Query Language

(Процедурный язык / Язык структурированных запросов)

Впервые PL/SQL появился в шестой версии Oracle в 1988г.

PL/SQL – язык программирования, напоминающий языки ADA и C.

PL/SQL используется для считывания информации, заполнения БД, создания хранимых объектов и даже для отображения Web – страниц.

Oracle – это не просто база данных, она является также и процессором, поддерживающим различные языки программирования. Так Oracle9i содержит процессор Java со встроенной виртуальной машиной Java (Java Virtual Machine – JVM), а также процессор PL/SQL. Oracle самодостаточен и поэтому не требует других программных продуктов. Процессор PL/SQL тесно интегрирован с базой данных.

Рис.8.3. Архитектура PL/SQL

Рис.8.3 демонстрирует процесс работы PL/SQL внутри базы данных и за ее пределами. Центральное положение занимает сервер Oracle, который является основным процессором БД. Он координирует все обращения к базе данных. Когда программа посылает на сервер запрос, БД Oracle загружает откомпилированный код в память, после чего процессоры PL/SQL и SQL выполняют этот код.

Структура программы PL/SQL

[DECLARE]

Переменные, курсоры

BEGIN

- Команды SQL

- Команды PL/SQL

[EXEPTION]

Действия при возникновении ошибок

END;

/

Программы в PL/SQL обычно называют блоками. Фактически блоки представляют собой завершение программы, которые могут быть успешно выполнены. Каждая программная единица PL/SQL состоит из одного или нескольких блоков. Эти блоки могут быть полностью автономными или вложенными один в другой.

Комментарии: -- однострочные, /* --- */ многострочные.

Типы блоков.

Существуют три типа блоков, из которых может быть выстроена программа PL/SQL: анонимные блоки; процедурные; функции (рис.8.4).

Рис.8.4. Типы блоков

Анонимные блоки не имеют имен. Эти блоки не хранятся в базе данных. Они передаются на исполнение машине PL/SQL во время выполнения приложения. Подпрограммы (subprograms) – это именованные блоки PL/SQL, хранимые в базе данных. Они могут быть вызваны из любой точки приложения. Объявлять их можно как процедуры или функции. Обычно процедура используется для выполнения действия, а функция - для вычисления и возврата значений.

Среды программирования на PL/SQL.

Oracle JDeveloper 10g - интегрированная среда разработки.

Позволяет:

- производить навигацию по присоединенной базе данных и доступ к ее объектам;

- создание пользователей и объектов базы данных;

- создание, выполнение и отладка программ на PL/SQL (например, процедур, функций и пакетов).

iSQL*Plus – это интерфейс к SQL*Plus, предоставляемый из браузера.

Рис.8.5. Архитектура iSQL*Plus

Переменные PL/SQL:

  • Скалярные

  • Составные

  • Ссылочные

  • LOB (большие объекты)

Наиболее часто встречаются следующие типы данных:

VARCHAR2, NUMBER, DATE, BOOLEAN

Инициализация переменных производится по следующей схеме:

Имя_переменной тип_переменной := значение;

Также можно определять переменные в теле основной программы:

Имя_переменной := значение;

Примеры

DECLARE

L_name VARCHAR2(30);

L_today DATE := sysdate;

L_counter NUMBER :=0;

L_average_amount NUMBER(12,2);

Flag BOOLEAN := FALSE;

Атрибут %TYPE позволяет объявить переменную на основе уже объявленной переменной или столбца базы данных. Это позволит избежать ошибок, вызванных несоответствием в типах данных или неверной точностью.

Например.

Balance NUMBER(7,2);

Min_balance balance%TYPE:=1000;

В PL/SQL имеются переменные подстановки, которые используются для ввода данных во время выполнения. В блоке перед именем переменной подстановки ставится амперсанд.

Empno NUMBER(6) := &empno;

Команда DEFINE используется для определения пользовательской переменной

DEFINE lname :=Urman

Команды управления:

  • Условные операторы IF

  • Операторы CASE

  • Операторы цикла

Конструкция IF – THEN

IF x = 0 THEN

Y:=1;

END IF;

BEGIN

IF x>y THEN

Max := x;

ELSE

Max := y;

END IF;

END;

Оператор CASE

CASE переменная

WHEN выражение1 THEN значение1

WHEN выражение2 THEN значение2

WHEN выражение3 THEN значение3

ELSE значение5

END;

Циклы:

Имеются три типа циклов: простой цикл LOOP, цикл FOR, цикл WHILE

Цикл LOOP

LOOP

команды;

EXIT [WHEN выражение];

END LOOP;

Для выхода из цикла используется оператор EXIT

Циклы WHILE

WHILE условие LOOP

Команда1;

Команда2;

. . .

END LOOP;

Цикл FOR

FOR I IN m . . n

LOOP

Команда1;

END LOOP

Пример.

DECLARE

m NUMBER :=1;

n NUMBER := 100;

BEGIN

FOR I IN m . . n LOOP

. . .

END LOOP;

END;

Команды SQL в PL/SQL

SELECT – команда выборки данных

Синтаксис:

SELECT список_выборки

INTO {имя_переменной [, имя_переменной] . . .| имя_записи}

FROM таблица

[WHERE условие];

Пример.

Пусть у нас имеется отношение sotrud (ns, name),

Где ns – номер сотрудника, name – имя сотрудника.

SET SERVEROUTPUT ON

DECLARE

fname VARCHAR2(25);

BEGIN

SELECT name INTO fname

FROM sort WHERE ns=126;

DBMS_OUTPUT.PUT_LINE(‘ Name is: ‘ ||fname);

END;

Манипулирование данными в PL/SQL.

Внесение изменений в таблицы базы данных с помощью команд DML:

INSERT, UPDATE, DELETE, MERGE

Оператор MERGE выбирает строки из одной таблицы для изменения или вставки в другую таблицу.

Курсор SQL

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

Синтаксис объявления явного курсора:

CURSOR имя_курсора IS команда_SELECT;

Пример.

DECLARE

CURSOR q IS

SELECT ns, name FROM sort

WHERE otd=40;

Управление явным курсором производится по следующей схеме, см.рис.8.6.

Рис.8.6. Схема управления курсором

Пример. Выборка данных из курсора.

SET SERVEROUTPUT ON

DECLARE

CURSOR q IS

SELECT ns, name FROM sotr

WHERE n_otdela=40;

num sotr.ns%TYPE;

lname sotr.name%TYPE;

BEGIN

OPEN q;

FETCH q INTO num, lname;

DBMS_OUTPUT.PUT_LINE (num || ‘ ‘ || lname);

. . .

END;

Пример. Выборка данных в цикле.

SET SERVEROUTPUT ON

DECLARE

CURSOR q IS

SELECT ns, name FROM sotr

WHERE n_otdela=40;

num sotr.ns%TYPE;

lname sotr.name%TYPE;

BEGIN

OPEN q;

LOOP

FETCH q INTO num, lname;

EXIT WHEN q%NOTFOUND;

DBMS_OUTPUT.PUT_LINE (num || ‘ ‘ || lname);

END LOOP;

. . .

END;

Курсорный цикл FOR

Курсорный цикл FOR включает курсор SELECT и позволяет осуществлять выборку нескольких строк из базы данных. При этом не нужно заботиться об открытии и закрытии курсора. ORACLE сделает это самостоятельно внутри цикла. В цикле FOR объявлять курсор не требуется.

Пример.

SET SERVEROUTPUT ON

BEGIN

FOR q IN ( SELECT ns, name FROM sotr

WHERE n_otdela=40;

LOOP

DBMS_OUTPUT.PUT_LINE (q.ns || ‘ ‘ || q.name);

END LOOP;

END;

Здесь переменная q используется для сохранения результатов выполнения курсора.

8.4. Процедуры и функции

Процедуры и функции – это именованные блоки PL/SQL. Их также называют подпрограммами. Они компилируются и хранятся в базе данных. Анонимные блоки, рассмотренные ранее – это неименованные блоки. Они после выполнения не сохраняются для последующего повторного использования.

Синтаксис процедуры:

CREATE [OR REPLACE] PROCEDURE имя_процедуры

[(аргумент1 [тип_параметра1] тип_данных1,

[(аргумент2 [тип_параметра2] тип_данных2, . . .)]

IS|AS

тело_процедуры;

Вызов процедуры в анонимном блоке можно осуществить по имени:

Begin

Имя_процедуры;

END;

Процедуру можно также вызвать с помощью команды CALL:

CALL <имя_процедуры>

Функция создается следующим образом:

CREATE [OR REPLACE] FUNCTION имя_функции

[(аргумент1 [тип_параметра1] тип_данных1,

[(аргумент2 [тип_параметра2] тип_данных2, . . .)]

RETURN тип_данных

IS|AS

тело_функции;

Вызываемая функция просто вставляется в исполняемую секцию анонимного блока.

База данных Oracle используется в качестве процессора для Интернета. Тот факт, что Интернет функционирует 24 часа в сутки является громадным достоинством Oracle по доступности к базам данных в любое время суток.

Вопросы

  1. Назовите 5 основных продуктов ORACLE.

  2. Основные блоки программ PL/SQL.

  3. В чем отличие анонимных блоков от именованных.

  4. Основные переменные PL/SQL.

  5. Как производится инициализация переменных.

  6. Назовите основные команды управления в PL/SQL.

  7. Циклы программ.

  8. Как производится однострочная выборка из базы данных.

  9. Для чего используется понятие «курсор».

Приложение 1. Пример создания Web – страницы

  1. Введите в текстовом редакторе Блокнот (Notepad) основные теги, определяющие структуру любых HTML – файлов.

<html>

<head>

<title></title>

</head>

<body>

</body>

</html>

  1. На основе, полученной заготовки создадим Web-страницу г.Казани

<html>

<head>

<title>Web-страница г.Казани</title>

</head>

<body bgcolor=blue text =yellow >

<h1 align=center>Добро пожаловать на нашу страничку</h1>

<center><a href=”spisok.html”><img src=logo.gif border=1></a></center>

<p style=”font-weigt: bold; font-style: italic; font-size: 150%; text:align: center”> Здесь Вы узнаете<a href=”spisok.html”> о нашем городе </a></p>

</body>

</html>

Созданный файл сохраните под именем Kazan.html

  1. Создадим список наших возможностей

<html>

<head>

<title>Каков наш город</title>

</head>

<body bgcolor=aqua text=navy>

<h1 align=center>Город Казань</h1>

<ul>

<li> Это красивый город на берегу Волги

<li>Городу исполнилось 1000 лет

<li>Богатая история: Толстой, Пушкин, Лобачевский, Бутлеров, Тукай

<li>В городе развита промышленность: авиационная, машиностроительная, химическая, легкая

<li>Город вузов: КГУ, КГТУ-КАИ, КГТУ-КХТИ, КИСИ, ЭУ, Сельхоз-академия и др.

</ul>

<p align=center>Если у Вас есть вопросы или предложения, напишите нам:</p>

<form action=”mailto: kazan@narod.ru” metod=post>

<center><texarea rows=5 cols=40 name=Comments></texarea></center>

<p><center><input type=submit value=”Отправить”></center></p>

<p><center><a href=”kazan.html”>На первую страницу</a></center>

</form>

</body>

</html>

Сохраните данный файл под именем Spisok.html

4.Создадим меню в виде таблицы

<html>

<head>

<title>Меню</title>

</head>

<body bgcolor=silver>

<table border=1 width=140>

<tr><th><a href=”Kazan.html” target=”kadr”>Главная страница</th></tr>

<tr><th><a href=”Spisok.html” target=”kadr”> История города</th></tr>

<tr><th>Промышленность города</th></tr>

<tr><th>Учебные центры</th></tr>

<tr><th>Культурная и спортивная жизнь</th></tr>

</table>

</body>

</html>

Сохраните под именем Menu.html.

В данном файле только две ссылки на Kazan.html и Spisok.html.

Остальные ссылки и соответствующие файлы разработайте самостоятельно.

  1. Значительно улучшить внешний вид и функции сайта можно, используя фреймы. Для создания фреймов вместо тегов <body> используется пара тегов <frameset></frameset> с атрибутами rows или cols.

<html>

<head>

<title>Город Казань</title>

</head>

<frameset cols=160,*>

<frame src=”Menu.html”>

<frame src=”Kazan.html” name=”frame”>

</frameset>

</html>

Сохраним под именем index.html, данный файл является исходным

Чтобы убрать полосу прокрутки можно добавить

<frame src=”Menu.html” scrolling=no>

Литература:

  1. Дейт К. Введение в системы баз данных. - М.: "Вильямс", 2000.

  2. Конноли Т., Бегг К., Страчан А. Базы данных. Проектирование, реализация и сопровождение. - М.- С./П.- К., 2000.

  3. Карпова Т., Базы данных: модели, разработка, реализация, СПб: Питер, 2001 – 304с.

  4. Фролов А.В., Фролов Г.В. Базы данных в Интернете: практическое руководство по созданию Web – приложений с базами данных., М.: 2000 – 448с.

  5. Ризаев И.С., Яхина З.Т. Базы данных: Учебное пособие. Казань, Изд-во Казан.гос.техн.ун-та, 2008 – 240с.

  6. Хомоненко и др. Базы данных. Учебник для высших учебных заведений, 2002 – 672с.

  7. Кузнецов С.Д. Основы современных баз данных. Электронные информационно-аналитические материалы. http://www.citmgu.ru

ОГЛАВЛЕНИЕ

Введение ………………………………………………………………...

3

1.

Методы распределенной обработки данных …………………………

5

1.1.

Цели распределенной обработки данных ………………………….

8

1.2.

Модель «клиент-сервер» …………….

10

1.3.

Архитектура удаленного доступа ……………………………….

12

1.4.

Модели удаленного доступа ………………..

14

1.5.

Многоуровневые модели………………………………………………

19

1.6.

Физическая модель распределенной обработки данных

20

Вопросы

21

2.

Распределенные базы данных…………………

22

2.1.

Режимы работы с базой данных ……………

22

2.2.

Классификация систем по способам обработки данных ………...

23

2.3.

Однородные и неоднородные системы

28

2.4.

Стратегия размещения данных в РБД по узлам сети ……………….

33

2.5.

Свойства распределенных БД

35

2.6.

Функции СУРБД

37

2.7.

Архитектура распределенных СУБД

40

2.8.

41

Вопросы …………………………………………………………………

44

3.

Параллельные процессы (или процессы транзакций) ……………….

44

3.1.

Транзакции ………………………………………………………………

44

3.2.

Параллелизм операций над БД ………………………………………...

44

3.3.

Проблемы параллельных процессов …………………………………..

48

3.4.

Элементы блокировок ………………………………………………….

49

3.5.

Расписание транзакций …………………………………………………

55

3.6.

Модель с блокировками для чтения и записи ………………………..

67

3.7.

Блокировки в Visual FoxPro ……………………………………………

72

Вопросы …………………………………………………………………

72

4.

Структурированный язык запросов SQL ……………………………..

73

4.1.

Основные операторы …………………………………………………..

74

4.2.

Синтаксис оператора SELECT ………………………………………..

75

4.3.

Примеры запросов на языке SQL ……………………………………..

76

4.4.

Встроенный язык SQL …………………………………………………

85

Вопросы …………………………………………………………………

89

5.

Безопасность БД ………………………………………………………..

90

5.1.

Идентификация и установление подлинности ………………………..

90

5.2.

Системы привилегий …………………………………………………...

92

5.3.

Целостность данных ……………………………………………………

94

5.4.

Шифрование данных …………………………………………………..

96

Вопросы …………………………………………………………………

97

6.

Хранилище данных …………………………………………………….

98

6.1.

Концепции хранилищ данных …………………………………………

99

6.2.

Многомерная модель данных ………………………………………….

100

6.3.

OLAP – системы ………………………………………………………..

101

6.4.

Интеллектуальный анализ данных ……………………………………

103

Вопросы …………………………………………………………………

104

7.

Базы данных в Интернете …………………………………………..

105

7.1.

Язык HTML …………………………………………………………….

106

7.2.

Публикация БД в Интернете ………………………………………….

119

7.3.

Средства взаимодействия ……………………………………………..

121

Вопросы ………………………………………………………………..

122

8.

Oracle database

123

8.1.

Архитектура сервера

123

8.2.

Табличные пространства и файлы данных

125

8.3.

PL/SQL Oracle

126

8.4,

Процедуры и функции

136

Приложение 1. Пример создания Web-страницы ……………………

139

Литература ………………………………………………………………

142

Оглавление

143

145