Выпуск 17
Синтаксис: создаем кластер, контекст, управляющий файл и базу данных
Уважаемые подписчики! Этот выпуск, раз уж обещан как авторский, будет посвящен
моей излюбленной теме - формальному синтаксису 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...
Вобщем, много полезных сведений с подачи Тома Кайта. Мне уже нравится - осталось
сделать. Выпуск выйдет в конце следующей недели. Следите за новостями на
сайте проекта Open Oracle.
С наилучшими пожеланиями,
В.К.