Oracle DBA Forum  

Вернуться   Oracle DBA Forum > Работа > Архитектура > Файловая подсистема

Ответ
 
Опции темы Опции просмотра
  #1  
Старый 06.06.2011, 11:48
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Файлы базы данных Oracle

Файлы базы данных Oracle

База данных Oracle является просто набором фалов, которые бывают трех основных типов:
  • файлы данных;
  • файлы журналов повтора;
  • управляющие файлы.
__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #2  
Старый 06.06.2011, 11:50
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию

Файлы данных


Все данные в базе данных Oracle сохраняются в файлах данных. Все таблицы, индексы, триггеры, последовательности, программы на PL/SQL, представления - все это находится в файлах данных. И хотя эти и другие объекты базы данных логически содрежатся в табличных пространствах, в дейстительности они сохраняются в файлах на жестком диске компьютера.

Файлы данных обязательный дисковый компонент. В каждой базе данных Oracle имеется по крайней мере один файл данных (но обычно их бывает больше). Если вы создаете в Oracle таблицу и заполняете ее строками, Oracle помещает эту таблицу и строки в файл данных. Каждый файл данных может быть связан только с одной базой данных.

У каждого файла данных имеется специальный формат, внутренний для программногообеспечения Oracle. Важно отдавать себе отчет в том, что файл данных состоит из заголовка и свовокупности блоков. Заголовок файла данных Oracle содержит несколько структур, в том числе и идентификатор базы данных, номер и имя файла, тип файла, SCN создания и состояния файла.

Данные в файлы вносятся исключительно средствами Oracle.

Получить некоторые данные по файлам данных, можно выполнив команды:



SQL> desc v$datafile;

Код:
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 FILE#                                              NUMBER
 CREATION_CHANGE#                                   NUMBER
 CREATION_TIME                                      DATE
 TS#                                                NUMBER
 RFILE#                                             NUMBER
 STATUS                                             VARCHAR2(7)
 ENABLED                                            VARCHAR2(10)
 CHECKPOINT_CHANGE#                                 NUMBER
 CHECKPOINT_TIME                                    DATE
 UNRECOVERABLE_CHANGE#                              NUMBER
 UNRECOVERABLE_TIME                                 DATE
 LAST_CHANGE#                                       NUMBER
 LAST_TIME                                          DATE
 OFFLINE_CHANGE#                                    NUMBER
 ONLINE_CHANGE#                                     NUMBER
 ONLINE_TIME                                        DATE
 BYTES                                              NUMBER
 BLOCKS                                             NUMBER
 CREATE_BYTES                                       NUMBER
 BLOCK_SIZE                                         NUMBER
 NAME                                               VARCHAR2(513)
 PLUGGED_IN                                         NUMBER
 BLOCK1_OFFSET                                      NUMBER
 AUX_NAME                                           VARCHAR2(513)
 FIRST_NONLOGGED_SCN                                NUMBER
 FIRST_NONLOGGED_TIME                               DATE
 FOREIGN_DBID                                       NUMBER
 FOREIGN_CREATION_CHANGE#                           NUMBER
 FOREIGN_CREATION_TIME                              DATE
 PLUGGED_READONLY                                   VARCHAR2(3)
 PLUGIN_CHANGE#                                     NUMBER
 PLUGIN_RESETLOGS_CHANGE#                           NUMBER
 PLUGIN_RESETLOGS_TIME                              DATE


SQL> select file#, name, status from v$datafile;

Код:
     FILE# NAME                      STATUS
---------- ------------------------- --------
         1 /u02/oradata/ora112/syste SYSTEM
           m01.dbf

         2 /u02/oradata/ora112/sysau ONLINE
           x01.dbf

         3 /u02/oradata/ora112/undot ONLINE
           bs01.dbf

         4 /u02/oradata/ora112/users ONLINE
           01.dbf
__________________
Чат форума (требуется аккаунт на github или twitter)

Последний раз редактировалось Marley; 06.06.2011 в 12:06.
Ответить с цитированием
  #3  
Старый 06.06.2011, 11:50
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию

Оперативные файлы журналов повтора (Online Redo Log Files)

Оперативные файлы журналов повтора - предназначены для записи всех изменений, выполненных над данными базы данных Oracle. Используется для хранения на диске информации для повторного выполнения операций.

Для комплютера выполнить задачи повтоно - означает выполнить ее точно так, как она выполнялась в предыдущий раз. Поэтому назначение оперативного файла журнала повтора заключается в сохранении информации об изменениях в базе данных таким, образом, чтобы позже их можно было повторить.

Каждая база данных должна иметь не менее двух оперативных файлов журналов потора. Текущий файл постепенно заполняется, после его заполнения (или переключения некоторыми командами), база данных приступает к записи в следующий файл. Эта операция называется переключением журналов.

Посколько файлы повтора необходимы для выполнения восстановления базы данных и являются критичными, их объединяют в группы. Запись происходит одновременно в файлы одной группы.

SQL> desc v$log;

