23
Exponat der Staatsbibliothek zu Berlin A lot of people, until they get bitten by data corruption that causes them severe pain, are of the mindset, "I don’t care, I just want it to go fast. I’ve never lost any data." Bill Moore 2007, The future of file systems ORA-01578 Umgang mit Block-Korruptionen DOAG Nürnberg, 17. November 2016 [email protected]

ORA-01578 Umgang mit Block-Korruptionen - twg-it.de file2012-2016 twg-it, alle Rechte vorbehalten ORA-01578, Umgang mit korrupten Blöcken DOAG Nürnberg 2016

  • Upload
    donhan

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

© 2012-2016 twg-it, alle Rechte vorbehalten ORA-01578, Umgang mit korrupten Blöcken DOAG Nürnberg 2016

Exponat der Staatsbibliothek zu Berlin

A lot of people, until they get bitten by data corruption that causes them severe pain, are of the mindset, "I don’t care, I just want it to go fast. I’ve never lost any data." Bill Moore 2007, The future of file systems

ORA-01578

Umgang mit Block-Korruptionen

DOAG Nürnberg, 17. November 2016 [email protected]

© 2012-2016 twg-it, alle Rechte vorbehalten ORA-01578, Umgang mit korrupten Blöcken DOAG Nürnberg 2016

Motivation für das Thema Analyse- und Reparaturverfahren Arten von Blockschäden

db_block_checksum

db_block_checking

db_lost_write_protect

1. Einleitung

2. Früherkennung von Blockkorruptionen verbessern

Agenda

© 2012-2016 twg-it, alle Rechte vorbehalten ORA-01578, Umgang mit korrupten Blöcken DOAG Nürnberg 2016

Backup-Server

Anwendungs- Server

Netzwerkkarte MTU 1500

Storage-Server

512 Byte Dateisystem

Die abenteuerliche und riskante Reise eines Oracle Datenblocks

Mobile Anwender

Datenbank-Server Anwender

vor PC

© 2012-2016 twg-it, alle Rechte vorbehalten ORA-01578, Umgang mit korrupten Blöcken DOAG Nürnberg 2016

1. zertifizierte Kombinationen

2. Prüfsummen, wo möglich

3. Ende-zu-Ende Prüfsummen

4. regelmäßige Validierungen

5. gespiegelte Daten

HARD Initiative Data Integrity Initiative

RMAN Validate Disk Scrubbing Bänder umschreiben

Top 5 Regeln gegen schleichenden Datenverlust

© 2012-2016 twg-it, alle Rechte vorbehalten ORA-01578, Umgang mit korrupten Blöcken DOAG Nürnberg 2016

DBMS_REPAIR

Validierungs-, Analyse- und Reparaturwerkzeuge

DBV analyze table … validate structure cascade

alter system dump …

ORA-1578 Troubleshooting Tool (Doc ID 1567169.1)

DBMS_HM

hcheck.sql - This script is for use mainly under the guidance of Oracle Support. Script to Check for Known Problems in Oracle8i, Oracle9i, Oracle10g, Oracle 11g and Oracle 12c (Doc ID 136697.1)

EVENTS 10231 / 10233 … 16490 … 43810 ... It should *NOT* be used unless explicitly requested …

Log Miner

DATAPUMP Bug 17511071 Datapump expdp silently

skips corrupt block that produce ORA-1578

RMAN report / validate … BMR immer außer: data file header block (block 1) (Doc ID 144911.1)

Troubleshooting Assistant (Doc ID 1543698.2) Get Assistance to understand and solve Oracle Database Server Corruptions

undokumentierte Parameter _allow_resetlogs_corruption

_allow_terminal_recovery_corruption

_allow_read_only_corruption

Troubleshooting Assistant: Handling Block Corruptions in Oracle7/8/8i/9i/10g/11g (Doc ID 1598103.2)

Oracle Service Request …

Handling Oracle Block Corruptions (Doc ID 28814.1)

© 2012-2016 twg-it, alle Rechte vorbehalten ORA-01578, Umgang mit korrupten Blöcken DOAG Nürnberg 2016

Blockkorruptionen kommen in einer unüberschaubaren Vielfalt …

ORA-752 ORA-753 ORA-754 ORA-756 ORA-758 ORA-1410 ORA-1498 ORA-1499 ORA-1578 ORA-8102 ORA-8103 ORA-26040

