|
|
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Добрый день. Достаточно ли для проверки БД на повреждаения делать фулл бекап, или же периодически нужно запускать VALIDATE DATABASE? Насколько я правильно понял, что если db_block_checksum = TYPICAL, то при чтении каждый раз проверяется контрольная сумма, а т.к. полный бекап читает всю БД целиком, то одновременно проверяются все блоки данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 09:15 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Провел экспермент. 1. На включенной БД через редактор поправил файл данных. 2. Запустил фулл бекап - выполнился без ошибок. select * from v$database_block_corruption ничего не выдал. 3. Запустил VALIDATE DATABASE - нашелся один битый блок. Похоже я заблуждался, думая что обычный бекап выполняет проверку блоков на целостность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 11:42 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
By default, the BACKUP command computes a checksum for each block and stores it in the backup. The BACKUP command ignores the values of DB_BLOCK_CHECKSUM because this initialization parameter applies to datafiles in the database, not backups т.е. считает и сохраняет в бэкапе, но не проверяет. Поэтому validate (database | backup | datafile)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 11:43 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
То есть на этапе создания бекапа никак не проверить базу данных на целостность, если перед бекапом запускать validate database, то будет выполняться двойная работа, что скажется на большом кол-ве операции ввода\вывода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 12:27 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Хотелось бы от коллег услышать кто как защищается от повреждений, так сказать best practice. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 12:41 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Виталий Перевозчиков1. На включенной БД через редактор поправил файл данных. Что именно поправил? Мож этот блок и не бэкапится Или бОльшая часть этого блока не читается в принципе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 12:59 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Прошу прощения, нашел ошибку в своих действиях при проведении тестов. Изменил пустой блок через редактор, а RMAN пропускает пустые блоки. После изменения не пустого блока, при выполнении полного бекапа ошибка проявилась. ORA-19566: exceeded limit of 0 corrupt blocks for file ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 13:02 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Имеется ввиду unused блок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 13:05 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Виталий ПеревозчиковТо есть на этапе создания бекапа никак не проверить базу данных на целостность, если перед бекапом запускать validate database, то будет выполняться двойная работа, что скажется на большом кол-ве операции ввода\вывода. Можно разнести операции : backup validate backup; --или validate backupset ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 13:15 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Достаточно при бэкапе сказать CHECK LOGICAL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 13:19 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Правда, это не поможет при [слегка] битых архивлогах Но если уж совсем нарушен формат блока, что в датафайле, что в архивлоге, обычный бэкап это сразу поймает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 13:21 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
fortnetBy default, the BACKUP command computes a checksum for each block and stores it in the backup. The BACKUP command ignores the values of DB_BLOCK_CHECKSUM because this initialization parameter applies to datafiles in the database, not backups т.е. считает и сохраняет в бэкапе, но не проверяет. Поэтому validate (database | backup | datafile)...Как раз проверяет, как и любой читатель Но может не сохранять. Тут еще есть такой момент -- бэкап не пишет копию блока 1:1 -- он использует знание формата ораклового блока для оптимизации его хранения, не бэкапит неиспользованное место, пишет инкрементальные бэкапы и т.д. Поэтому, КС, которую пишет RMAN при бэкапе, по идее, никак не относится к исходному блоку, а относится к блоку бэкапа. И защищает, соответственно, его Что, собственно, уже и проверяется при VALIDATE BACKUP и RESTORE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 13:39 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровДостаточно при бэкапе сказать CHECK LOGICAL То есть я правильно понял, что для обнаружения физических и логических повреждений достаточно делать бекап с опцией CHECK LOGICAL, к примеру готовая команда: backup check logical incremental level 0 database include current controlfile plus archivelog; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 14:05 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Большую часть физических повреждений определятся и без этого. Ну а CHECK LOGICAL по идее именно и пытается не только блок прочитать (соответствие физического формата, соответствие заголовка и подписи, контрольная сумма) но и читабельность каждой строки, что в табличках, что в индексах Ну, по крайней мере, я так понял Есть еще нота "Top 10 Backup and Recovery Best Practices (Doc ID 388422.1)" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 14:29 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Виталий ПеревозчиковДобрый день. Достаточно ли для проверки БД на повреждаения делать фулл бекап, или же периодически нужно запускать VALIDATE DATABASE? Насколько я правильно понял, что если db_block_checksum = TYPICAL, то при чтении каждый раз проверяется контрольная сумма, а т.к. полный бекап читает всю БД целиком, то одновременно проверяются все блоки данных. Необязательно при бэкапе. Посмотрите DB_BLOCK_CHECKING ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 15:00 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Насколько я понял то DB_BLOCK_CHECKING отличается тем от DB_BLOCK_CHECKSUM тем, что DB_BLOCK_CHECKING отвечает за целостность блока после записи на диск (используя контрольную сумму), а DB_BLOCK_CHECKING отвечает за целостность блока, когда он находится в памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 15:41 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Еще есть смысл включить параметр DB_LOST_WRITE_PROTECT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 15:42 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Ты решил окончательно загрузить свою БД проверкой своей целостности? Ей больше нечем заняться? Периодические проверки своих бэкапов в виде восстановления тестовой БД дадут тебе вполне достаточный уровень контроля качества Еще, конечно, если так заботишься, желателен стендбай И, естественно, использовать сертифицированные операционки (и, что сейчас совсем не трудно) железяки Как правило, этого вполне достаточно для работы как минимум, десятки лет без внутренних повреждений Ежели софт постоянно развивается, используются новые фичи, то отслеживание ошибок в alert.log и соответствующее реагирование (например, правка кода) позволяет безбедно жить даже без техподдержки Надо, кстати, сразу понимать, что система с кучей девяток доступности обязательно требует той самой техподдержки -- и не только в смысле переложения ответственности. Велосипеды здесь неуместны. Просто из-за отсутствия знаний как оно там "внутре". А сломаться может любая програма/железяка, и массив, и память и т.п. Соответственно и насрано в блоке может быть неплохо. Но сдается тут не тот случай. Тогда уж выполняй ежедневный/еженедельный экспорт и уж во что-нибудь ты ее восстановишь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 16:41 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровfortnetBy default, the BACKUP command computes a checksum for each block and stores it in the backup. The BACKUP command ignores the values of DB_BLOCK_CHECKSUM because this initialization parameter applies to datafiles in the database, not backups т.е. считает и сохраняет в бэкапе, но не проверяет. Поэтому validate (database | backup | datafile)...Как раз проверяет, как и любой читатель Но может не сохранять. Тут еще есть такой момент -- бэкап не пишет копию блока 1:1 -- он использует знание формата ораклового блока для оптимизации его хранения, не бэкапит неиспользованное место, пишет инкрементальные бэкапы и т.д. Поэтому, КС, которую пишет RMAN при бэкапе, по идее, никак не относится к исходному блоку, а относится к блоку бэкапа. И защищает, соответственно, его Что, собственно, уже и проверяется при VALIDATE BACKUP и RESTORE <Как раз проверяет, как и любой читатель> А где это можно прочитать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 16:47 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Не за этим ли добавлен VALIDATE? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 16:50 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
fortnet<Как раз проверяет, как и любой читатель> А где это можно прочитать?Это где-то нужно читать? RMAN CHANNEL читает блок как обычный серверный процесс (и если не может получить консистентную, NON-FRACTURED копию блока, перечитывает его, вроде до 5 раз), т.е. и поведение как у обычного серверного процесса Вроде и ноту я приводил, не помню, но вроде там сказано такое Ну и попробуй через BBED (а то и шестнадцатиричным редактором) установить кривую КС для блока в SYSTEM или при установленном DB_BLOCK_CHECKING -- нарвешься на block corruption ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 17:05 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
fortnetНе за этим ли добавлен VALIDATE?Насколько я понимаю -- то же самое, что и просто BACKUP (можно даже с CHECK LOGICAL), только без выходного файла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 17:07 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
SYSTEM не привлекать - у него особый статус. Основываясь на доке остаюсь при своем : VALIDATE - проверка без выполнения бэкапа BACKUP - запись без чтения/проверки контрольной суммы , записанной процессом DBW c записью своей контрольной суммы, если не перебито опцией NOCHECKSUM. BACKUP logical check - проверка всех возможных ошибок в БЭКАПЕ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 17:14 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Так VALIDATE и BACKUP хоть сколько-нибудь идентичны по функционалу? А то судя по последнему сообщению вообще ни разу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 17:19 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Да - вообще ни разу. Они выполняют разные задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 17:24 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
fortnetSYSTEM не привлекать - у него особый статус.Установи соответствующий DB_BLOCK_CHECKING и такой статус появится у всех fortnetОсновываясь на доке остаюсь при своем : VALIDATE - проверка без выполнения бэкапаНо и не более чем просто BACKUP. Можешь также указать ему CHECK LOGICAL fortnetBACKUP - запись без чтения/проверки контрольной суммы , записанной процессом DBW c записью своей контрольной суммы, если не перебито опцией NOCHECKSUM.NOCHECKSUMIf DB_BLOCK_CHECKSUM is typical, then the database computes a checksum for each block during normal operations and stores it in the block before writing it to disk. When the database reads the block from disk later, it recomputes the checksum and compares it to the stored value . If they do not match, then the block is damaged. ... If you specify the NOCHECKSUM option, then RMAN does not perform a checksum of the blocks when writing the backup . fortnetBACKUP logical check - проверка всех возможных ошибок в БЭКАПЕ.CHECK LOGICAL Tests data and index blocks that pass physical corruption checks for logical corruption ... Examples of logical corruption are corruption of a row piece or index entry. If RMAN finds logical corruption, then it logs the block in the alert log and server session trace file. The SET MAXCORRUPT command specifies the total number of physical and logical corruptions permitted in a data file . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 17:31 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровТы решил окончательно загрузить свою БД проверкой своей целостности? Ей больше нечем заняться? Периодические проверки своих бэкапов в виде восстановления тестовой БД дадут тебе вполне достаточный уровень контроля качества Еще, конечно, если так заботишься, желателен стендбай И, естественно, использовать сертифицированные операционки (и, что сейчас совсем не трудно) железяки Как правило, этого вполне достаточно для работы как минимум, десятки лет без внутренних повреждений Ежели софт постоянно развивается, используются новые фичи, то отслеживание ошибок в alert.log и соответствующее реагирование (например, правка кода) позволяет безбедно жить даже без техподдержки Надо, кстати, сразу понимать, что система с кучей девяток доступности обязательно требует той самой техподдержки -- и не только в смысле переложения ответственности. Велосипеды здесь неуместны. Просто из-за отсутствия знаний как оно там "внутре". А сломаться может любая програма/железяка, и массив, и память и т.п. Соответственно и насрано в блоке может быть неплохо. Но сдается тут не тот случай. Тогда уж выполняй ежедневный/еженедельный экспорт и уж во что-нибудь ты ее восстановишь Я и не собирался включать все параметры, просто пытаюсь понять какой необходимый минимум нужен для обеспечения обнаружения повреждений. Стендбай у нас тоже есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 17:34 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровТут еще есть такой момент -- бэкап не пишет копию блока 1:1 -- он использует знание формата ораклового блока для оптимизации его хранения, не бэкапит неиспользованное место, пишет инкрементальные бэкапы и т.д. Поэтому, КС, которую пишет RMAN при бэкапе, по идее, никак не относится к исходному блоку, а относится к блоку бэкапа. И защищает, соответственно, его Что, собственно, уже и проверяется при VALIDATE BACKUP и RESTORE Еще уточню - только при соблюдении нескольких ограничений. Например, с прямым бэкапом на ленту так называемый null compression не пройдет - будет всё записано один в один. Или с командой VALIDATE. ( RMAN Backup Performance (Doc ID 360443.1) Which Blocks Will RMAN Check For Corruption Or Include In A Backupset? (Doc ID 561010.1) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 08:41 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровfortnetSYSTEM не привлекать - у него особый статус.Установи соответствующий DB_BLOCK_CHECKING и такой статус появится у всех fortnetОсновываясь на доке остаюсь при своем : VALIDATE - проверка без выполнения бэкапаНо и не более чем просто BACKUP. Можешь также указать ему CHECK LOGICAL Начиная с 11 версии - VALIDATE может функционировать вообще без привязки с бэкапу. Например, можно проверить избранные блоки в datafile : validate check logical datafile 1 BLOCK 5 TO 20; (How to identify all the Corrupted Objects in the Database with RMAN (Doc ID 472231.1)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 09:02 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
fortnetBACKUP logical check - проверка всех возможных ошибок в БЭКАПЕ.CHECK LOGICAL Tests data and index blocks that pass physical corruption checks for logical corruption ... Examples of logical corruption are corruption of a row piece or index entry. If RMAN finds logical corruption, then it logs the block in the alert log and server session trace file. The SET MAXCORRUPT command specifies the total number of physical and logical corruptions permitted in a data file . The next command checks the complete database for both corruptions in a backup: $ rman target / RMAN> backup check logical database (Identify the Corruption Extension for Block Corruption, Table/Index Inconsistency, Data Dictionary and Lost Writes (Doc ID 836658.1)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 09:08 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Ты путаешь сканирование и выходной файл А также NULL compression (никогда не использовались) и Unused block compression (уже не используется) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 09:22 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
fortnetThe next command checks the complete database for both corruptions in a backup: здесь по-русски будет так: при бэкапе. бэкап как процесс, а не как результат на ленте или диске ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 14:59 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровТут еще есть такой момент -- бэкап не пишет копию блока 1:1 -- он использует знание формата ораклового блока для оптимизации его хранения, не бэкапит неиспользованное место, Вячеслав ЛюбомудровТы путаешь сканирование и выходной файл А также NULL compression (никогда не использовались) и Unused block compression (уже не используется) Ну, пример достаточно экзотичен. Здесь показана NULL compression - которая на нормальной рабочей БД имеет не более 5%. Основная масса приходится на Unused block compression , которая и имеет ограничения в применении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 15:35 |
|
||
|
Проверка целостности БД
|
|||
|---|---|---|---|
|
#18+
Я просто показывал, что это твое утверждение неверно fortnetНапример, с прямым бэкапом на ленту так называемый null compression не пройдет - будет всё записано один в один. Возможно, ты просто описАлся и имел ввиду Unused block compression -- достаточно просто об этом сказать fortnetНу, пример достаточно экзотичен. Здесь показана NULL compression - которая на нормальной рабочей БД имеет не более 5%. Основная масса приходится на Unused block compression , которая и имеет ограничения в применении.Вот это еще интересней. Либо ты не понимаешь, что такое Unused block compression, либо как раз именно у тебя экзотические БД, где достаточно часто происходит TRUNCATE/MOVE постоянных таблиц и REBUILD индексов в новое место. Может ты не в курсе, но в некоторых случаях Unused block compression не работает и при бэкапе на диск Иметь резерв свободного места -- это, как раз, нормально. И NULL compression намного более актуальней, особенно, когда ты не хочешь по каким-то причинам использовать AUTOEXTEND, а добавляешь, например, целиком новый LUN -- тебе становится пофиг, ты знаешь, что размер бэкапа (и время, на него потраченное) при этом не увеличится. Нет, конечно, есть специфические варианты -- типа stage-area, где все подготавливается для массовой загрузки, а потом TRUNCATE-ится. Но, как правило, там и бэкап нафиг не нужен, да и наверняка NOLOGGING на табличном пространстве стоит. Опять же почему не реализовано Unused Block Compression (а также Undo block compression) для "3rd party media managers". Дык это просто политика, точно также как на них не работает "Encrypted Backup". Просто впаривание своего продукта OSB. Технических ограничений для этого нет (в отличии, например, от выполнении BACKUP AS COPY на ленту -- тут уже не важно "3rd party" или OSB) И кстати, то, что не выполняется Unused Block compression позволяет отловить сбойные блоки, которые не относятся к используемым в данный момент. А мож там физическое повреждение на диске и уже пора что-то с этим решать. VALIDATE ведь их тоже пропустит. Единственный вариант -- прогонять время от времени DBVERIFY или отключить Unused block compression (выполнять бэкап на "3rd party media managers", установить гарантированную RP или скрытым параметром) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2017, 10:41 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1886502]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
47ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 337ms |

| 0 / 0 |
