(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Создание "сырых" устройств в ОС Windows для размещения файлов БД Oracle

Источник: oracle
К.ф.-м.н. Ю.Пудовченко, "Открытые Технологии"

Количество баз данных под ОС Windows не поддается счету, и, вероятно, эта платформа является наиболее популярной. Таким образом, интересно разобраться каким образом под этой ОС создаются файлы БД на неформатированных разделах. Иногда это бывает необходимо, по соображениям производительности или, например, в тех случаях, когда планируется эксплуатировать RAC. Отсутствие файловой системы положительно сказывается на скорости операций ввода/вывода.

Для экспериментов я взял свой обычный ПК в котором:

  • установлена ОС Microsoft Windows (У меня установлен 2000 Professional, но это не принципиально),
  • установлен Oracle (У меня установлена версия 10.2.0.1 но любые другие тоже подходят),
  • создана БД на имеющейся файловой системе, размер блока равен 8К (другие размеры блоков тоже допустимы).

В системе имеется второй диск, на котором имеется свободное нераспределенное дисковое пространство, в данном случае это 29,79Гб.

Вот как это выглядит с точки зрения ОС :("Пуск"/"Настройки"/"Панель управления"/"Администрирование"/"Управление компьютером"):

Для того, чтобы все это работало должна быть запущена служба "Диспетчер логических дисков".

Создаем раздел на нераспределенном пространстве

В качестве демонстрационного примера создадим в нераспределенном дисковом пространстве "сырой" раздел.

В окне "Управление компьютером/Управление дисками" нажимаем правой кнопкой на нераспределенный диск и выбираем "Создать раздел…". Далее Windows предлагает выбор между "Основной раздел" или "Дополнительный раздел", для нас разница не принципиальна, я выбираю "Дополнительный раздел", указываю ему размер 1024М и нажимаю кнопку "Готово".

В результате, картинка выглядит так (зеленым цветом подсвечен новый "сырой" раздел размером 1024Мб, который будет использован под файл базы данных):

Чтобы этот раздел можно было использовать из СУБД необходимо сделать его видимым, т.е.:

  • создать в этом разделе логический диск (присвоить этому разделу некоторую букву); либо
  • подмонтировать этот раздел к некоторому заранее созданному каталогу.

Рассмотрим обе возможности. Начнем с создания логического диска.

  • Нажимаем правой кнопкой на неразмеченный диск и выбираем "Создать логический диск…".
  • Нажимаем кнопку "Далее",
  • затем еще раз "Далее",
  • затем указываем размер логического диска 1028М и выбираем для нового логического диска свободную букву. Поскольку я создаю раздел типа raw, то и буква ему будет R:.
  • Поскольку мы создаем файл БД на неформатированном разделе, то выбираем "Не форматировать данный раздел".

В результате должна получиться приблизительно такая картина:

Создаем файл БД на неформатированном логическом диске

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.

Возвращаемся к состоянию:

Нажимаем правой кнопкой на неразмеченный диск и выбираем

  • "Создать логический диск…", нажимаем кнопку "Далее",
  • затем еще раз "Далее",
  • затем указываем размер логического диска 1028М и
  • поскольку мы создаем файл данных на неформатированном разделе, то выбираем "Не форматировать данный раздел":

Итак, операционная система в моем ПК была установлена на диске С: (физический Диск1), а неформатированный раздел находится на другом физическом диске (физический Диск0).

Смотрим на получившийся каталог из командной строки:

C:> dir c:\raw*

Том в устройстве C не имеет метки. Серийный номер тома: 4C01-FD5F Содержимое папки c: 26.07.2007 18:02 0 raw.txt 26.07.2007 17:59 <JUNCTION> rawdevice 1 файлов 0 байт 1 папок 17 680 314 368 байт свободно

Создаем файл БД:

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.

Результаты

Сравнивая два описанных выше способа (присвоение буквы и монтирование к каталогу), хочется отметить, что второй способ имеет, на мой взгляд, некоторые преимущества:

  1. Дело в том, что в английском алфавите всего 26 букв, поэтому создать более 26 логических дисков в одной системе не получится. Да и то, многие из этих 26 букв обычно заняты либо недоступны: A:, B:,C:,D: . Поэтому второй способ, в котором используются заранее созданные каталоги позволит избежать такого ограничения.
  2. Второй недостаток связан с малой информативностью отдельных букв. Например, сложно быстро понять какой из файлов БД скрывается за буквой Z:. Тогда как названия каталогов можно сделать достаточно информативными: C:\UNDO или C:\INDEX.

Таким образом, второй способ, на мой взгляд, является более практичным и удобным.

Литература:

  1. Metalink, Note 236155.1, "Step-By-Step Install of RAC with RAW Datafiles on Windows 2000"
  2. Ю.Пудовченко http://www.oracle.com/global/ru/oramag/march2007/russia_raw_dev.html

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 08.07.2009 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Oracle Database Standard Edition 2 Named User Plus License
Oracle Database Standard Edition 2 Processor License
Oracle Database Personal Edition Named User Plus License
Oracle Database Personal Edition Named User Plus Software Update License & Support
Stimulsoft Reports.Ultimate Single License Includes one year subscription
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Новости мира 3D-ускорителей
3D и виртуальная реальность. Все о Macromedia Flash MX.
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100