ORA-600 [4193] ORA-600 [4194] ORA-600 [4512] ORA-600 [4552] ORA-600 [6006] ORA-600 [6101] ORA-600 [6856] ORA-600 [kcbz_check_objd_typ_3] ORA-600 [kdblkcheckerror] ORA-600 [kddummy_blkchk] ORA-600 [ktadrprc-1] ORA-600 [ktbdchk1-bad dscn] ORA-600 [ktsircinfo_num1] ORA-600 [qertbfetchbyrowid]

ORA-600 [12700] ORA-600 [13011] ORA-600 [13013] ORA-600 [13030] ORA-600 [2103] ORA-600 [25012] ORA-600 [25026] ORA-600 [25027] ORA-600 [2662] ORA-600 [3020] ORA-600 [4000] ORA-600 [4097] ORA-600 [4137]

Memory / Controlfile / Redo / Undo / Temp / Index / Tabelle / Partition / LOB

© 2012-2016 twg-it, alle Rechte vorbehalten ORA-01578, Umgang mit korrupten Blöcken DOAG Nürnberg 2016

Unterschiedliche Prüfsummen für unterschiedliche Korruptionsarten

Physische Korruption

Logische Korruption

Korrumpierte Schreibvorgänge

Nologging

© 2012-2016 twg-it, alle Rechte vorbehalten ORA-01578, Umgang mit korrupten Blöcken DOAG Nürnberg 2016

Physischer Defekt auch: physically corrupt fractured incomplete media corrupt

Unterschiedliche Prüfsummen für unterschiedliche Korruptionsarten

db_block_checksum OFF TYPICAL FULL

© 2012-2016 twg-it, alle Rechte vorbehalten ORA-01578, Umgang mit korrupten Blöcken DOAG Nürnberg 2016

Unterschiedliche Prüfsummen für unterschiedliche Korruptionsarten

intra-Block inter-Block

1 2

X 4

1

2

1

X

Unterschiedliche Prüfsummen für unterschiedliche Korruptionsarten

db_block_checking OFF LOW MEDIUM FULL

Logischer Defekt

auch: logically corrupt software corrupt soft corrupt

© 2012-2016 twg-it, alle Rechte vorbehalten ORA-01578, Umgang mit korrupten Blöcken DOAG Nürnberg 2016

Stray Writes auch: lost writes misdirected writes phantom writes torn writes data path corruption parity pollution

1 2

3 4

Unterschiedliche Prüfsummen für unterschiedliche Korruptionsarten

db_lost_write_protect

OFF TYPICAL FULL

© 2012-2016 twg-it, alle Rechte vorbehalten ORA-01578, Umgang mit korrupten Blöcken DOAG Nürnberg 2016

Nologging auch: unrecoverable

1 2

3 4 *

Keine automatische

Warnung

Unterschiedliche Prüfsummen für unterschiedliche Korruptionsarten

RMAN> report unrecoverable; oder Abfragen gegen: v$datafile

v$nonlogged_block v$backup_nonlogged v$copy_nonlogged

© 2012-2016 twg-it, alle Rechte vorbehalten ORA-01578, Umgang mit korrupten Blöcken DOAG Nürnberg 2016

db_block_checksum

db_block_checking

db_lost_write_protect

Force Logging

Physische Korruption

Logische Korruption

Korrumpierte Schreibvorgänge

Nologging

AUS

AUS

AUS

halb an

Unterschiedliche Prüfsummen für unterschiedliche Korruptionsarten

© 2012-2016 twg-it, alle Rechte vorbehalten ORA-01578, Umgang mit korrupten Blöcken DOAG Nürnberg 2016

Empfehlung aus Doc ID 1302539.1: Best Practices for Corruption Detection, Prevention, and Automatic Repair - in a Data Guard Configuration

Was empfiehlt Oracle ?

Vorgaben in 11g/12c: TYPICAL OFF NONE

Oracle empfiehlt und warnt zugleich!

© 2012-2016 twg-it, alle Rechte vorbehalten ORA-01578, Umgang mit korrupten Blöcken DOAG Nürnberg 2016

Performanceeinfluss laut Dokumentation

11g / 12c Oracle Referenz

db_block_checksum

Typical: 1-2%

FULL: 4-5%

db_block_checking

1-10% je nach Workload

... oder höher

bzw. viel höher

db_lost_write_protect

Vernachlässigbar,

evtl. erhöhtes Redoaufkommen

© 2012-2016 twg-it, alle Rechte vorbehalten ORA-01578, Umgang mit korrupten Blöcken DOAG Nürnberg 2016

Bug in 11.2.0.2 (ohne Patches) db_lost_write_protect=TYPICAL

© 2012-2016 twg-it, alle Rechte vorbehalten ORA-01578, Umgang mit korrupten Blöcken DOAG Nürnberg 2016