Код:
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 GROUP#                                             NUMBER
 THREAD#                                            NUMBER
 SEQUENCE#                                          NUMBER
 BYTES                                              NUMBER
 BLOCKSIZE                                          NUMBER
 MEMBERS                                            NUMBER
 ARCHIVED                                           VARCHAR2(3)
 STATUS                                             VARCHAR2(16)
 FIRST_CHANGE#                                      NUMBER
 FIRST_TIME                                         DATE
 NEXT_CHANGE#                                       NUMBER
 NEXT_TIME                                          DATE
SQL> desc v$logfile;

Код:
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 GROUP#                                             NUMBER
 STATUS                                             VARCHAR2(7)
 TYPE                                               VARCHAR2(7)
 MEMBER                                             VARCHAR2(513)
 IS_RECOVERY_DEST_FILE                              VARCHAR2(3)
// Посмотреть какой журналоьной группе принадлежит файл и его расположение
SQL> select group#, member from v$logfile order by group#;

Код:
    GROUP#
----------
MEMBER
--------------------------------------------------------------------------------
         1
/u02/oradata/ora112/redologs/redo01.log

         1
/u03/oradata/ora112/redologs/redo01.log

         2
/u02/oradata/ora112/redologs/redo02.log

         2
/u03/oradata/ora112/redologs/redo02.log

         3
/u03/oradata/ora112/redologs/redo03.log

         3
/u02/oradata/ora112/redologs/redo03.log


6 rows selected.

// Группа, расположение, статус, размер в мегабайтах.
select a.group#, member, a.status, bytes/1024/1024 as "MB"
from v$log a, v$logfile b
where a.group# = b.group#
order by 1;




Архивные файлы журналов повтора


Как только оперативный файл журнала повтора оказывается заполнен, программное обеспечение сервера Oracle начинает запись в следующий файл. Эта операция повторяется, как следствие информация в оперативных файлах журнала многократно перезаписывается.

Если необходимо сохранить историю изменений, нужно, чтобы после переключения журналов сохранялась их копия. Для этого достаточно перевести работу базы данных в реми работы ARCHIVELOG.

Архивные файлы журналов повтора жизненно важны при воссатновлении. Если часть базы данных потеряна или повреждена, то для устранения повреждений обычно треуется несколько архивных журналов. Файлы журналов повтора должны применяться к базе данных последовательно. Если один из архивных файлов журналов повтора пропущен, то остальные архивные файлы журналов не могут использоваться. Храните все свои архивные файлы журналов потора с момента выполнения последенй резервной копии. Файлы журналов постепенно накапливаются и разрастаются. Иногда необходимо их удалять. Все операции с данными файлами выполняются исключительно средствами базы данных.


SQL> desc v$archived_log;

Код:
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 RECID                                              NUMBER
 STAMP                                              NUMBER
 NAME                                               VARCHAR2(513)
 DEST_ID                                            NUMBER
 THREAD#                                            NUMBER
 SEQUENCE#                                          NUMBER
 RESETLOGS_CHANGE#                                  NUMBER
 RESETLOGS_TIME                                     DATE
 RESETLOGS_ID                                       NUMBER
 FIRST_CHANGE#                                      NUMBER
 FIRST_TIME                                         DATE
 NEXT_CHANGE#                                       NUMBER
 NEXT_TIME                                          DATE
 BLOCKS                                             NUMBER
 BLOCK_SIZE                                         NUMBER
 CREATOR                                            VARCHAR2(7)
 REGISTRAR                                          VARCHAR2(7)
 STANDBY_DEST                                       VARCHAR2(3)
 ARCHIVED                                           VARCHAR2(3)
 APPLIED                                            VARCHAR2(9)
 DELETED                                            VARCHAR2(3)
 STATUS                                             VARCHAR2(1)
 COMPLETION_TIME                                    DATE
 DICTIONARY_BEGIN                                   VARCHAR2(3)
 DICTIONARY_END                                     VARCHAR2(3)
 END_OF_REDO                                        VARCHAR2(3)
 BACKUP_COUNT                                       NUMBER
 ARCHIVAL_THREAD#                                   NUMBER
 ACTIVATION#                                        NUMBER
 IS_RECOVERY_DEST_FILE                              VARCHAR2(3)
 COMPRESSED                                         VARCHAR2(3)
 FAL                                                VARCHAR2(3)
 END_OF_REDO_TYPE                                   VARCHAR2(10)
 BACKED_BY_VSS                                      VARCHAR2(3)

SQL> select name from v$archived_log;

Код:

NAME
-------------------------
/u02/oradata/ora112/fra/O
RA112/archivelog/2011_05_
05/o1_mf_1_70_6w5v77q2_.a
rc

/u02/oradata/ora112/fra/O
RA112/archivelog/2011_05_
05/o1_mf_1_71_6w5xw470_.a
rc

/u02/oradata/ora112/fra/O
RA112/archivelog/2011_06_
01/o1_mf_1_72_6yd9gtmd_.a
rc

/u02/oradata/ora112/fra/O
RA112/archivelog/2011_06_
01/o1_mf_1_73_6yd9odo5_.a
rc

