Oracle DBA Forum  

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

Ответ
 
Опции темы Опции просмотра
  #1  
Старый 05.03.2010, 11:45
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Управляющие файлы (CONTROL_FILES)

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

Управляющие файлы отслеживают все файлы, которые нужны Oracle, и их местонахождение на хост-машине. Управляющие файлы также содержат информацию об именах элементов журнала базы данных и их местонахождении в файлах система. Без управляющих файлов сервер базы данных Oracle не смог бы найти свои физические компоненты. Имена управляющих файлов задаются в файле init.ora для каждого экземпляра Oracle.


=======================================


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

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

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


================================================== ====

Основное представление, доступное в словаре данных Oracle для использования управляющего файла и управления, - это представление V$CONTROLFILE. В этом представлении тольк два столбца: STATUS и NAME.

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

Код:
select * from V$CONTROLFILE





Код:
select name, value from v$spparameter where name = 'control_files';


-----------------------------------------------------------------


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

CONTROLFILE_TYPE - тип раздела в файле управления.
CONTROLFILE_CREATED указывает, когда был создан текущий файл управления.
CONTROLFILE_SEQUENCE# - текущий порядковый номер для базы данных, зарегистрированной в файле управления.
CONTROLFILE_CHANGE# - текущий системно изменяемый номер для базы данных, зарегистрированной в файле управления.
CONTROLFILE_TIME указывает, когда файл управления изменялся в последний раз.

---------------------

V$CONTROLFILE_RECORD_SECTION показывает информацию, хранимую в различных разделах управляющего файла.

Рабочий управляющий файл поделен на несколько разделов, в каждом из которых хранится разная информация о работающей базе данных. Например, в управляющем файле есть раздел, в котором хранится след порядкового номера текущего оперативного файла журнала базы данных, раздел, содержащий информацию о размещении на физическом диске файла базы данных Oracle и т.д. Данное представление отображает информацию о каждом из этих разделов, например размер каждой записи в управляющем файле для этого раздела, общее число записей, назначаемых каждому разделу и т.д.
__________________
Чат форума (требуется аккаунт на github или twitter)

Последний раз редактировалось Marley; 21.09.2015 в 07:55.
Ответить с цитированием
  #2  
Старый 05.03.2010, 11:46
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Использование управляющих файлов

Использование управляющих файлов

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

При создании новых физических дисковых ресурсов (например, табличных пространства)
При изменении определенным образом существующего дискового ресурса (например, при добавлении файла данных к табличному пространству)
Когда LGWR прекращает записывать в одни оперативный журнал базы данных и начинает другой ( переключение журналов)
__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #3  
Старый 05.03.2010, 11:46
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Параметр CONTROL_FILES

Параметр CONTROL_FILES

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

По умолчанию в окружении Windows и UNIX Database Configuration Assistant (DBCA) создаст три файла управления и поместит их в каталог /oradata/database_name под домашним каталогом ПО Oracle. DBCA назовет их controlnn.dbf, где nn число от 01 до 03. При определении своих собственных управляющих файлов, можно соблюдать любые соглашения об именовании, которые вам нравятся.
__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #4  
Старый 05.03.2010, 11:48
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Исследование содержимого управляющего файла

Исследование содержимого управляющего файла

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

Содержание управляющего файла:

Информация об имени базы данных и идентификаторе, указанная вами при создании базы данных.
Информация о дате и времени создания базы данных, указанная вами при создании базы данных.
Местонахождение файлов данных и журнала базы данных в файловой системе, указанное вами при создании базы данных и при добавлении файлов данных или журнала базы данных.
Имена табличных пространств и связи между табличными пространствами и файлами данных, указанные вами при создании табличных пространств или позднее, при добавлении дополнительных файлов данных к существующему табличному пространству.
Информация о том, когда были приняты архивные журналы. Как правило, эта информация генерируется Oracle автоматически.
Информация о том, когда были приняты резервные копии. Это информация генерируется при создании резервных копий.
Порядковый номер текущего оперативного фала журнала базы данных. Как правило, эта информация генерируется Oracle автоматически.
Информация о текущей контрольной точке. И эта информация, как правило, генерируется Oracle автоматически.
__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #5  
Старый 05.03.2010, 11:50
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Восстановление управляющего файла

