|
Приложение 1 Создание базы данных с добавлением AI-экстентов
<- Список приложений
В этом практическом занятии рассмотрены два примера создания AI-экстентов. Первый, когда AI-экстенты добавляются в момент создания базы данных. Второй, когда AI-экстенты добавляются в уже существующую базу. 1.1 Создание новой базы данных с AI-экстентами
Перед созданием новой базы данных необходимо подготовить структурный файл, который будет содержать AI-экстенты.
Для этого:
-
Перейдите в каталог, в котором хотите поместить будущую базу данных.
Создайте в этом каталоге структурный файл с именем db-name.st, где db-name - это имя базы данных. Опишите в созданном файле все необходимые области хранения данных (если имеется готовый ST-файл, то перейдите к следующему шагу).
Добавьте строки с описанием AI-экстентов как здесь показано: a . f 2048
#
a . f 2048
#
a . f 2048
Вместо точки можно указать конкретное местоположение AI-экстентов. В данном случае создаются AI-экстенты фиксированного размера (размер 2048 взят исключительно для демонстрационных целей). Если необходимо создать экстенты переменного размера, то нужно убрать параметры <f 2048>.
-
Приступите к созданию базы. Для нашего примера воспользуйтесь базой $DLC/sports2000, скопированной в свой каталог: $ procopy $DLC/sports2000 ./sports
На экран будут выведены следующие сообщения: Procopy session begin for valeriy on /dev/pts/40. (451)
Formatting extents:
size area name path name
8 Primary Recovery Area /lecAI/db1/sports.b1 00:00:00
16 Schema Area /lecAI/db1/sports.d1 00:00:00
80 Employee /lecAI/db1/sports_7.d1 00:00:00
16 Employee /lecAI/db1/sports_7.d2 00:00:00
160 Inventory /lecAI/db1/sports_8.d1 00:00:00
16 Inventory /lecAI/db1/sports_8.d2 00:00:00
80 Cust_Data /lecAI/db1/sports_9.d1 00:00:00
16 Cust_Data /lecAI/db1/sports_9.d2 00:00:00
80 Cust_Index /lecAI/db1/sports_10.d1 00:00:00
16 Cust_Index /lecAI/db1/sports_10.d2 00:00:00
320 Order /lecAI/db1/sports_11.d1 00:00:00
16 Order /lecAI/db1/sports_11.d2 00:00:00
80 Misc /lecAI/db1/sports_12.d1 00:00:00
16 Misc /lecAI/db1/sports_12.d2 00:00:00
512 After Image Area 1 /lecAI/db1/sports.a1 00:00:00
512 After Image Area 2 /lecAI/db1/sports.a2 00:00:00
512 After Image Area 3 /lecAI/db1/sports.a3 00:00:00
Copying /users/valeriy/101C/sports2000 to ./sports... (6715)
Start writing data blocks. (6718)
14:39:27 10 Percent complete.
14:39:27 20 Percent complete.
14:39:27 30 Percent complete.
14:39:27 40 Percent complete.
14:39:27 50 Percent complete.
14:39:27 60 Percent complete.
14:39:27 70 Percent complete.
14:39:27 80 Percent complete.
14:39:27 90 Percent complete.
14:39:27 100 Percent complete.
1347 blocks copied. (6720) ...Copy complete. (6722) Database copied from /users/valeriy/101C/sports2000. (1365)
Procopy session end. (334)
-
После создания базы данных выполните обновление структурного файла командой PROSTRCT LIST: $ prostrct list sports Area Name: Control Area, Type 6, Block Size 4096, Extents 1,
Records/Block 32, Cluster Size 1
Ext # 1, Type VARIABLE, Size 32 KByte, Name: /lecAI/db1/sports.db
Area Name: Primary Recovery Area, Type 3, Block Size 8192, Extents 1
Ext # 1, Type VARIABLE, Size 2176 KByte, Name: /lecAI/db1/sports.b1
Area Name: Schema Area, Type 6, Block Size 4096, Extents 1,
Records/Block 32, Cluster Size 1
Ext # 1, Type VARIABLE, Size 1216 KByte, Name: /lecAI/db1/sports.d1
Area Name: Employee, Type 6, Block Size 4096, Extents 2,
Records/Block 32, Cluster Size 1
Ext # 1, Type FIXED , Size 320 KByte, Name: /lecAI/db1/sports_7.d1
Ext # 2, Type VARIABLE, Size 64 KByte, Name: /lecAI/db1/sports_7.d2
Area Name: Inventory, Type 6, Block Size 4096, Extents 2,
Records/Block 32, Cluster Size 1
Ext # 1, Type FIXED , Size 640 KByte, Name: /lecAI/db1/sports_8.d1
Ext # 2, Type VARIABLE, Size 640 KByte, Name: /lecAI/db1/sports_8.d2
Area Name: Cust_Data, Type 6, Block Size 4096, Extents 2,
Records/Block 32, Cluster Size 1
Ext # 1, Type FIXED , Size 320 KByte, Name: /lecAI/db1/sports_9.d1
Ext # 2, Type VARIABLE, Size 64 KByte, Name: /lecAI/db1/sports_9.d2
Area Name: Cust_Index, Type 6, Block Size 4096, Extents 2,
Records/Block 32, Cluster Size 1
Ext # 1, Type FIXED , Size 320 KByte, Name: /lecAI/db1/sports_10.d1
Ext # 2, Type VARIABLE, Size 64 KByte, Name: /lecAI/db1/sports_10.d2
Area Name: Order, Type 6, Block Size 4096, Extents 2,
Records/Block 32, Cluster Size 1
Ext # 1, Type FIXED , Size 1280 KByte, Name: /lecAI/db1/sports_11.d1
Ext # 2, Type VARIABLE, Size 1344 KByte, Name: /lecAI/db1/sports_11.d2
Area Name: Misc, Type 6, Block Size 4096, Extents 2,
Records/Block 32, Cluster Size 1
Ext # 1, Type FIXED , Size 320 KByte, Name: /lecAI/db1/sports_12.d1
Ext # 2, Type VARIABLE, Size 64 KByte, Name: /lecAI/db1/sports_12.d2
Area Name: After Image Area 1, Type 7, Block Size 8192, Extents 1
Ext # 1, Type FIXED , Size 2048 KByte , Name: /lecAI/db1/sports.a1
Area Name: After Image Area 2, Type 7, Block Size 8192, Extents 1
Ext # 1, Type FIXED , Size 2048 KByte, Name: /lecAI/db1/sports.a2
Area Name: After Image Area 3, Type 7, Block Size 8192, Extents 1
Ext # 1, Type FIXED , Size 2048 KByte, Name: /lecAI/db1/sports.a3
Обратите внимание на размер последних AI-экстентов, который равен двум мегабайтам (Size 2048 KByte), т.е. именно такой, каким мы его указали в ST-файле. Если бы мы использовали экстенты переменного размера, то мы бы увидели следующую картину: Area Name: After Image Area 1, Type 7, Block Size 8192, Extents 1
Ext # 1, Type VARIABLE, Size 128 KByte, Name: /lecAI/db1/sports.a1
Area Name: After Image Area 2, Type 7, Block Size 8192, Extents 1
Ext # 1, Type VARIABLE, Size 128 KByte, Name: /lecAI/db1/sports.a2
Area Name: After Image Area 3, Type 7, Block Size 8192, Extents 1
Ext # 1, Type VARIABLE, Size 128 KByte, Name: /lecAI/db1/sports.a3
Размер 128 килобайт (Size 128 Kbyte) - это стандартное начальное значение для экстентов переменного размера.
Удалите базу данных sports с помощью следующей команды: $ prodel ./sports
1.2 Добавление AI-экстентов к существующей базе данных
Для добавления AI-экстентов к существующей базе данных необходимо:
-
Очистите каталог от всего «мусора», оставшегося от предыдущего примера, включая ST-файл, командой: $ rm -f ./*.*
-
Скопируйте в этот каталог базу $DLC/sports2000: $ procopy $DLC/sports2000 ./sports
Теперь у нас есть новая база данных, готовая для эксперимента. Представим себе, что это промышленная база и нам нужно добавить в нее AI-экстенты. У нас есть два пути: сделать это в offline или в online. Рассмотрим оба варианта.
Для обоих вариантов создайте структурный файл, с именем add.st, и опишите в нем строки с информацией об AI-экстентах: a . f 2048
#
a . f 2048
#
a . f 2048
Если добавление экстентов будет выполняться в offline, то выполните следующие команды:
- проверьте правильность формата файла add.st:
prostrct add ./sports ./add.st -validate
- если формат верный, то выполните:
prostrct add ./sports ./add.st
- обновите структурный файл:
prostrct list sports
Внимание! Всегда после изменения структуры базы данных выполняйте обновление структурного файла db-name.st с помощью команды PROSTRCT LIST.
Если добавление AI-экстентов нужно выполнить в online, то запустите базу данных sports, предположим, что она работает уже давно:: proserve ./sports
Воспользовавшись тем же структурным файлом add.st добавьте AI-экстенты в online следующими командами:
- проверьте правильность формата файла add.st
prostrct addonline ./sports ./add.st -validate
- если формат верный, то выполните
prostrct addonline ./sports ./add.st
- обновите структурный файл
prostrct list sports
Теперь у вас есть база данных с шестью AI-экстентами фиксированного размера по два мегабайта каждый.
|