Синтаксис: создаем
кластер, контекст,
управляющий файл и базу
данных
Уважаемые подписчики!
Этот выпуск, раз уж обещан
как авторский, будет
посвящен моей излюбленной
теме - формальному
синтаксису SQL. Начнем с
операторов CREATE, по
алфавиту. Синтаксис
представлен в виде
расширенных формул
Бэкуса-Наура для версии
сервера 9.0.1.
Такие выпуски,
посвященные формальному
синтаксису, будут выходить
регулярно, скажем, раз в
месяц.
Оператор CREATE CLUSTER
Создание кластера
- объекта схемы, содержащего
данные одной или нескольких
таблиц, имеющих один или
несколько общих столбцов.
-
<оператор CREATE CLUSTER>
::=
- CREATE CLUSTER
[<схема>.]<имя
кластера>
(<столбец>
<тип> {,
<столбец> <тип>})
{<атрибут кластера>}
[<параллелизм>]
[<зависимости строк>];
[<кэширование>];
-
<атрибут кластера>
::=
- {<физический
атрибут>}
| SIZE <целое
число> [<единица
измерения>]
| TABLESPACE <имя
табличного пространства>
| <индексный или
хэш-кластер>
-
<физический атрибут>
::=
- PCTFREE
<целое число>
| PCTUSED <целое
число>
| INITRANS <целое
число>
| MAXTRANS <целое
число>
| <конструкция хранения>
-
<единица измерения>
::=
- K | M
-
<индексный или
хэш-кластер> ::=
- INDEX
| [SINGLE TABLE]
HASHKEYS <целое
число> [HASH IS
<выражение>]
-
<параллелизм> ::=
- NOPARALLEL |
PARALLEL [<целое
число>]
-
<зависимости строк>
::=
- NOROWDEPENDENCIES
| ROWDEPENDENCIES
-
<кэширование> ::=
- CACHE |
NOCACHE
Конструкции хранения
будет посвящен отдельный
выпуск рассылки.
- Простой индексный
кластер:
-
CREATE CLUSTER personnel (dept NUMBER(4));
- Хэш-кластер с
нестандартной
хэш-функцией:
-
CREATE CLUSTER address
(postal_code NUMBER, country_id CHAR(2))
HASHKEYS 20
HASH IS MOD(postal_code + country_id, 101);
- Однотабличный
хэш-кластер:
-
CREATE CLUSTER cust_orders (customer_id NUMBER(6))
SIZE 512 SINGLE TABLE HASHKEYS 100;
Оператор CREATE CONTEXT
Создание пространства
имен для контекста
(набора прикладных
атрибутов) и его связь с
пакетом, задающим контекст.
-
<оператор CREATE
CONTEXT> ::=
- CREATE [OR
REPLACE] CONTEXT
<пространство имен>
USING [<схема>.]
<имя пакета>
[<особенности доступа
и инициализации>];
-
<особенности доступа и
инициализации> ::=
- ACCESSED GLOBALLY
| INITIALIZED
EXTERNALLY
| INITIALIZED
GLOBALLY
- Создание контекста
(пространства имен) для
пакета emp_mgmt:
-
CREATE CONTEXT hr_context USING emp_mgmt;
Оператор CREATE
CONTROLFILE
Пересоздание
управляющего файла для
базы данных при потере
существующих, переименовании
базы данных или изменении ее
ключевых атрибутов.
-
<оператор CREATE
CONTROLFILE> ::=
- CREATE
CONTROLFILE [REUSE]
[SET] DATABASE
<имя базы данных>
[<журнальные файлы>]
<сброс журналов> [<файлы
данных>]
{<атрибут базы
данных>} [<набор
символов>] ;
-
<журнальные файлы>
::=
- LOGFILE
<спецификация
журнального файла> {,
<спецификация
журнального файла>}
-
<спецификация
журнального файла>
::=
- [GROUP <целое
число>] <спецификация
файла журнала redo>
-
<сброс журналов> ::=
- RESETLOGS |
NORESETLOGS
-
<файлы данных> ::=
- DATAFILE
<спецификация файла
данных> {,
<спецификация файла
данных>}
-
<атрибут базы данных>
::=
- MAXLOGFILES
<целое число>
| MAXLOGMEMBERS
<целое число>
| MAXLOGHISTORY
<целое число>
| MAXDATAFILES
<целое число>
| MAXINSTANCES
<целое число>
| ARCHIVELOG
| NOARCHIVELOG
-
<спецификация набора
символов> ::=
- CHARACTER SET
<набор символов>
-
<спецификация файла
журнала redo> ::=
- [<файл или группа
файлов>] [SIZE
<целое число> [<единица
измерения>]] [REUSE]
-
<файл или группа файлов>
::=
- '<имя файла>'
| ('<имя файла>'{,
'<имя файла>'})
-
<спецификация файла
данных> ::=
- ['<имя файла>'] [SIZE
<целое число> [<единица
измерения>]] [REUSE]
- Пересоздание
управляющего файла:
-
CREATE CONTROLFILE REUSE DATABASE "demo" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXDATAFILES 32
MAXINSTANCES 1
MAXLOGHISTORY 449
LOGFILE
GROUP 1 '/home/oracle/dbs/t_log1.f' SIZE 500K,
GROUP 2 '/home/oracle/dbs/t_log2.f' SIZE 500K
DATAFILE
'/home/oracle/dbs/t_db1.f',
'/home/oracle/dbs/dbu19i.dbf',
'/home/oracle/dbs/tbs_11.f',
'/home/oracle/dbs/smundo.dbf',
'/home/oracle/dbs/demo.dbf'
CHARACTER SET CL8MSWIN1251;
Оператор CREATE DATABASE
Создание базы данных с
предоставлением ее для
общего использования.
-
<оператор CREATE
DATABASE> ::=
- CREATE DATABASE
[<имя БД>]
<характеристика БД>
{<характеристика БД>};
-
<характеристика БД>
::=
- CONTROLFILE REUSE
|
<журнальные файлы>
|
<атрибут базы данных>
|
<спецификация набора
символов>
| NATIONAL CHARACTER
SET <набор символов>
| <спецификация файлов
данных>
| <стандартное временное
табличное пространство>
| <табличное
пространство UNDO>
| <резервная база
данных>
| <установка часового
пояса>
-
<спецификация файлов
данных> ::=
- DATAFILE
<спецификация файла
данных>
[<авторасширение>]
{,
<спецификация файла
данных>
[<авторасширение>]}
-
<авторасширение> ::=
- AUTOEXTEND OFF
| AUTOEXTEND ON [NEXT
<целое число> [<единица
измерения>]]
[MAXSIZE
<ограничение размера
файла>]
-
<ограничение размера
файла> ::=
- UNLIMITED |
<целое число> [<единица
измерения>]
-
<стандартное временное
табличное пространство>
::=
- DEFAULT TEMPORARY
TABLESPACE <имя
табличного пространства>
[TEMPFILE
<спецификация файла>]
<экстенты временного
пространства>
-
<экстенты временного
пространства> ::=
- [EXTENT
MANAGEMENT LOCAL] [UNIFORM
[SIZE <целое
число> [<единица
измерения>]]]
-
<табличное пространство
UNDO> ::=
- UNDO TABLESPACE
<имя табличного
пространства>
[<спецификация файлов
данных>]
-
<установка часового
пояса> ::=
- SET TIME_ZONE
= '<часовой пояс>'
-
<часовой пояс> ::=
- <знак> <часов> :
<минут> | <название
часового пояса>
-
<знак> ::=
- + | -
- Создание базы данных
с явным заданием
большинства
характеристик:
-
CREATE DATABASE sample
CONTROLFILE REUSE
LOGFILE
GROUP 1 ('/d3/log1.log', '/d4/log1.log') SIZE 50K,
GROUP 2 ('/d3/log2.log', '/d4/log2.log') SIZE 50K
MAXLOGFILES 5
MAXLOGHISTORY 100
MAXDATAFILES 10
MAXINSTANCES 2
ARCHIVELOG
CHARACTER SET UTF8
NATIONAL CHARACTER SET AL16UTF16
DATAFILE
'/d1/df1.dbf' AUTOEXTEND ON,
'/d2/df2.dbf' AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE temp_ts
UNDO TABLESPACE undo_ts
SET TIME_ZONE = '+02:00';
- Создание типичной
базы данных в ОС Windows
NT:
-
CREATE DATABASE training
LOGFILE 'g:\oracle\oradata\training\redo01.log' SIZE 1024K,
'g:\oracle\oradata\training\redo02.log' SIZE 1024K,
'g:\oracle\oradata\training\redo03.log' SIZE 1024K
MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXLOGHISTORY 1
DATAFILE 'g:\oracle\oradata\training\system01.dbf' SIZE 58M REUSE AUTOEXTEND ON NEXT 640K
MAXDATAFILES 254
MAXINSTANCES 1
CHARACTER SET CL8MSWIN1251
NATIONAL CHARACTER SET CL8MSWIN1251;
В следующем выпуске
О хитрых соединениях,
запросах с конструкциями
IN и EXISTS...
Вобщем, много полезных
сведений с подачи Тома
Кайта. Мне уже нравится -
осталось сделать. Выпуск
выйдет в конце следующей
недели.
С наилучшими пожеланиями,