Восстановление управляющего файла

Иногда требуется восстановление управляющих файлов для различных целей. Например, если нужно переименовать базу данных, потому что вы создаете ее копию на той же машине, которая является хостом первоначальной базы данных. Или если потребуется изменить настройки базы данных, например maxlogfiles, которые задаются при создании базы данных. Возможно, вы даже утратили управляющий файл. Какова бы ни была причина, метод восстановления один и тот же .Введите команду alter database backup controlfile to trace. Ключевое слово trace в этой команде указывает, что Oracle сгенерирует сценарий, содержащий команду create controlfile, и сохранит ее в каталоге trace, указанном в параметре USER_DUMP_DEST в файле init.ora.

Пример сценария создания управляющего файла, сгенерированного этой командой, приводится в следующем блоке кода:

Код:
#  Следующие команды создадут новый управляющий файл и используют его для открытия базы данных.
#  Данные, используемые Recovery Manager, будут утеряны. Могут потребоваться дополнительные журналы для восстановления носителей автономны файлов данных. Используются только, если доступна текущая версия всех оперативных журналов.
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE ORGDB01 NORESETLOGS
NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 2
MAXDATAFILES 240
MAXINSTANCES 1
MAXLOGHISTORY 113
LOGFILE
GROUP 1 (/ORACLE/disk_01/logla.dbf , /ORACLE/disk_02/loglb.dbf) SIZE 30M,
GROUP 2 (/ORACLE/disk_03/log2a.dbf , /ORACLE/disk_04/log2b.dbf) SIZE 30M
DATAFILE
/oracle/disk_05/system01.dbf,
/oracle/disk_05/system02.dbf
;

# Требуется восстановление, если какие-либо файлы данных являются восстановленными  резервными копиями, или если последнее выключение не было normal или immediate.
RECOVER DATABASE
# Теперь возможно нормальное открытие базы данных.
ALTER DATABASE OPEN;
__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #6  
Старый 05.03.2010, 11:51
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Мультиплексирование управляющих файлов

Мультиплексирование управляющих файлов

Следует сохранять копии управляющих файлов на разных дисках для минимизации риска утраты этих важных физических дисковых ресурсов. Oracle рекомендует перенести эти управляющие файлы на разные дисковые ресурсы и задать параметр CONTROL_FILES, чтобы Oracle знала, что существует несколько копий управляющего файла, которые требуется сопровождать. Это называется мультиплексированием (multiplexing) или зеркальным отображением (mirroring) управляющего файла. Мультиплексирование управляющего файла снижает зависимость Oracle от доступности какого-либо из дисков на хост-машине. В случае сбоя базу данных легче восстановить, так как поддерживалось несколько копий управляющего файла. Ни в коем случае не следует использовать для базы данных Oracle только один управляющий файл, поскольку в случае его утраты трудно восстановить базу данных.

Мультиплексирование управляющих файлов


Код:
alter system

set control_files = '/u01/oracle/wnse2/ctriwhsel.ctl', 
                         '/u01/oracle/wnse2/ctrlwhse2.ctl',
                         '/u03/oracle/whse2/ctrlwhse3.ctl',
scope = spfile;
-- команда вносит изменения в spfile, для применения обновлений, требуется перезапуск БД

- Остановите базу данных.
- Скопируйти управляющие файлы.
- Перезапустите базу данных


================================================== ===========

Windows

*.bat

Код:
spool on;
shutdown immediate;
startup nomount;
alter system set control_files = 'C:\ORACLEXE\ORADATA\XE\CONTROL.dbf', 'd:\backup\cf\control.dbf' scope=spfile;
host "xcopy C:\ORACLEXE\ORADATA\XE\CONTROL.dbf d:\backup\cf\";
startup;
select name from v$controlfile;
exit
Вместо C:\ORACLEXE\ORADATA\XE\CONTROL.dbf необходимо указать текущий control file
Вместо d:\backup\cf\control.dbf указать где будет храниться резервный control file.


----------------------------------

Linux/Unix

Код:
SQL> ALTER SYSTEM SET contol_files = $HOME/ORADATA/u01/ctrl01.ctl, $HOME/ORADATA/u02/ctrl02.ctl SCOPE=SPFILE;
SQL> shutdown
$ cp $HOME/ORADATA/u01/ctrl01.ctl $HOME/ORADATA/u02/ctrl02.ctl
SQL> startup
__________________
Чат форума (требуется аккаунт на github или twitter)