/u02/oradata/ora112/fra/O
RA112/archivelog/2011_06_
03/o1_mf_1_74_6yk0mxom_.a
rc

/u02/oradata/ora112/fra/O
RA112/archivelog/2011_06_
06/o1_mf_1_75_6yrxj4rd_.a
rc

/u02/oradata/ora112/fra/O
RA112/archivelog/2011_06_
06/o1_mf_1_76_6ys5nvh6_.a
rc


7 rows selected.
================================================== ===

Более подробно
__________________
Чат форума (требуется аккаунт на github или twitter)

Последний раз редактировалось Marley; 06.06.2011 в 13:07.
Ответить с цитированием
  #4  
Старый 06.06.2011, 12:08
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию

Управляющие файлы

Поскольку база данных Oracle является физическим набором связанных файлов данных, то для их синхронизации и контроля требуется особые методы. Для этих целей используются управляющие файлы.

База данных Oracle может иметь один или несколько управляющих файлов. Если имеется несколько управляющих файлов, все они должны быть абсолютно идентичными. При каждом запуске базы данных Oracle читает информацию управляющего файла, а при каждом изменении размещения или добавления новых файлов данных и журналов базы данных обновляет управляющий файл.


SQL> desc v$controlfile;

Код:
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 STATUS                                             VARCHAR2(7)
 NAME                                               VARCHAR2(513)
 IS_RECOVERY_DEST_FILE                              VARCHAR2(3)
 BLOCK_SIZE                                         NUMBER
 FILE_SIZE_BLKS                                     NUMBER

SQL> select name from v$controlfile;

Код:
NAME
-------------------------
/u02/oradata/ora112/contr
ol01.ctl

/u03/oradata/ora112/contr
ol01.ctl

Более подробно
__________________
Чат форума (требуется аккаунт на github или twitter)

Последний раз редактировалось Marley; 06.06.2011 в 13:16.
Ответить с цитированием
  #5  
Старый 06.06.2011, 13:23
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию

Файлы параметров (pfile, spfie) обязательный дисковый компонент. Используется для конфигурирования действий Oracle во время эксплуатации. Для того, чтобы запустить экземпляр базы данных, Oracle должен прочесть файл параметров и определить, какие параметры инициализации установлены для этого экземпляра. В файле параметров содержатся многочисленные параметры и их установленные значения. Oracle считывает файл параметров при запуске базы данных. Можно создать несколько файлов параметров, каждый будет соответствовать различным конфигурациям экземпляра, которые могут быть использованы в различные моменты времени.


spfile - бинарный файл, который используется сервером Oracle при старте.
pfile - текстовый файл с параметрами, будет использоваться при старте, если не будет найден spfile.

[[email protected] dbs]$ ls /u01/app/oracle/product/11.2/dbs/*.ora
/u01/app/oracle/product/11.2/dbs/init.ora
/u01/app/oracle/product/11.2/dbs/spfileora112.ora

При старте, Oracle считает файл spfileora112.ora. (файл серверных параметров). Преимущество spfile заключается в том, что при работе с базой данных, любые изменения в базе касающиеся изменения параметра системы, автоматически записываются в данный файл.

Если используется pfile, для сохранения изменений, необходимо либо "руками вносить эти изменения" в файл, либо выполнять команды для создания данных файлов из текущей системы.

// создания pfile из памяти (в 11 версии Oracle)
SQL> Create pfile from memory;

// создать pfile из spfile
SQL> Create pfile from spfile;



Файлы паролей необязательный файл, используется для защиты информации о подключениях привилегированных пользователей. Если отсутствует, то вы можете выполнять администрирование своей базы данных, только локально. Кроме того, с его помощью контролируется количество привилегированных подключений для управления в одно и то же время.

$ ls /u01/app/oracle/product/11.2/dbs/orapw*
/u01/app/oracle/product/11.2/dbs/orapwora112



Alert log и трассировочные файлы

При работе базы данных события и ошибки регистрируются в текстовых файлах на сервере базы данных. Файл журнала предупреждений (alert log) нужен администратору базы данных для отслеживания важнейших фействий с базой данных - наподобие открытия и закрытия базы данных, установления параметров загрузки базы данных и переключения оперативных журналов повтора. Также в эти файлы записываются многие ошибки базы данных для последующего расследования их причин. Любые структурные изменения базы данных также регистрируются в файле журнала предупрежденияй.

// в 11 версии базы данных
$ ls /u01/app/oracle/diag/rdbms/ora112/ora112/alert
log.xml

Когда возникает ошибка базы данных, может генерироваться файл трассировки (trace file). Они содержит подробную информацию о возникновении ошибки.

// в 11 версии базы данных
/u01/app/oracle/diag/rdbms/ora112/ora112/trace
__________________
Чат форума (требуется аккаунт на github или twitter)

Последний раз редактировалось Marley; 06.06.2011 в 14:07.
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 09:31. Часовой пояс GMT +3.


Powered by vBulletin®