Резервные базы данных под управлением Oracle Data Guard
После того, как база данных наполнена информацией, у администраторов баз данных (DBA) возникает естественное желание защитить данные от потери, даже если это не предусматривалось изначально при построении информационной системы. Самый простой способ - периодически копировать файлы базы или выгружать данные из таблиц программными средствами. Эти методы относятся к "холодному" и логическому резервированию. Холодным оно называется, так как пользователи при этом не работают с базой данных и службы, через которые они работают, "погашены". Если резервирование нужно выполнять так, чтобы не создавалось препятствий работе пользователей, такой тип резервирования называется горячим. Для логического резервирования обычно используют утилиту экспорта информации, которая поставляется, например, в составе ПО компании Oracle (http://www.oracle.ru). Преимущество холодного и логического резервирования в том, что они интуитивно понятны и просты в реализации. Основной недостаток - те данные, которые были введены после резервирования, нельзя восстановить, они будут потеряны. Однако в архитектуре баз данных Oracle заложена возможность восстановления информации без потерь. Вся информация базы данных хранится в файлах, число которых редко меняется в процессе работы. Несколько пользовательских таблиц могут храниться в одном файле. Данные не хранятся нигде, кроме этих файлов, поэтому они и называются файлами данных (datafiles). Именно эти файлы копируются при выполнении холодного резервирования (cold backup) вместе с небольшим служебным файлом, который называется управляющим (control file). При обновлении данных в таблицах в файлы данных вносятся изменения. Все изменения в любых файлах данных, помимо самих файлов, записываются в журнал изменений. Журнал хранится в отдельных файлах оперативных журналов (redolog files). Информации каждой записи из этого журнала достаточно для повторного внесения тех же самых изменений. Например, в записи указывается место в файле данных, куда вносилось изменение, когда и кем оно вносилось, и сами изменения. Для уменьшения объема сохраняемой информации в журнале хранится минимальный объем информации, по которому еще можно восстановить изменения. Например, вместо имени таблицы, в которую вставили строку, сохраняется уникальный номер объекта (таблицы), присвоенный ему в базе данных.
Просмотрев журнал, можно выяснить всю историю изменений в данных за какой-то промежуток времени. Например, можно взять файлы данных из копии, созданной некоторое время назад при холодном резервировании. Если сохранился журнал изменений на период от момента выполнения резервирования до момента сбоя базы данных, можно последовательно внести изменения во вчерашние файлы запись за записью. Получатся файлы, которые будут содержать все изменения до самого последнего момента перед сбоем. Этот процесс называется восстановлением базы данных. Восстановление без внесения изменений из журнала так, чтобы ни единой транзакции не было потеряно, называется неполным восстановлением. На самом деле восстановление всегда должно быть полным, так как потеря хотя бы части информации недопустима. Компания Oracle исходит из того, что ее технологии должны гарантировать целостность данных, которые уже внесены в базу. Только на крайний случай, если невозможно провести нормальное восстановление, дается возможность спасти хотя бы часть данных. Сохранять файлы и журналы изменений нужно заранее, а не ждать момента сбоя. При возникновении сбоя c момента последнего резервирования может накопиться много изменений. Оценить объем изменений довольно просто: он соответствует размеру сгенерированных с момента резервирования файлов журналов (в файлах журналов большую часть объема занимают данные, под служебные записи отводится относительно немного места). Чтобы уменьшить время на восстановление файлов данных, можно периодически накладывать на сохраненные файлы данных накопившиеся изменения из журналов. Набор файлов, на которые постоянно накладываются изменения, называется резервной базой данных (рис. 1). Эти файлы в случае сбоя рабочей базы данных можно ввести в строй при минимальном времени простоя. Резервная база данных может по времени внесения изменений незначительно отставать от основной базы данных (primary database).
Рис. 1. Рабочая и резервная базы.
2.2 Резервная база данных
Термин резервная база данных появился в ПО Oracle в 1995 г., начиная с версии 7.3. В то время объемы жестких дисков были невелики, а стоили они довольно дорого, и для резервирования даже небольших баз данных предпочитали использовать ленточные устройства. Процедуры упрощения работы с резервными базами данных стали развиваться с версии Oracle8i, когда жесткие диски начали дешеветь, а их объемы быстро расти. Новые технологии в производстве аппаратных средств дали толчок к развитию новой архитектуры резервирования баз данных. Для создания резервной базы данных нужно скопировать на резервный компьютер рабочие файлы данных и настроить автоматическую передачу журналов изменений. На резервном компьютере нужно запустить процессы, которые будут принимать информацию из журналов и при возникновении сбоя рабочей базы данных сделают резервную доступной для работы пользователей, "активируют" ее с минимальной задержкой по времени и гарантированным отсутствием потерь данных. Схема довольно простая; интересны здесь возможности, которые дают процедуры автоматизации. Даже опытный администратор в случае сбоя может допустить ошибку; иными словами, в критической ситуации слабым звеном становится человек. Но ПО должно выполнять рутинные процедуры безошибочно и с минимальным вмешательством администратора. Задача же администратора сводится к настройке ПО.
Автоматизированные процедуры поддержки резервных баз носят в системе Oracle название Data Guard. Эти процедуры встроены в ПО Oracle. В их число входят графическая оболочка управления резервными базами, утилита командной строки (dgmgrl) и дополнительные процессы, которые выполняют часто встречающиеся действия, предназначенные для поддержки конфигурации взаимодействия основной и резервных баз данных. Графический интерфейс Oracle Data Guard Manager (рис. 2) можно использовать для автоматического создания резервной базы. Он включен в стандартную оболочку ПО управления Oracle Enterprise Manager, начиная с версии Oracle9i. Администратору достаточно указать, на каком из компьютеров с установленным ПО Oracle нужно создать резервную базу данных. Оболочка сама выполнит резервирование файлов данных, перенесет их на резервный компьютер и изменит параметры конфигурации основной базы данных, чтобы она могла передавать журнальную информацию на компьютер с резервной базой. Рис. 2. Oracle Data Guard Manager - графическая оболочка управления.
2.3 Создание физической резервной базы
Сначала создается управляющий файл - служебный файл небольшого размера, содержащий названия всех файлов данных и их параметры. Служебный файл вместе с копией файлов данных переносится на удаленный компьютер. На этом компьютере должно быть установлено стандартное ПО Oracle для управления базами данных. Основное неудобство в том, что программная архитектура основной и резервных баз данных должна быть одинакова. Например, невозможно создать резервную базу на платформе Linux, если основная работает под Windows. Это ограничение связано с тем, что в ОС различаются низкоуровневые программные интерфейсы (API) для работы с файлами, а следовательно, структуры файлов базы данных также имеют отличия. Версии ОС в пределах семейства и платформы могут быть любыми, главное, чтобы на них могло работать ПО Oracle. Далее программно запускается служба, которая будет принимать журнальную информацию от основной базы данных и обслуживать пользователей в случае активации резервной базы данных. Эта служба называется экземпляром Oracle. Служба состоит из нескольких процессов ОС, каждый из которых выполняет набор действий, определенный программистами Oracle. Несколько процессов нужны, чтобы возложить задачу распределения процессорного времени для одновременного выполнения разных задач на планировщик ОС.
После запуска экземпляра, обслуживающего резервную базу, нужно указать экземпляру основной базы, куда посылать журнальную информацию. Она может передаваться немедленно, практически без задержек, по мере наполнения буфера журнальной информации или по мере генерации нового журнального файла (это устанавливается администратором). Пересылка данных по мере генерации файлов совершенно необременительна для рабочей базы, так как этим будет заниматься отдельный процесс-архиватор (ARCn). Независимо от скорости сети, которая связывает оба компьютера, или сетевой задержки, накопленная информация будет передана.
2.4 Передача журнальных записей
Если возникнет долговременный сбой сети или компьютера с резервной базой данных, то журналы, которые не были переданы, будут запрошены резервной базой данных позже. В любом случае архиватор сохраняет всю журнальную информацию в каталоге на компьютере с рабочей базой данных в виде файлов - ведет архив журналов. Администратор обычно удаляет архив, когда в нем отпала необходимость. Именно из этого архива и будут браться файлы, которые не удалось передать в резервную базу. Для их передачи экземпляр резервной базы создает процесс FAL-клиент, который обращается к экземпляру рабочей базы. На нем создается процесс, называемый FAL-сервер, который и передает требуемую информацию (рис. 3). В промышленных системах, где нагрузка на рабочие базы данных велика, файлы можно запрашивать у других резервных баз, которые успели вовремя получить журналы. Традиционно ПО Oracle дает администраторам возможность настроить систему управления базами данных так, чтобы удовлетворить любые запросы. Пользоваться всеми возможностями сразу обычно не требуется. Достаточно знать, что такие возможности есть и, если возникнет необходимость, их можно использовать.
Рис. 3. Архитектура передачи журналов.
Архиватор обычно передает журналы с задержкой в десятки минут. Начиная с версии Oracle9i, журнальную информацию можно передавать без задержки с помощью другого процесса - записи в текущие журнальные файлы (LGWR). При этом резервная база данных может получать журнальную информацию со скоростью ее создания. Это позволит в случае серьезного сбоя компьютера с рабочей базой моментально активировать резервную (сделать ее доступной для работы пользователей), так как не придется дожидаться получения самых последних изменений от основной базы. Чтобы не возникало нагрузки на рабочую базу данных, сетевое соединение должно быть довольно быстрым, т. е. работать с минимальной задержкой, помимо высокой пропускной способности канала передачи.
При конфигурировании процесса передачи журналов администратор также должен указать, необходимо ли основной базе данных приостанавливать обслуживание пользователей до тех пор, пока все изменения не будут переданы в резервную базу. Если обслуживание не приостанавливать, то данные будут переданы процессами FAL с задержкой, когда восстановится сетевое соединение. При неблагоприятном стечении обстоятельств: отказе сети и последующем отказе рабочей базы администратору нужно будет дождаться передачи недостающих журналов и только тогда активировать резервную базу. Он может активировать резервную базу данных и немедленно, но тогда часть изменений будет потеряна. Их нужно будет вносить позже на логическом уровне. В зависимости от важности хранимых данных администратор принимает решение об уровне их защиты.
2.5 Процессы Oracle Data Guard
Решение об активации резервной базы данных принимает администратор базы. Для облегчения процедуры активации или ее автоматизации, начиная с версии Oracle9i, в Data Guard можно использовать дополнительные процессы, называемые Data Guard Broker (dgbroker) и Data Guard Monitor (DMON). Они запускаются на экземплярах рабочей и резервных баз и автоматизируют процессы активации резервной базы, передачи недостающих журналов и перезапуска экземпляров, где произошел сбой. Эти процессы могут быть запущены на любом из экземпляров, обслуживающих базы данных. Архитектура работы этих процессов схожа с менеджером процессов OPMN и DMON, которые используются в сервере приложений Oracle9i AS. Процесс DMON использует собственный файл, где сохраняет полезную для себя информацию, которую нежелательно терять при остановке экземпляра (например, сведения о том, какие базы в сети основные, а какие - резервные). Например, в случае остановки основной базы и последующего монтирования процессы автоматически откроют основную базу. Если администратор предполагает выполнить какие-то действия в режиме монтирования, они скорее всего будут выполняться на открытой базе. Положительная черта этих процессов в том, что их можно безбоязненно отключить в любой момент даже без остановки экземпляра. Оболочки администрирования Data Guard требуют их работы и при необходимости запускают процессы. Администраторы часто сталкиваются с тем, что в базу внесены ошибочные изменения и необходимо восстановить данные на определенный момент времени в прошлом. В СУБД Oracle предусмотрена возможность указать в запросе время, на которое требуются данные. Эта возможность появилась в версии 9i и называется Oracle Flashback. Однако если таблица с данными удалена полностью, то воспользоваться этой возможностью нельзя. Для таких случаев администратор может указать для одной из резервных баз данных задержку, с которой нужно вносить в нее изменения из полученных журналов (рис. 4).
Рис. 4. Резервная база с отставанием по времени.
2.6 Логическая резервная база
В процессе работы резервная база данных не может обслуживать пользователей. Однако желание включить ее в повседневную работу остается. Резервная база может обслуживать запросы пользователей в те моменты, когда она не вносит в свои файлы изменений. При этом журнальные файлы будут накапливаться на компьютере с резервной базой, и их можно будет ввести в файлы позже. Например, днем резервная база может быть открыта для чтения и обслуживать запросы, для которых актуальность информации не важна. Это могут быть приложения, обрабатывающие данные за прошлые дни, - например, системы поддержки принятия решений (decision support system), которые создают большую нагрузку на рабочую базу данных. При этом резервная база данных будет принимать все журналы, сгенерированные рабочей базой в течение дня. На ночь же администратор может перевести резервную базу данных в режим внесения накопленных изменений. В качестве альтернативы можно использовать логическую резервную базу данных. Такая возможность появилась в версии Oracle 9.2, и ее можно использовать одновременно с традиционными физическими резервными базами. Администратор сам выбирает, сколько и каких резервных баз должно быть. Журнальная информация содержит все сведения о том, какие изменения были внесены в рабочую базу данных. В версии 8i появилась возможность анализировать журнальные файлы и воссоздавать часть команд, которые выполнялись пользователями при работе с основной базой данных. Доработав эту технологию и добившись восстановления большей части команд, компания Oracle смогла предложить новую технику логического резервирования. Если в физической резервной базе из журнальных данных выбирается информация об изменениях, внесенных напрямую в файлы данных - на физическом уровне, то в логической резервной базе реконструируются команды SQL, при помощи которых эти изменения были внесены (команды, которые выдавали пользователи при операциях с рабочей базой). Восстановив поток команд, можно повторно ввести их уже в резервную базу. Изменения вносятся не на физическом уровне, а на логическом - на уровне таблиц. При этом физическая структура файлов резервной базы может отличаться от той, что существует в рабочей базе. Достаточно лишь, чтобы существовали объекты с теми же именами, которые есть в рабочей базе. Выдавать команды SQL, восстановленные из журналов, можно из базы, открытой для работы пользователей. Необходимо только позаботиться о том, чтобы пользователи не конфликтовали с процессами, вносящими изменения. Самое простое решение - не давать возможности пользователям, работающим с резервной базой, менять в ней данные. Таким образом, пользователи могут работать с логической резервной базой в режиме чтения. Используя логические резервные базы данных, нужно иметь в виду особенности их работы. Восстановление команд SQL и внесение изменений в базу требуют дополнительных процессорных ресурсов. Эти процессы некоторым образом повторяют все транзакции, прошедшие на рабочей базе. Чтобы ускорить внесение изменений, на резервной базе создается пул процессов, которые вносят изменения. Он называется Log Apply Services и состоит из процессов LSPn - координаторов и PX (parallel execution), которые восстанавливают команды SQL и вносят изменения. Эти процессы не восстанавливают команд, не меняющих данные (например, SELECT), так как в журнал изменений они не записываются. Обычно именно команды SELECT создают основную нагрузку на процессор компьютера с основной базой. Вторая особенность работы логической резервной базы в том, что по журналам сложно восстановить логические команды, которые вносили изменения в основную базу. Для того, чтобы резервная база могла это делать, нужно, чтобы в журнал изменений добавлялась дополнительная информация. Для команд, меняющих данные в таблицах (INSERT, UPDATE, DELETE, MERGE), нужно сохранять значение первичного или уникального ключа. Из-за этого объем журнальной информации возрастает. Если у основной базы каналы записи в файлы журналов загружены, производительность ее снизится. Логическая резервная база может использоваться, если объемы изменений основной базы невелики или если переключение пользователей, которые не вносят изменения, на работу с резервной базой сможет разгрузить основную базу. Технология восстановления SQL-команд из журнала изменений легла в основу Oracle Streams, новой технологии перемещения изменений между базами (репликации). Изменения можно вносить только в часть таблиц, а резервная база слабо связана с основной. Можно настроить репликацию изменений, сделанных в основной базе, в любые другие. Эта идея была реализована начиная с версии 9i как альтернатива существовавшим ранее методам репликации. Преимущество Oracle Streams в том, что нагрузка на основную базу данных существенно ниже, чем при репликации другими методами, которые доступны в базах Oracle. В архитектуре Oracle Streams предусмотрена возможность выбирать информацию из журналов как основной базы, так и любой другой. Выборка данных из основной базы имеет то преимущество, что не требуется передавать большие объемы журнальной информации на удаленные компьютеры, загружая сеть. В новой версии Oracle10g (рис. 5), которая вышла в начале этого года, в архитектуру резервных баз были внесены небольшие улучшения, в основном связанные со снятием ограничений на использование резервных баз и удобством их использования. Например, в 10g сброс последовательности нумерации журнальных файлов (resetlogs) не требует пересоздания резервных баз данных. Основные изменения коснулись оболочки администрирования - в частности, в 10g для управления базами данных используется Web-интерфейс.
Рис. 5. Data Guard Manager 10g. Глава 3. Защита резервных копий баз данных и базы данных разработчиков
Защита баз данных Oracle
Самый простой и наиболее успешный способ компрометации баз данных заключается в получении информации о базах данных из тех мест, которые оказались незащищенными. Два примера: резервные копии баз данных, а также базы данных разработчиков и тестовые базы данных. Если можно достать резервную копию базы данных или экспортный файл, то можно повторно создать базу данных на собственной машине. Здесь важно учитывать то, что данные и базы данных часто не размещаются в одной промышленной машине. Часто используются несколько баз данных для разработчиков, баз данных для компоновочного тестирования, системного тестирования и приемочных испытаний. Существуют также различные типы резервных копий. Типы резервных копий Oracle Существует три основных вида резервирования Oracle: · Экспорт: инструментальное средство Oracle exp используется для извлечения данных из базы данных в файл операционной системы. Формат файла нестандартный, понятный самой СУБД. Инструментальное средство Oracle imp вставляет данные назад в ту же самую или другую базу данных. Можно выполнять частичный или полный экспорт всей базы данных. В полный экспорт включаются хешированные пароли. Если целью является кража данных, то достаточно выполнить экспорт схемы владельца приложения. · Холодное резервирование может выполняться различными способами и с помощью инструментальных средств.Он может выполняться также на диск или ленту. Во время холодного резервирования база данных должна быть полностью остановлена. · Горячее резервирование выполняется в базах данных с высокой доступностью, когда работа приложений не должны прерываться. Для горячего резервирования база данных должна находиться в режиме ARCHIVELOG (архивирование журнала). Если база данных находится в этом режиме, это еще не означает выполнение горячего резервирования. Узнать об этом гораздо сложнее. Для проверки, включен ли режим ARCHIVELOG, можно в sqlplus выдать следующий запрос: SQL> sho useris "DBSNMP"> select log_mode from v$database;_MODE ----------- NOARCHIVELOG SQL> Для проверки, выполняется ли в базе данных горячие или холодное резервирование, нужно провести небольшое исследование. Можно поискать в машине командные файлы резервирования, содержащие слова ALTER TABLESPACE [TABLESPACE NAME] BEGIN BACKUP. Проверить задания cron, дневные листинги процессов: не запускалось ли программное обеспечение, которое могло выполнять резервирование. Проверить протокольные файлы. Выяснить, программное обеспечение для резервирования установлено на машине, используя для этого pkginfo -l. Можно проверить статус табличных пространств, не переключались ли они в режим “OFFLINE”, что может быть хорошим признаком выполнения в данное время горячего резервирования. SQL> select tablespace_name,status from dba_tablespaces;_NAME STATUS ----------------------------- ---------ONLINEONLINEONLINEONLINE_REPOSITORY ONLINEONLINE_IND_1 OFFLINE_DATA_1 ONLINE 6 rows selected. SQL> Проверка холодного резервирования проще, так как можно снова проверить задания cron, листинги процессов и посмотреть, есть ли регулярные остановки, а затем поискать какое-нибудь работающее программное обеспечение резервирования. Если доступен сигнальный файл Oracle (alert log), то в нем просто найти все остановки и запуски базы данных. Необходимо пробовать определить, где и когда записываются файлы и, что более важно, пытаться узнать, можно ли эти фалы взять и прочитать.
3.2 Резервные копии на ленте
Резервные копии на ленте достаточно хорошо охраняются, но если решительный хакер захочет, и защита будет не на высоте, он может, используя социальную инженерию, запросить ленты с резервными копиями “на вынос” и начать их упорядочивать и собирать по мере получения. Когда все ленты будут собраны, можно будет повторно создать базу данных на другой машине. Если даже база данных слишком большая для этой машины, то можно все ненужные табличные пространства и файлы данных перевести в автономный режим (деактивизировать) и открыть базу данных без них. Прим. пер.: "социальная инженерия" - тактика злонамеренного проникновения, при которой взломщик путем "уговоров" обманывает пользователей или администратора (например, представляясь новым сотрудником) и добивается значимой информации о компании и/или её компьютерных системах, чтобы получить несанкционированный доступ к сети. Существуют даже скрытые параметры, которые помогают запустить базу данных, когда она ломается при попытке запуска неполной базы данных.
3.3 Резервные копии на диске резервный база данные восстановление Резервные копии на диске даже лучше, если не защищены файлы. Их легче взять и где-то повторно создать базу данных для извлечения хешированных паролей или конкретных данных. Здесь требуются технические приемы, для выяснения, какое использовалось программное обеспечение для резервирования, где находятся реальные резервные копии и журнальные файлы. Во многих случаях базы данных разработчиков и тестовые базы данных имеют копии всех промышленных данных, поскольку они требуются для системного тестирования и настройки производительности. Если требуются эти данные, очень часто достаточно одного дня для их извлечения из этих баз данных. Если необходимо найти базу данных разработчиков или тестовую базу данных: ее не загружают в ту же машину, в которой работает промышленная база данных. Необходимо выяснить в файлах tnsnames.ora и listener.ora SID базы данных, который похож на SID промышленной базы данных. Посмотреть в директории admin инсталляции Oracle файлы init.ora. Они имеют имена init[ORACLE_SID].ora. Иногда остаются другие “дырки” - разработчики часто имеют гораздо больше прав доступа, чем это нужно. Когда тестовая среда переносится в промышленную базу данных, часто копируются также пользователи, и права доступа разработчиков также оказываются в промышленной базе данных. 3.4 Базы данных для работы в непредвиденных обстоятельствах
Другим местом для поиска информации баз данных является вторжение в узел, предназначенный для работы в непредвиденных обстоятельствах. Если такой существует, необходимо его проверить и получить доступ к данным. Обычно большие организации поддерживают работоспособность таких узлов, но, вероятно, все там будет устаревшим. Большим успехом для хакера будет то, что там окажутся те же данные и базы данных, что и в промышленном узле, но они, вероятно, будут меньше защищены и скорее всего там не окажется системного администратора или DBA, соединенных с базой данных и наблюдающих за происходящим. Все методы организации обхода защиты, а также кражи данных описаны с целью предотвращения подобных действий и увеличения бдительности администраторов БД и лиц, обслуживающих СУБД Oracle. Глава 4. Клонирование БД на локальном и удаленном компьютере с использованием пользователльской резервной копии
Создание резервной копии методом "холодного" копирования
Холодное (автономное) резервное копирование базы данных выполняется на уровне операционной системы при остановленной базе данных - резервируются файлы, составляющие базу данных Oracle: файлы данных, управляющие файлы, файл параметров. Если остановка базы данных была выполнена в режимах normal\immediate\transactional, то включать в резервную копию файлы оперативных журналов необязательно. · До начала процесса копирования следует выяснить основные параметры базы данных database name>select name from v$database;name>select instance_name from v$instance; В общем случае database name = instance name, но при создании клона базы данных на той же машине, что и исходная база, параметры instance name для исходной и клонированной баз должны быть различны. версия> select banner from V$version Версия ПО, установленная на машину, предназначенную для эксплуатации клонированной базы, должна соответствовать версии исходной базы данных. · Файлы базы данных файлы данных SQL>select name,status from v$datafile_header; темп-файлы> select v$tempfile.name, v$tablespace.name from v$tempfile,$tablespace where v$tempfile.ts#= v$tablespace.ts# Темп-файлы резервированию не подлежат, но информация об их использовании необходима в дальнейшем. При наличии временного табличного пространства, использующего tempfiles, эти файлы должны быть созданы после открытия клонированной базы. журнальные файлы>select v$logfile.group#, v$logfile.member, v$log.status from v$logfile,$log where v$logfile.group#=v$log.group#; Резервирование журнальных файлов при создании холодной копии необходимо в двух случаях: перед копированием файлов база данных была остановлена в несогласованном состоянии и ее открытие требует восстановление экземпляра; для клонированной базы не желателен сброс последовательности журнальных файлов. архивные журнальные файлы При создании резервной копии методом холодного копирования, архивные журнальные файлы не нужны. Исключением может быть случай наличия в исходной базе данных файлов данных, требующих восстановление носителя на момент создания резервного набора (например, файлы в состоянии offline). управляющий файл>select name from v$controlfile; Резервирование управляющего файла можно проводить двумя способами: холодным копированием определенных запросом файлов или созданием резервной копии управляющего файла командой alter database backup controlfile - в последнем случае клонированная база данных потребует восстановление с дальнейшим сбросом последовательности журнальных файлов. Резервирование управляющего файла в двоичный файл осуществляется командой SQL>alter database backup controlfile to <имя файла-копии>; Резервирование управляющего файла в файл трассировки для дальнейшего скриптового создания SQL>alter database backup controlfile to trace; Файл трассировки формируется в каталоге, указанном в параметре инициализации user_dump_dest (или при установке значения по умолчанию в - rdbms/trace) файл параметров>select * from v$parameter2 where name in ('spfile', 'ifile'); Начиная с 9 версии Oracle в качестве файла параметров может использовать как текстовой файл, так и бинарный. По умолчанию, используемый файл расположен в директории <$oracle_home>\database (Windows) или <$oracle_home>/dbs (linux) и имеет вид init<SID>.ora (текстовой) или spfile<SID>.ora (бинарный) При использовании spfile для сохранения и редактирования списка параметров для клонированной базы удобно создать текстовой файл командой SQL>create pfile=<имя файла> from spfile; файл паролей. При клонировании базы данных файл паролей следует пересоздать. Дополнительно имеет смысл сохранить директорию <$oracle_home> \network\admin, если предполагается создание клона на удаленной машине. · Перечисленные выше файлы должны быть скопированы средствами ОС и сохранены. При этом копирование файлов данных, журнальных файлов и управляющих файлов должно осуществляться при закрытой базе данных. Не рекомендуется использовать режим shutdown abort, поскольку в этом случае клонированная база потребует восстановления экземпляра и в случае отсутствия текущих (активных) журнальных файлов не может быть открыта. При установки базы данных с использованием Database Configuration Assistant автоматически генерируемая структура каталогов имеет вид <$Oracle_base>\ admin\<$Oracle_sid> oradata\<$Oracle_sid> flash_recovery_area\<$Oracle_sid> В этом случае удобнее резервировать не отдельные файлы, а полностью директории admin и oradata с их содержимым.
4.2 Восстановление базы данных на удаленной машине
Устанавливается основное программное обеспечение и необходимые патчи. Дистрибутив, используемый для установки ПО для исходной и клонированной баз, должен быть одним и тем же.
4.2.1 С сохранением структуры каталогов При инсталляции ПО параметр Oracle_home и пути к домашней директории Оракла должны соответствовать определенным на исходной машине. После установки ПО необходимо воссоздать структуру каталогов, используемых ораклом для зарезервированных файлов и указанных в файле параметров · background_dump_dest · core_dump_dest · user_dump_dest · audit_file_dest · log_archive_dest_<n> · log_archive_dest\log_archive_duplex_dest · db_recovery_file_dest Предоставить права на эти каталоги пользователю, под учетной записью которого работает Оракл. Далее следует разместить сохраненные файлы следующим образом: файлы данных, управляющие и журнальные файлы раскладываются по их изначальному местоположению на исходной машине. Файл параметров при необходимости переименовываем в init<SID>.ora и помещаем в директорию <$oracle_home>\database (<$oracle_home>/dbs). Следующая последовательность действий зависит от используемой операционной системы Windows . устанавливаем переменную окружения oracle_sid set oracle_sid=<SID> где <SID> =< instance_name > . создаем службу <$oracle_home>\bin\oradim.exe -new -sid <SID> -intpwd <пароль пользователя sys\internal> -startmode manual в результате в сервисах появится и стартует служба с именем OracleService<SID>, а в директории <$oracle_home>/database сформируется файл паролей с именем pwd<SID>.ora Unix 1. устанавливаем переменную ORACLE_SID ORACLE_SID=<SID> export ORACLE_SID .создаем файл паролей <$oracle_home>/bin/orapwd file=<$oracle_home>/dbs/orapw<SID> password=<пароль пользователя sys\internal> На этом этапе система готова к открытию базы данных. Дальнейшие действия отличаются для разных версий Oracle. Для версии 8 открытие базы осуществляется из командной строки программы <$oracle_home>\bin\svrmgrl SVRMGRL> connect internal: <пароль пользователя internal>.>startupinstance started. …mounted.opened. Для 9-10 версии используется SQLPLUS- <$oracle_home>\bin\sqlplususer-name: sys as sysdba password: <пароль пользователя sys> connected.> startup pfile='<$oracle_home>/dbs/init<SID>.ora';instance started. …mounted. opened. После открытия базы данных при наличии временных пространств, использующих tempfiles необходимо их создать командой SQL>alter tablespace <ТП> add tempfile <путь и имя файла> size 500M Последний этап - обеспечить пользовательский доступ к базе данных средствами Net8. Корректируются файлы tnsnames.ora и listener.ora из сохраненной директории <$oracle_home>/network/admin - в них необходимо изменить параметр host и после этого стартовать процесс прослушиватель: <$Oracle_home>\bin\lsnrctl LSNRCTL>start 4.2.2 · Изменение каталога для файлов трассировки процессов и расположения архивных журналов осуществляется путем корректировки параметров файла init<SID>.ora background_dump_dest_dump_dest_dump_dest_file_dest_archive_dest_<n>_archive_dest\log_archive_duplex_dest_recovery_file_dest · Изменение каталога расположения управляющих файлов осуществляется путем корректировки параметра файла init<SID>.ora control_files · Изменение местоположения файлов данных и журнальных файлов осуществляется следующим образов: - база данных монтируется, но не открывается SQL>startup mount; - файлы данных и журнальные файлы средствами ОП раскладываются - по новому местоположению и для каждого из них выполняется команда SQL>alter database rename file <путь и имя файла> to <новый путь и имя файла>; -- например: alter database rename file ‘d:\dbs\redo01.log‘ to ‘c:\oracle\redo01.log‘; -- база открывается для общего доступа SQL>alter database open;
4.2.3 Восстановление при отсутствии части необходимых файлов Восстановление базы данных может быть проведено и в случае отсутствия части файлов, перечисленных в пункте I. Частичное восстановление возможно при утере части файлов данных, не принадлежащих табличному пространству system · Отсутствует файл параметров инициализации. Минимальный набор параметров для старта базы данных control_files _name _block_size в некоторых случаях необходимо указывать параметр compatible. Значение остальных параметров берутся по умолчанию и в дальнейшем при необходимости могут быть скорректированы. Если значения параметров db_name и db_block_size не известны, можно поставить произвольные значения - при попытке старта Оракл обнаружит несоответствия этих параметров с указанными в управляющем файле и выдаст ошибку (на консоль или в alert.log) с указанием их истинных значений. · Отсутствуют журнальные файлы. В этом случае возможно открытие базы данных с опцией resetlogs только в случае согласованного состояния базы данных на момент создания холодной копии - в результате сбросится последовательность журнальных файлов, а сами журнальные файлы будут созданы заново. Последовательность команд, обеспечивающая открытие базы данных в режиме сброса журналов>startup mount; …> recover database until cancel using backup controlfile;: change 4657702 generated at 11/26/2005 17:04:52 needed for thread 1: suggestion: D:\ORA9\RDBMS\ARC00008.001: change 4657702 for thread 1 is in sequence #8log: {<RET>=suggested | filename | AUTO | CANCEL}-- на предложение ввести командуrecovery cancelled.> alter
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|