Последний раз редактировалось Marley; 05.03.2010 в 14:46.
Ответить с цитированием
  #7  
Старый 05.03.2010, 11:52
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Резервное копирование управляющего файла

Резервное копирование управляющего файла

Мы уже рассмотрели резервное копирование управляющего файла с помощью команды alter database backup controlfile to trace. Как вам известно, эта команда создает сценарий, который можно использовать для восстановления управляющего файла, если впоследствии возникнут проблемы. Можно также использовать команду alter database backup controlfie, которая скопирует фактический управляющий файл в некое дополнительное местоположение. Однако после резервного копирования Oracle не будет поддерживать этот управляющий файл при добавлении нового файла данных, табличного пространства или журналов базы данных. Таким образом, нельзя просто создать резервную копию управляющего файла управления, если вы хотите, чтобы Oracle добавляла в эту копию управляющего файла управления, если вы хотите, чтобы Oracle добавляла в эту копию новую информацию о физической структуре базы данных. В следующем блоке кода показано, как использовать команду alter database backup controlfile для создания резервных копий фактических управляющих файлов управления:


Код:
SQL> alter database backup controlfile to /u05/backup/db1/control01.ctl;
__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #8  
Старый 12.03.2010, 14:06
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Восстановление управляющего файла из трассировочного файла

1)

Код:
sqlplus / as sysdba
SQL> alter database backup controlfile to trace as 'c:\controlFile.txt';
c:\controlFile.txt

Цитата:
-- The following are current System-scope REDO Log Archival related
-- parameters and can be included in the database initialization file.
--
-- LOG_ARCHIVE_DEST=''
-- LOG_ARCHIVE_DUPLEX_DEST=''
--
-- LOG_ARCHIVE_FORMAT=ARC%S_%R.%T
--
-- DB_UNIQUE_NAME="test"
--
-- LOG_ARCHIVE_CONFIG='SEND, RECEIVE, NODG_CONFIG'
-- LOG_ARCHIVE_MAX_PROCESSES=2
-- STANDBY_FILE_MANAGEMENT=MANUAL
-- STANDBY_ARCHIVE_DEST=%ORACLE_HOME%\RDBMS
-- FAL_CLIENT=''
-- FAL_SERVER=''
--
-- LOG_ARCHIVE_DEST_10='LOCATION=USE_DB_RECOVERY_FILE _DEST'
-- LOG_ARCHIVE_DEST_10='OPTIONAL REOPEN=300 NODELAY'
-- LOG_ARCHIVE_DEST_10='ARCH NOAFFIRM NOEXPEDITE NOVERIFY SYNC'
-- LOG_ARCHIVE_DEST_10='REGISTER NOALTERNATE NODEPENDENCY'
-- LOG_ARCHIVE_DEST_10='NOMAX_FAILURE NOQUOTA_SIZE NOQUOTA_USED NODB_UNIQUE_NAME'
-- LOG_ARCHIVE_DEST_10='VALID_FOR=(PRIMARY_ROLE,ONLIN E_LOGFILES)'
-- LOG_ARCHIVE_DEST_STATE_10=ENABLE

--
-- Below are two sets of SQL statements, each of which creates a new
-- control file and uses it to open the database. The first set opens
-- the database with the NORESETLOGS option and should be used only if
-- the current versions of all online logs are available. The second
-- set opens the database with the RESETLOGS option and should be used
-- if online logs are unavailable.
-- The appropriate set of statements can be copied from the trace into
-- a script file, edited as necessary, and executed when there is a
-- need to re-create the control file.
--
-- Set #1. NORESETLOGS case
--
-- The following commands will create a new control file and use it
-- to open the database.
-- Data used by Recovery Manager will be lost.
-- Additional logs may be required for media recovery of offline
-- Use this only if the current versions of all online logs are
-- available.

-- After mounting the created controlfile, the following SQL
-- statement will place the database in the appropriate
-- protection mode:
-- ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO01.LOG' SIZE 50M,
GROUP 2 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO02.LOG' SIZE 50M,
GROUP 3 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO03.LOG' SIZE 50M
-- STANDBY LOGFILE

