Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle Standby. Archivelog status IN-MEMORY / 25 сообщений из 50, страница 1 из 2
23.07.2019, 13:55
    #39840484
raul84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
Здравствуйте! Столкнулся с достаточно интересной для себя историей.

Есть 2 базы, PRIMARY и STANDBY, на них настроен broker (dgmgrl), т.е. переход на резерв осуществляется командой switchover to XXX, или failover to XXX.

У меня 500 баз так настроено, всё прекрасно работает, т.е. как настраивать dataguard опыт имеется.
Применение логов в реальном времени.

Но, тут вот на 11 Оракле настроил 2 базы, брокер настроил, но switchover выполнить не даёт, причина:

на стендбайной базе всегда 1 последний архивный лог находится в статусе IN-MEMORY и применять она его начинает только тогда, когда на стендбай приходит новый архивный лог. Т.е. в реальном времени по факту мы имеем всегда рассинхрон в 1 лог. Он ругается что датафайлы неконсистентны и этой действительно так.

На металинке я нашел The Latest Archivelog On Standby Database Keep The Status Of In-Memory (Doc ID 1384371.1), в целом там написано что это нормальная история, но по факту это не совсем так, ведь я не могу выполнить свитчовер без шаманства, на всех моих базах если архивные лог попадает на стендбай - он его сразу применяет и к датафайлам, а не держит в памяти.

Как заставить стендбай применять лог сразу, не ждать пока попадёт следующий?
...
Рейтинг: 0 / 0
23.07.2019, 15:02
    #39840528
Viewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
raul84по факту мы имеем всегда рассинхрон в 1 лог.
Standby Redo log
?
...
Рейтинг: 0 / 0
23.07.2019, 15:07
    #39840532
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
Думаю, что человек, настроивший 500+ связок Primary/Standby лепит SRL уже на автомате
Да и вроде Broker с какой-то версии создает их сам для любого уровня защиты
...
Рейтинг: 0 / 0
23.07.2019, 15:15
    #39840541
raul84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
standby redo log естественно есть, пробовал их пересоздавать на стендбайном сервере.

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

на primary: select switchover_status from v$database; --TO STANDBY
на standby: select switchover_status from v$database; --NOT ALLOWED
...
Рейтинг: 0 / 0
23.07.2019, 15:21
    #39840545
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
Пока разговор голословный
Конфигурация брокера
Сами настройки LOG_ARCHIVE* с боевого и стендбая
Сообщения в логах при попытке накатить и попытке switchover
Сообщения об ошибке, в конце концов

Вроде всякие DELAY, заданый в конфигурации брокера должен отрабатывать нормально, но если он установлен в обход брокера, напрямую в LOG_ARCHIVE_DEST_? Хотя заявлено "Применение логов в реальном времени", но это видно реально в alert-е
...
Рейтинг: 0 / 0
23.07.2019, 15:34
    #39840557
raul84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
DGMGRL> show configuration verbose

Configuration - dg1

Protection Mode: MaxAvailability
Databases:
host1- Primary database
host2 - Physical standby database

Properties:
FastStartFailoverThreshold = '30'
OperationTimeout = '30'
FastStartFailoverLagLimit = '30'
CommunicationTimeout = '180'
FastStartFailoverAutoReinstate = 'TRUE'
FastStartFailoverPmyShutdown = 'TRUE'
BystandersFollowRoleChange = 'ALL'

Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS
--------------------
primary:
log_archive_dest_1 string LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=host1
log_archive_dest_2 string service="host2", LGWR SYNC AFFIRM delay=0 optional compression=disable max_failure=0 max_connections

standby:
log_archive_dest_1 string location=USE_DB_RECOVERY_FILE_DEST, valid_for=(ALL_LOGFILES, ALL_ROLES)
log_archive_dest_2 string service="host1", LGWR SYNC AFFIRM delay=0 optional compression=disable max_failure=0 max_connect

log drcHOST1:

