Заранее спасибо
Скажите когда база в Oracle я вляется базой для disaster recovery,
к ней возможны read-only обращения ?
disaster recovery в Oracle
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
disaster recovery в Oracle
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 900
- Joined: 20 Jul 2001 09:01
Да.. Существует несколько способов решения этой задачи...
Все зависит от архитектуры (где физически будет находиться эта вторая база), типа базы даных (OLTP, BW, DSS), и как часто/долго надо чтобы база была открыта для Read-only.
Возможные варианты:
1) Standby database ( + dataguard) - переключается в read-only на определенное время (допустим на время запуска каких то больших отчетов или еще чего). Ньюанс, в это время, пока она будет Read-only все новые изменения не будут applied до тех пор пока база не переключится в standby mode опять.
2) Snapshot replication - это не полноценное disaster recovery solution, так как в случае умирания продакшн, надо повозиться, чтобы 2-я база смогла стать транзакшнл, или чтобы перенести данные куда нить, но они могут быть всегда доступны для read-only, и все обновления могут немедленно появляться во 2-й базе.
Все зависит от архитектуры (где физически будет находиться эта вторая база), типа базы даных (OLTP, BW, DSS), и как часто/долго надо чтобы база была открыта для Read-only.
Возможные варианты:
1) Standby database ( + dataguard) - переключается в read-only на определенное время (допустим на время запуска каких то больших отчетов или еще чего). Ньюанс, в это время, пока она будет Read-only все новые изменения не будут applied до тех пор пока база не переключится в standby mode опять.
2) Snapshot replication - это не полноценное disaster recovery solution, так как в случае умирания продакшн, надо повозиться, чтобы 2-я база смогла стать транзакшнл, или чтобы перенести данные куда нить, но они могут быть всегда доступны для read-only, и все обновления могут немедленно появляться во 2-й базе.
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
Спасибо
А сам disaster recovery как выглядит ? Скрипт какой то ?
То есть я могу сделать бесконечный цикл такого плана
1. сгенерить на production очередной log
2. переслать его на второй сервер
3. применить его
4. перевести базу в readonly
5. сделать нужные selects
6. перевести базу в standby
7. goto 1
?
Соответственно если в этот процесс можно влезть своими шаловливыми ручками, то я могу, например, от одного production вести ДВА disaster recover sites ?
А сам disaster recovery как выглядит ? Скрипт какой то ?
То есть я могу сделать бесконечный цикл такого плана
1. сгенерить на production очередной log
2. переслать его на второй сервер
3. применить его
4. перевести базу в readonly
5. сделать нужные selects
6. перевести базу в standby
7. goto 1
?
Соответственно если в этот процесс можно влезть своими шаловливыми ручками, то я могу, например, от одного production вести ДВА disaster recover sites ?
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 900
- Joined: 20 Jul 2001 09:01
Если вас интересует standby ( на сколько я понял) то там все намного проще.
Существует бесплатная примочка к самой стендбай базе, называемая dataguard. Это цетральная консоль, со своей командной строкой и набор резидентных агентов на primary and standby sites, которые мониторят log switched and archivelogging, и обеспечивают копирование логов на удаленный сайт и эплаят их на стендбае автоматически, в соответствии с лагом в конф. файле. Перевод стендбая в read-only можно сделать из командной строки или консоли одной командой (так же и обратно).
Как тока стебндбай стал read-only - вы можете делать любые селекты.
Все это не сложно запихнуть в скрипты, так что ваш алгоритм упрощается до
1) log shipping and appying is automatic with dataguard
2) switch standby to read-only
3) selects
4) switch standby to normal standby mode
Сам процесс переключения в read-only и обратно не очень быстрый, так как все лаговые логи (которые не были эпплаены - должны быть включены), поэто постоянно переключать ее туда сюде не рекомендуется..
Сам же дизастер рековери просесс сводится к activate standby database - что делается из dataguard консоли или командной строки.. - при этом эплаятся недостающие логи, обновляются контрол файлы, он-лайн реду логи, делаются все tablespaces RW и стендбай база открывается в OPEN mode (все это делается на заднем плане).
После того как вы активировали стендбай, он будет работать как продакшн и стендбай надо пересоздавать на старом продакшн сервере.
Существует бесплатная примочка к самой стендбай базе, называемая dataguard. Это цетральная консоль, со своей командной строкой и набор резидентных агентов на primary and standby sites, которые мониторят log switched and archivelogging, и обеспечивают копирование логов на удаленный сайт и эплаят их на стендбае автоматически, в соответствии с лагом в конф. файле. Перевод стендбая в read-only можно сделать из командной строки или консоли одной командой (так же и обратно).
Как тока стебндбай стал read-only - вы можете делать любые селекты.
Все это не сложно запихнуть в скрипты, так что ваш алгоритм упрощается до
1) log shipping and appying is automatic with dataguard
2) switch standby to read-only
3) selects
4) switch standby to normal standby mode
Сам процесс переключения в read-only и обратно не очень быстрый, так как все лаговые логи (которые не были эпплаены - должны быть включены), поэто постоянно переключать ее туда сюде не рекомендуется..
Сам же дизастер рековери просесс сводится к activate standby database - что делается из dataguard консоли или командной строки.. - при этом эплаятся недостающие логи, обновляются контрол файлы, он-лайн реду логи, делаются все tablespaces RW и стендбай база открывается в OPEN mode (все это делается на заднем плане).
После того как вы активировали стендбай, он будет работать как продакшн и стендбай надо пересоздавать на старом продакшн сервере.
-
- Уже с Приветом
- Posts: 1255
- Joined: 01 Jun 1999 09:01
- Location: Irkutsk.RU -> Hamden, CT-> Princeton, NJ, USA
Последнее верно лишь в случае failover. Для switchover вам не нужно пересосздавать standby database. А вообще уважаемый Verzlo прав - не следует изобретать велосипед - Oracle9i Data Guard прекрасно работает в этой ситуации. Честно говоря, я несколько недолюбливаю его logical standby database вариант из-за чрезмерной капризности и привередливости. Куда проще (читай: надежнее) иметь дело с physical standby. Кстати, помните о недопустимости операций в production primary database, не генерирующих логов (лучше превентивно заставить базу ВСЕГДА их генерировать, если вопрос high availability перевешивает все остальное). Oracle9i позволяет вам иметь до десяти различных мест отсылки текущих логов, что позволяет формировать "куст" из одной мастер-базы и девяти - standby. Более того, каждый standby тоже может генерировать логи - здесь появляется возможность каскадирования....verzlo wrote:После того как вы активировали стендбай, он будет работать как продакшн и стендбай надо пересоздавать на старом продакшн сервере.
[b]"Счастье для всех, даром, и пусть никто не уйдет обиженный!"[/b]
[i]А. и Б. Стругацкие, "Пикник на обочине"[/i]
[i]А. и Б. Стругацкие, "Пикник на обочине"[/i]
-
- Новичок
- Posts: 86
- Joined: 06 Dec 2002 18:21
Dmitry67, поскольку Вы задаете одни и те же вопросы для оракла и DB2, посмотрите этот документ, про оракл там все правильно написано, а насчет дб2 для равновесия можете попросить аналогичный у zVladа или уточнить у него сомнительные моменты
(если требуется пароль - зарегистрируйтесь, это бесплатно)
(если требуется пароль - зарегистрируйтесь, это бесплатно)
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
Да, и в этом примере
select * from PRD.dbo.PROD where not
exists(select * from ADDIT.dbo.T where T.P=PROD.P)
Таблица PROD берется на время в прошлом, а T - на "сейчас"
Боюсь flashback query не подойдет
select * from PRD.dbo.PROD where not
exists(select * from ADDIT.dbo.T where T.P=PROD.P)
Таблица PROD берется на время в прошлом, а T - на "сейчас"
Боюсь flashback query не подойдет
Last edited by Dmitry67 on 06 Nov 2003 13:44, edited 1 time in total.
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 178
- Joined: 18 Jan 2001 10:01
- Location: Delray Beach, FL
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
MAMOHT wrote:Oracle Flashback. Позволяет видеть состояние таблицы в прошлом. Насколько далеко, зависит от размера UNDO. Вторая база для этого не нужна.
1 А если сервер перезапущен, то можно ли открыть таблицу на время ДО перезапуска ?
2 Во flashback query можно ли ПИСАТЬ во временные таблицы ?
3 Ничего что я такие странные вопросы задаю ?
Спасибо
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Новичок
- Posts: 86
- Joined: 06 Dec 2002 18:21
Dmitry67 wrote:Да, и в этом примере
select * from PRD.dbo.PROD where not
exists(select * from ADDIT.dbo.T where T.P=PROD.P)
Таблица PROD берется на время в прошлом, а T - на "сейчас"
Боюсь flashback query не подойдет
в одном запросе можно как угодно комбинировать таблицы на разные времена в прошлом, включая и "на сейчас" например
Code: Select all
select dname, ename
from emp as of timestamp sysdate-1/24,
dept as of timestamp sysdate-2/24
where emp.deptno=dept.deptno;
-
- Новичок
- Posts: 86
- Joined: 06 Dec 2002 18:21
Dmitry67 wrote:MAMOHT wrote:Oracle Flashback. Позволяет видеть состояние таблицы в прошлом. Насколько далеко, зависит от размера UNDO. Вторая база для этого не нужна.
1 А если сервер перезапущен, то можно ли открыть таблицу на время ДО перезапуска ?
2 Во flashback query можно ли ПИСАТЬ во временные таблицы ?
3 Ничего что я такие странные вопросы задаю ?
Спасибо
1.да - если еще не слишком поздно (определяется параметром UNDO_RETENTION)
2.да - результат flashback query можно писать куда угодно
3.нормально (вопросы кстати разумные и не элементарные)