|
|
|||||||||||||||||||||||||||||
|
Создание "сырых" устройств в ОС Windows для размещения файлов БД OracleИсточник: oracle К.ф.-м.н. Ю.Пудовченко, "Открытые Технологии"
Количество баз данных под ОС Windows не поддается счету, и, вероятно, эта платформа является наиболее популярной. Таким образом, интересно разобраться каким образом под этой ОС создаются файлы БД на неформатированных разделах. Иногда это бывает необходимо, по соображениям производительности или, например, в тех случаях, когда планируется эксплуатировать RAC. Отсутствие файловой системы положительно сказывается на скорости операций ввода/вывода. Для экспериментов я взял свой обычный ПК в котором:
В системе имеется второй диск, на котором имеется свободное нераспределенное дисковое пространство, в данном случае это 29,79Гб. Вот как это выглядит с точки зрения ОС :("Пуск"/"Настройки"/"Панель управления"/"Администрирование"/"Управление компьютером"):
Для того, чтобы все это работало должна быть запущена служба "Диспетчер логических дисков".
Создаем раздел на нераспределенном пространстве В качестве демонстрационного примера создадим в нераспределенном дисковом пространстве "сырой" раздел. В окне "Управление компьютером/Управление дисками" нажимаем правой кнопкой на нераспределенный диск и выбираем "Создать раздел…". Далее Windows предлагает выбор между "Основной раздел" или "Дополнительный раздел", для нас разница не принципиальна, я выбираю "Дополнительный раздел", указываю ему размер 1024М и нажимаю кнопку "Готово". В результате, картинка выглядит так (зеленым цветом подсвечен новый "сырой" раздел размером 1024Мб, который будет использован под файл базы данных):
Чтобы этот раздел можно было использовать из СУБД необходимо сделать его видимым, т.е.:
Рассмотрим обе возможности. Начнем с создания логического диска.
В результате должна получиться приблизительно такая картина:
Создаем файл БД на неформатированном логическом диске SYS @ windb >select file_name from dba_data_files; FILE_NAME -------------------------------------------------------------------------------- C:\ORACLE\ORADATA\WINDB\USERS01.DBF C:\ORACLE\ORADATA\WINDB\SYSAUX01.DBF C:\ORACLE\ORADATA\WINDB\UNDOTBS01.DBF C:\ORACLE\ORADATA\WINDB\SYSTEM01.DBF SYS @ windb >create tablespace yu datafile '\\.\R:' size 100m; Tablespace created. SYS @ windb >alter database datafile '\\.\R:' resize 1024m; Database altered. SYS @ windb >select bytes, file_name from dba_data_files; BYTES FILE_NAME ---------------------------------------- 5242880 C:\ORACLE\ORADATA\WINDB\USERS01.DBF 241172480 C:\ORACLE\ORADATA\WINDB\SYSAUX01.DBF 492830720 C:\ORACLE\ORADATA\WINDB\SYSTEM01.DBF 1073741824 \\.\R: Для проверки работоспособности табличного пространства, созданного на неформатированном логическом диске, создаем таблицу: SYS @ windb >create table yu tablespace yu as select * from dba_objects; Table created. На этом создание файла БД можно считать законченным. Однако, немного смущает цифра 1028Мб - размер логического диска. Проверим, действительно ли можно создать файл данных такого размера? SYS @ windb >alter database datafile '\\.\R:' resize 1025m; Database altered. SYS @ windb >alter database datafile '\\.\R:' resize 1026m; Database altered. SYS @ windb >alter database datafile '\\.\R:' resize 1027m; Database altered. SYS @ windb >alter database datafile '\\.\R:' resize 1028m; alter database datafile '\\.\R:' resize 1028m * ERROR at line 1: ORA-01237: cannot extend datafile 5 ORA-01110: data file 5: '\\.\R:' ORA-27042: not enough space on raw partition to fullfill request OSD-04011: GetFileInformationByHandle() failure, unable to obtain file info SYS @ windb >alter database datafile '\\.\R:' resize 1077469184; Database altered. SYS @ windb >alter database datafile '\\.\R:' resize 1077477376; alter database datafile '\\.\R:' resize 1077477376 * ERROR at line 1: ORA-01237: cannot extend datafile 5 ORA-01110: data file 5: '\\.\R:' ORA-27042: not enough space on raw partition to fullfill request OSD-04011: GetFileInformationByHandle() failure, unable to obtain file info SYS @ windb >select bytes, file_name from dba_data_files; BYTES FILE_NAME ---------------------------------------- 5242880 C:\ORACLE\ORADATA\WINDB\USERS01.DBF 241172480 C:\ORACLE\ORADATA\WINDB\SYSAUX01.DBF 26214400 C:\ORACLE\ORADATA\WINDB\UNDOTBS01.DBF 492830720 C:\ORACLE\ORADATA\WINDB\SYSTEM01.DBF 1077469184 \\.\R: Размер файла получился 1077469184 байт = 131527 блоков.
Создаем файл БД еще раз Рассмотрим второй способ подключения "сырого" раздела путем монтирования его к существующему каталогу. Создадим для этой цели каталог C:\rawdevice. Возвращаемся к состоянию:
Нажимаем правой кнопкой на неразмеченный диск и выбираем
Итак, операционная система в моем ПК была установлена на диске С: (физический Диск1), а неформатированный раздел находится на другом физическом диске (физический Диск0). Смотрим на получившийся каталог из командной строки: C:> dir c:\raw* Создаем файл БД: SYS @ windb >create tablespace yu datafile 'c:\rawdevice' size 100m; Tablespace created. SYS @ windb > SYS @ windb >select file_name from dba_data_files; FILE_NAME -------------------------------------------------------------------------------- C:\ORACLE\ORADATA\WINDB\USERS01.DBF C:\ORACLE\ORADATA\WINDB\SYSAUX01.DBF C:\ORACLE\ORADATA\WINDB\UNDOTBS01.DBF C:\ORACLE\ORADATA\WINDB\SYSTEM01.DBF C:\RAWDEVICE SYS @ windb >alter database datafile ' C:\RAWDEVICE ' resize 1077469184; Database altered. Результаты Сравнивая два описанных выше способа (присвоение буквы и монтирование к каталогу), хочется отметить, что второй способ имеет, на мой взгляд, некоторые преимущества:
Таким образом, второй способ, на мой взгляд, является более практичным и удобным. Литература:
Ссылки по теме
|
|