07/19/2019 00:09:42
SWITCHOVER TO host2
Notifying Oracle Clusterware to teardown primary database for SWITCHOVER
07/19/2019 00:10:24
Switchover operation failed with status ORA-16751
Target standby sblrg failed to become a primary database.
To recover, return the original primary, host1, to the primary role
using SQL*plus. Then correct the errors that prevented sblrg from becoming
a primary database, and retry the switchover operation.
For more information, please check the Troubleshooting Chapter of the Data Guard
Broker documentation.
Command SWITCHOVER TO host2 completed
07/19/2019 00:11:13
Process RSM0, PID = 28750, will be killed
07/19/2019 00:11:15
Creating process RSM0
07/19/2019 00:11:19
Process RSM0 re-created with PID = 2527
Error detected: one or more instances do not have log transport turned on.
Data Guard Broker Status Summary:
Type Name Severity Status
Configuration dg1 Warning ORA-16607
Primary Database host1 Error ORA-16810
Physical Standby Database host2 Error ORA-16766

drcHOST2.log:

07/19/2019 00:08:40
SQL Execution error=604, sql=[ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WAIT WITH SESSION SHUTDOWN]. See error stack below.
ORA-00604: error occurred at recursive SQL level 1
ORA-01196: file 1 is inconsistent due to a failed media recovery session
ORA-01110: data file 1: '/u01/oracle/oradata/host2/system01.dbf'
Sswitchover to primary command failed
Database Resource SetState Error (16751)
07/19/2019 08:52:17
Notifying DMON of db close
Notifying RSM0 of db close
07/19/2019 08:52:21
Data Guard Broker shutting down
posting shutdown message to primary database 0x01001000
RSM0 successfully terminated
...
Рейтинг: 0 / 0
23.07.2019, 15:49
    #39840577
raul84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
А редактировать сообщения здесь нельзя? :)
...
Рейтинг: 0 / 0
23.07.2019, 15:53
    #39840581
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
Есть предварительный просмотр. Ещё - тэги : fixed, spoiler, некоторые другие
...
Рейтинг: 0 / 0
23.07.2019, 15:53
    #39840582
raul84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
Собственно, на стендбае вот так картина по логам выглядит:

SELECT sequence#, first_time, next_time, applied FROM v$archived_log order by first_time desc

SEQUENCE# FIRST_TIME NEXT_TIME APPLIED
221 2019-07-23 15:48:53 2019-07-23 15:48:59 IN-MEMORY
220 2019-07-23 15:48:17 2019-07-23 15:48:53 YES
219 2019-07-23 15:34:59 2019-07-23 15:48:17 YES
218 2019-07-23 15:03:59 2019-07-23 15:34:59 YES
...
Рейтинг: 0 / 0
23.07.2019, 15:58
    #39840589
Oleg M.Ivanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
А размер редо на примари и на резерве одинаковые?
...
Рейтинг: 0 / 0
23.07.2019, 16:03
    #39840596
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
raul84drcHOST2.log:

07/19/2019 00:08:40
SQL Execution error=604, sql=[ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WAIT WITH SESSION SHUTDOWN]. See error stack below.
ORA-00604: error occurred at recursive SQL level 1
ORA-01196: file 1 is inconsistent due to a failed media recovery session
ORA-01110: data file 1: '/u01/oracle/oradata/host2/system01.dbf'
Sswitchover to primary command failed
А проверь всякие AFTER LOGON/ROLE CHANGE/STARTUP триггера
Нет ли там гадостей
...
Рейтинг: 0 / 0
23.07.2019, 16:09
    #39840606
Oleg M.Ivanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
Вдогонку...
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
--Смотрим как в онлайн идет процесс наката
select * from v$recovery_progress;

select * from v$session_longops where target_desc='Last Applied Redo';

--Смотрим отставание наката на стендбае в днях, часах и минутах
select extract( day from (CAST(last_update_time as timestamp) - CAST(timestamp as timestamp)) ) days,
    extract( hour from (CAST(last_update_time as timestamp) - CAST(timestamp as timestamp)) ) hour,
    extract( minute from (CAST(last_update_time as timestamp) - CAST(timestamp as timestamp)) ) minut 
    from v$session_longops t where target_desc='Last Applied Redo';
...
Рейтинг: 0 / 0
23.07.2019, 16:21
    #39840614
raul84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
Код: plsql
1.
select bytes from v$log 


BYTES
5368709120
5368709120
5368709120
5368709120
5368709120

Они одинаковы и на праймари и на стендбае.

