Проблема при резервном копировании Oracle 10g - PullRequest
3 голосов
/ 28 октября 2010

Я только что начал работу и обнаружил проблему, из-за которой в настоящий момент база данных, так сказать, не копируется должным образом.Мы делаем одно резервное копирование каждые 6 часов, используя собственную утилиту резервного копирования Oracle, но компания также продала процесс, в котором они заявили, что по сути могут выполнять «теплые» резервные копии нашей базы данных, просто делая копии файловой системы.файлов нашей базы данных, и когда нам нужно было восстановить, мы просто выключили Oracle, а затем скопировали скопированные файлы, перезапустили Oracle, и мир снова стал бы целым.Проблема заключается в том, что мы еще не заставили это работать.Мне нужно потратить еще немного времени на рассмотрение сообщения, которое дает Oracle, но мой основной вопрос: «Возможно ли» взять копии файлов Oracle, пока Oracle еще работает, и использовать эти файлы позднее для восстановления базы данных??Я знаю, что это работает, если база данных закрыта, а затем сделаны копии, но я слышал, что это первое, что можно сделать копию (файловую систему) во время работы базы данных.Любое руководство будет с благодарностью.Вот ошибка, которую мы получаем.

ORA-00314: log 3 of thread 1, expected sequence# 1939 doesn't match 1944
ORA-00312: online log 3 thread 1: 'E:\ORACLE\ORADATA\ITMS\REDO03.LOG'

Ответы [ 4 ]

3 голосов
/ 28 октября 2010

Насколько я знаю, есть два способа, которыми вы можете "копировать" файлы данных из работающего экземпляра Oracle.

  • Файлы данных копируются для табличное пространство, когда табличное пространство находится в Режим «НАЧАТЬ РЕЗЕРВ.».
  • Вы используете журналирование высокого уровня файловая система, такая как Veritas, которая может снимок и трек блок изменения в файловой системе в то время как Копирование происходит.
3 голосов
/ 28 октября 2010

Да, это возможно, но вы должны сначала перевести все табличные пространства в режим резервного копирования, а затем удалить их (например, ALTER TABLESPACE x BEGIN BACKUP и ALTER TABLESPACE x END BACKUP; вам необходимо проверить синтаксис и убедиться, что он подходит для твоя ситуация!). Сильно упрощая, это говорит Oracle не записывать ни в один из файлов данных, поэтому они все находятся в согласованном состоянии.

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

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

В течение некоторого времени я не участвовал в восстановлении из горячей резервной копии, поэтому кому-то еще нужно будет подробно рассказать о фактической ошибке. Я читал о том, что вы пытались открыть восстановленные файлы данных, но позже добавились журналы повторов. При восстановлении я думаю, что вы либо RECOVER должны использовать базу данных, используя журналы повторов, созданные с момента создания резервной копии; или если вы пытаетесь восстановить к этому моменту времени, то вы можете открыть данные с помощью директивы RESETLOGS и потерять все изменения из всех журналов повторов, которые пришли позже. Но на самом деле прими более осознанный совет, чем этот ...

1 голос
/ 29 октября 2010

Я фактически сделал это с помощью некритической базы данных, работающей на Amazon EC2. Моя стратегия резервного копирования заключается в том, чтобы периодически делать снимок тома EBS. Чтобы восстановить резервную копию, я создаю новый том EBS из снимка, запускаю экземпляр, используя его, затем запускаю RECOVER DATABASE.

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

1 голос
/ 28 октября 2010

Это возможно. Вы должны быть в режиме ARCHIVELOG.

Пример сценария будет для руководства:

Alter tablespace USERS begin backup;
host cp -p /u02/oradata/PROD/users01.dbf /u03/backup/PROD/
host cp -p /u02/oradata/PROD/users02.dbf /u03/backup/PROD/
Alter tablespace USERS end backup;

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

Если вы хотите сделать резервную копию всей базы данных, пока она открыта (я предпочитаю использовать Oracle с DBA, чтобы вы могли избежать паролей в скриптах, но ymmv):

$ ORAENV_ASK=NO
$ ORACLE_SID=PROD
$ . oraenv
$ rman target=/

Recovery Manager: Release 10.2.0.4.0 - Production on Thu Oct 28 14:23:29 2010

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

connected to target database: PROD (DBID=x)

RMAN> backup as compressed backupset database plus archivelog;

...

Backup Complete.
...