zwei Tage nach db_block_checking=FULL

Anruf vom Datawarehouse Kollegen: Update-Statement scheint zu stehen

© 2012-2016 twg-it, alle Rechte vorbehalten ORA-01578, Umgang mit korrupten Blöcken DOAG Nürnberg 2016

36 Möglichkeiten und drei Vorgaben – was ist die optimale Kombination?

1. off off none

2. off off typical

3. off off full

4. off low none

5. off low typical

6. off low full

7. off medium none

8. off medium typical

9. off medium full

10.off full none

11.off full typical

12.off full full

13.typical off none

14.typical off typical

15.typical off full

16.typical low none

17.typical low typical

18.typical low full

19.typical medium none

20.typical medium typical

21.typical medium full

22.typical full none

23.typical full typical

24.typical full full

25.full off none

26.full off typical

27.full off full

28.full low none

29.full low typical

30.full low full

31.full medium none

32.full medium typical

33.full medium full

34.full full none

35.full full typical

36.full full full

db_block_checksum db_block_checking db_lost_write_protect

Vorgabe

© 2012-2016 twg-it, alle Rechte vorbehalten ORA-01578, Umgang mit korrupten Blöcken DOAG Nürnberg 2016

Ein kompletter Versuchsdurchlauf dauert zwischen 2 Tagen und 2 Monaten.

alter system ...

drop/create Tabellen

DML

Ressourcen messen

36 x alter system

5 Wiederholungen in unterschiedlicher Reihenfolge

© 2012-2016 twg-it, alle Rechte vorbehalten ORA-01578, Umgang mit korrupten Blöcken DOAG Nürnberg 2016

CPU used by this session

CPU used when call started

DB time

change write time

redo size for lost write detection

redo entries for lost write detection

Sechs signifikante Ressource Zähler

© 2012-2016 twg-it, alle Rechte vorbehalten ORA-01578, Umgang mit korrupten Blöcken DOAG Nürnberg 2016

© 2012-2016 twg-it, alle Rechte vorbehalten ORA-01578, Umgang mit korrupten Blöcken DOAG Nürnberg 2016

IOT_COMPRESS insert append parallel 100.000 Zeilen 10 Mal länger = 1000%

checksum checking lost_wr AVG_HSEC MIN_HSEC MAX_HSEC STDDEV VERSUCHE

-------- -------- -------- -------- -------- -------- ------- --------

OFF OFF NONE 107 105 109 2 5

OFF MEDIUM NONE 297 295 298 2 5

OFF FULL NONE 1056 1043 1066 9 5

OFF FULL TYPICAL 1055 1039 1064 11 5

OFF FULL FULL 1054 1046 1062 7 5

...

TYPICAL OFF NONE 109 107 110 1 5

TYPICAL MEDIUM NONE 298 294 302 3 5

...

TYPICAL MEDIUM FULL 298 295 301 2 5

TYPICAL FULL NONE 1058 1044 1066 9 5

TYPICAL FULL TYPICAL 1065 1054 1071 7 5

TYPICAL FULL FULL 1053 1046 1062 7 5

FULL OFF NONE 117 116 118 1 5

...

FULL LOW TYPICAL 116 114 118 2 5

FULL LOW FULL 115 115 116 0 5

FULL MEDIUM NONE 304 301 307 2 5

FULL MEDIUM TYPICAL 306 304 309 2 5

FULL MEDIUM FULL 304 299 310 4 5

...

FULL FULL FULL 1065 1061 1073 5 5

© 2012-2016 twg-it, alle Rechte vorbehalten ORA-01578, Umgang mit korrupten Blöcken DOAG Nürnberg 2016

Fazit sicherste Einstellung mit geringstem Überraschungspotential

db_block_checksum TYPICAL: ca. 2%

FULL: plus ca. 5% bis 10%

db_lost_write_protect TYPICAL: kein Einfluss auf Laufzeit

db_block_checking LOW: vernachlässigbar

MEDIUM: bis zu 200%, meist unauffällig

FULL: bis zu 1000% Laufzeit, Skalierungsproblem, “nur” Indizes

db_ultra_safe DATA_ONLY

© 2012-2016 twg-it, alle Rechte vorbehalten ORA-01578, Umgang mit korrupten Blöcken DOAG Nürnberg 2016

Exponat der Staatsbibliothek zu Berlin

Die gedruckte Gutenbergbibel ist nach über 500 Jahren noch lesbar

Wie lange wird man ihre digitale Kopie lesen können

!

?