Код: plsql
1.
select * from v$recovery_progress;


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
START_TIME	TYPE	ITEM	UNITS	SOFAR	TOTAL	TIMESTAMP	COMMENTS
2019-07-23 15:47:24	Media Recovery	Active Apply Rate	KB/sec	783	0		
2019-07-23 15:47:24	Media Recovery	Average Apply Rate	KB/sec	1882	0		
2019-07-23 15:47:24	Media Recovery	Maximum Apply Rate	KB/sec	12948	0		
2019-07-23 15:47:24	Media Recovery	Redo Applied	Megabytes	3229	0		
2019-07-23 15:47:24	Media Recovery	Last Applied Redo	SCN+Time	0	0	2019-07-23 16:18:26	SCN: 131985960523
2019-07-23 15:47:24	Media Recovery	Active Time	Seconds	1361	0		
2019-07-23 15:47:24	Media Recovery	Elapsed Time	Seconds	1757	0	

Код: plsql
1.
select * from v$session_longops where target_desc='Last Applied Redo';


Код: plaintext
1.
2.
SID	SERIAL#	OPNAME	TARGET	TARGET_DESC	SOFAR	TOTALWORK	UNITS	START_TIME	LAST_UPDATE_TIME	TIMESTAMP	TIME_REMAINING	ELAPSED_SECONDS	CONTEXT	MESSAGE
944	1	Media Recovery		Last Applied Redo	131986024964	0	SCN+Time	2019-07-23 15:47:24	2019-07-23 16:18:09	2019-07-23 16:19:54		1845	5	Media Recovery: Last Applied Redo : 131986024964 out of 0 SCN+Time done

Код: plsql
1.
2.
3.
4.
select extract( day from (CAST(last_update_time as timestamp) - CAST(timestamp as timestamp)) ) days,
    extract( hour from (CAST(last_update_time as timestamp) - CAST(timestamp as timestamp)) ) hour,
    extract( minute from (CAST(last_update_time as timestamp) - CAST(timestamp as timestamp)) ) minut 
    from v$session_longops t where target_desc='Last Applied Redo';


Код: plaintext
1.
2.
DAYS	HOUR	MINUT
0	0	-1
...
Рейтинг: 0 / 0
23.07.2019, 16:26
    #39840618
raul84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
Вячеслав Любомудров,
триггеров каких-то специфических нет.

Дело в том, что полная история такая:

Был хост, без стендбая. Я сделал для него стендбай. УСПЕШНО перешел на него switchover to XXX.

Затем у теперешнего стендбайного хоста заменилась "железка", т.е. тачка была заново переделана, настроен стендбай. Только вот ОБРАТНЫЙ переход на НОВУЮ тачку не получается из-за этого отставания в 1 лог.

Я к чему - эта база не менялась и не так давно я эту же базу переводил успешно на резерв, а теперь, с заменой хоста - столкнулся с такой ерундой странной. Сверяю уж все настройки - один в один, что мешает - непонятно пока.
...
Рейтинг: 0 / 0
23.07.2019, 16:26
    #39840619
Oleg M.Ivanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
ХМ... Выглядит все красиво. Единственное, почему-то накат вперед убежал по времени. На серверах время одинаковое?
...
Рейтинг: 0 / 0
23.07.2019, 16:38
    #39840626
raul84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
Oleg M.Ivanov,

Спасибо за ценную мысль! На хостах в 1-2 минуты различается время примерно, на уровне ОС, разберемся с этим вопросом и проверим.
...
Рейтинг: 0 / 0
24.07.2019, 09:22
    #39840779
raul84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
Oleg M.Ivanov,

в общем, со временем разобрались, но история еще не закончена.

Запрос на оставание наката показывает всё красиво:
Код: plsql
1.
2.
3.
4.
select extract( day from (CAST(last_update_time as timestamp) - CAST(timestamp as timestamp)) ) days,
    extract( hour from (CAST(last_update_time as timestamp) - CAST(timestamp as timestamp)) ) hour,
    extract( minute from (CAST(last_update_time as timestamp) - CAST(timestamp as timestamp)) ) minut 
    from v$session_longops t where target_desc='Last Applied Redo';



Код: plaintext
1.
DAYS	HOUR	MINUT
0	0	0

Один лог пока остаётся in-memory, если смотреть CHECKPOINT_CHANGE у датафайлов, то как раз видим различия в один лог:

Код: plsql
1.
select CHECKPOINT_CHANGE# from V$DATAFILE_HEADER



на прайме: 132083242186
на стендбае: 132083237301