DATAFILE
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DB F',
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\UNDOTBS01.D BF',
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSAUX01.DB F',
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\USERS01.DBF ',
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\FLOW_1.DBF'
CHARACTER SET CL8MSWIN1251
;


-- Configure RMAN configuration record 1
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('RETENTION POLICY','TO REDUNDANCY 3');
-- Commands to re-create incarnation table
-- Below log names MUST be changed to existing filenames on
-- disk. Any one log file from each branch can be used to
-- re-create incarnation records.
-- ALTER DATABASE REGISTER LOGFILE 'D:\_BACKUPS\DB_RECOVERY_FILE\TEST\ARCHIVELOG\2010 _03_12\O1_MF_1_1_%U_.ARC';
-- ALTER DATABASE REGISTER LOGFILE 'D:\_BACKUPS\DB_RECOVERY_FILE\TEST\ARCHIVELOG\2010 _03_12\O1_MF_1_1_%U_.ARC';
-- ALTER DATABASE REGISTER LOGFILE 'D:\_BACKUPS\DB_RECOVERY_FILE\TEST\ARCHIVELOG\2010 _03_12\O1_MF_1_1_%U_.ARC';
-- Recovery is required if any of the datafiles are restored backups,
-- or if the last shutdown was not normal or immediate.
RECOVER DATABASE

-- All logs need archiving and a log switch is needed.
ALTER SYSTEM ARCHIVE LOG ALL;

-- Database can now be opened normally.
ALTER DATABASE OPEN;

-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\TEMP01.DBF'
SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
-- End of tempfile additions.
--
-- Set #2. RESETLOGS case
--
-- The following commands will create a new control file and use it
-- to open the database.
-- Data used by Recovery Manager will be lost.
-- The contents of online logs will be lost and all backups will
-- be invalidated. Use this only if online logs are damaged.

-- After mounting the created controlfile, the following SQL
-- statement will place the database in the appropriate
-- protection mode:
-- ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "TEST" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO01.LOG' SIZE 50M,
GROUP 2 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO02.LOG' SIZE 50M,
GROUP 3 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO03.LOG' SIZE 50M
-- STANDBY LOGFILE

DATAFILE
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DB F',
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\UNDOTBS01.D BF',
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSAUX01.DB F',
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\USERS01.DBF ',
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\FLOW_1.DBF'
CHARACTER SET CL8MSWIN1251
;

-- Configure RMAN configuration record 1
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('RETENTION POLICY','TO REDUNDANCY 3');
-- Commands to re-create incarnation table
-- Below log names MUST be changed to existing filenames on
-- disk. Any one log file from each branch can be used to
-- re-create incarnation records.
-- ALTER DATABASE REGISTER LOGFILE 'D:\_BACKUPS\DB_RECOVERY_FILE\TEST\ARCHIVELOG\2010 _03_12\O1_MF_1_1_%U_.ARC';
-- ALTER DATABASE REGISTER LOGFILE 'D:\_BACKUPS\DB_RECOVERY_FILE\TEST\ARCHIVELOG\2010 _03_12\O1_MF_1_1_%U_.ARC';
-- ALTER DATABASE REGISTER LOGFILE 'D:\_BACKUPS\DB_RECOVERY_FILE\TEST\ARCHIVELOG\2010 _03_12\O1_MF_1_1_%U_.ARC';
-- Recovery is required if any of the datafiles are restored backups,
-- or if the last shutdown was not normal or immediate.
RECOVER DATABASE USING BACKUP CONTROLFILE

-- Database can now be opened zeroing the online logs.
ALTER DATABASE OPEN RESETLOGS;

-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\TEMP01.DBF'
SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
-- End of tempfile additions.
--
3) Оставить в файле c:\controlFile.txt то, что выделено черным цветом (либо блок кода из участка RESETLOGS или NORESETLOGS )

4) SQL> shutdown immediate;
SQL> startup;
SQL> @c:\controlFile.txt;
SQL> alter database open;
__________________
Чат форума (требуется аккаунт на github или twitter)

Последний раз редактировалось Marley; 12.12.2011 в 12:54.
Ответить с цитированием
Ответ

Метки
control file, управляющие файлы

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

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

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

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


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


Powered by vBulletin®