По идее у них должны быть одинаковые CHECKPOINT_CHANGE на праймари и стендбае после применения всех логов. Когда мы запустим свитчовер он опять будет говорить о неконсистентности между датафайлами праймари и стендбая.
...
Рейтинг: 0 / 0
24.07.2019, 11:04
    #39840835
Oleg M.Ivanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
Уже спрашивал, но ответа не было. Редо файлы на примари и стендбай редо одинакового размера? У меня RTA не работал на одной базе, когда случайно создал на стендбае их другого размера.
Еще момент, не мешают ли активные транзакции?
Код: plsql
1.
2.
3.
4.
--смотрим активные транзакции
select v$session.username, v$session.sid, v$transaction.used_ublk, v$transaction.used_urec
  from v$transaction
  join v$session on v$session.taddr = v$transaction.addr;



Примари сейчас, по-идее, должен показывать:
Код: plsql
1.
2.
3.
4.
5.
SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
--------------------------
TO STANDBY



Неужели после команды на примари
Код: plsql
1.
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;


стендбай так и остается IN-MEMORY ?
...
Рейтинг: 0 / 0
24.07.2019, 11:10
    #39840841
raul84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
1. Почему, я вышел отвечал про редо:

select bytes from v$log

BYTES
5368709120
5368709120
5368709120
5368709120
5368709120

Они одинаковы и на праймари и на стендбае.

2. Активных транзакций нет по запросу

3. ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;

Это прод, я не могу это просто так вот запустить сейчас.
Я пробовал только свитчовер через dgmgrl и тогда ругнулся на консистентность собсна
...
Рейтинг: 0 / 0
24.07.2019, 11:12
    #39840843
raul84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
SELECT SWITCHOVER_STATUS FROM V$DATABASE;

да, на праймари статус - TO STANDBY
на стендбае - NOT ALLOWED
...
Рейтинг: 0 / 0
24.07.2019, 11:25
    #39840854
Oleg M.Ivanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
raul84Это прод, я не могу это просто так вот запустить сейчас.

Видимо, надо договариваться с пользователями и пытаться делать switchover вручную.
...
Рейтинг: 0 / 0
24.07.2019, 11:30
    #39840861
raul84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
да, это уже последний вариант.

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

Совершенно пока не объяснимая с т.з. БД, учитывая что все проверочный запросы и конфигурации не показывают никаких ошибок ДО перехода.
Да и текущая ситуация в целом не ошибочна и чёрт бы с ней, но она мешает переходу.

Дело в том что у меня ни на одной базе нет этой фигни с IN-MEMORY и чтобы он ждал переключения лога.

Сейчас уже хочу включить старый хост (он пока жив), и перенести стендбай туда, проверить как там будет обстановка, ибо с текущим я просто не знаю что делать.
...
Рейтинг: 0 / 0
24.07.2019, 12:15
    #39840899
Oleg M.Ivanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
Да, что-то больше ничего на ум не приходит.

Ради интереса, гляньте, одинаковые ли последовательности показывают на примари и примененные на стендбае?
Код: plsql
1.
2.
3.
SELECT  (SELECT MAX(SEQUENCE#) FROM V$ARCHIVED_LOG 
      WHERE RESETLOGS_CHANGE# IN (SELECT RESETLOGS_CHANGE# FROM V$DATABASE) AND STANDBY_DEST = 'NO') ON_PRIMARY,
    (SELECT MAX(SEQUENCE#)  FROM V$ARCHIVED_LOG WHERE RESETLOGS_CHANGE# IN (SELECT RESETLOGS_CHANGE# FROM V$DATABASE)  AND APPLIED = 'YES' AND STANDBY_DEST = 'YES') APPLIED_ON_STANDBY FROM DUAL;
...
Рейтинг: 0 / 0
24.07.2019, 13:21
    #39840933
raul84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
Код: plaintext
1.
ON_PRIMARY	APPLIED_ON_STANDBY
276	                       275

Собственно вот, 276 находится в IN-MEMORY на стендбае
...
Рейтинг: 0 / 0
24.07.2019, 13:30
    #39840938
dimacrat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Standby. Archivelog status IN-MEMORY
raul84select bytes from v$log

Код: plsql
1.
select bytes from v$standby_log
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle Standby. Archivelog status IN-MEMORY / 25 сообщений из 50, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]