📔
Blog
HOMEPORTFOLIOHIRE MEGITHUB
  • Home
  • 🙇Database
    • Oracle Database
      • 🍏LDOM Oracle VM for SPARC
      • 🍎Oracle Processor Core Factor Table
      • 🍐Check Oracle Error in Alert Log with SQL*Plus
      • 🍊Create Oracle Corrupt Data Block
      • 🍋RMAN Backup Tuning
      • 🍌Install NTP on Oracle Linux
      • 🍉Best Practice Check Tablespace Size on Oracle
      • 🍇Fix Password File Missing on Oracle
      • 🫐Check Oracle Error Message with OERR
      • 🍓Change and Restore Password on Oracle
      • 🍈Fix Oracle could not find Archive Log
      • 🍒Check Database Uptime on Oracle
      • 🍑Fix Oracle Date Format
      • 🥭Identity Column on Oracle
      • 🍍Fix Oracle Service handle not Initialized
      • 🥥GoldenGate Credential Store
      • 🥝Create Auto Increment on Oracle
      • 🍅Recompile Object Invalid on Oracle
      • 🍆Create Database Link on Oracle
      • 🥑Cluster vs Grid
      • 🫒Install DBSAT for Oracle Database 11gR2
      • 🥦Fix Oracle End-of-File on Communication Channel
      • 🥬Fix Oracle Database Out of Memory
      • 🫑Export and Import Oracle Database with Data Pump
      • 🥒Monitor Log Switch each Hour of Day on Oracle with SQL*Plus
      • 🌶️Change Column Format on Oracle with SQL*Plus
      • 🌽Check Version Component on Oracle with SQL*Plus
      • 🥕Check Database Size on Oracle with SQL*Plus
      • 🧄Migrate Oracle Database with RMAN
      • 🧅Fix Enterprise Manager Error OC4J Configuration issue
    • Microsoft SQL Server
      • 💊Backup SQL Server Database with SQL Backup and FTP
      • 💉Backup Full SQL Server with SQL Script
  • 🙇‍♀️INFRASTRUCTURE
    • DNS
      • 📦Fix Ldap Error Search Configuration Naming Context failed
      • 📦Join Domain to Active Directory on Ubuntu 22.04
      • 📦Sender Policy Framework Record
      • 📦Migrate User on Active Directory to Another Domain
      • 📦Fix can’t Delete Object on Active Directory
      • 📦Create Conditional Forwarder DNS on Windows Server 2012 R2
      • 📦Create Stub DNS Zone on Windows Server 2012 R2
      • 📦Domain Permission Admin
      • 📦Domain Model
      • 📦Active Directory ( AD ) 101
    • Network
      • 👥Local Area Network 101
      • 👥Export and Import Session on SecureCRT
      • 👥VPN Protocol
    • Security
      • 🎩Scam Mail
      • 🎩Disable Antivirus Protection on Windows 10
      • 🎩Fix Security Certificate is not Trusted
      • 🎩Best Practice Ransomware Protection
      • 🎩Digital Forensic
      • 🎩Check Installed Patch Compare Vulnerable on Windows 10
    • ISO 27001
      • 🐶Scenario-Based Risk
  • 🙇‍♂️Server
    • Windows Server
      • 👺Upgrade Windows Server 2003 SP2 to Windows Server 2008 R2
      • 👺Best Practice After Install Windows Server
      • 👺Windows Server Product Key
      • 👺How to convert PFX to CRT and KEY File on Windows Server
      • 👺Check Security Windows Application with Winchecksec
      • 👺Fix Internet Explorer Block Website on Windows Server 2019
      • 👺Install Windows Admin Center on Windows Server 2019
    • Linux Server
      • 👿Fix SSH Error: no matching key exchange method found
      • 👿Fix Ubuntu Package Manager Lock: Could not get lock /var/lib/dpkg/lock
      • 👿Install Kali Linux GUI on Windows Subsystem for Linux
      • 👿How to get DateTime History on Linux
      • 👿Change IP and Hostname on Ubuntu 18.04
      • 👿iSCSI Initiator on CentOS 7
      • 👿TMUX Command
      • 👿Create User on Linux
      • 👿Change Username and UID / GID on Linux
    • User
      • 👽OSQuery
      • 👽How to decompress GZIP, BZIP and TAR File on Windows 10
      • 👽Upgrade Windows 10 Version 1803 to 1903
      • 👽Join Windows Insider Program on Windows 10
      • 👽Fix RDP Error Exceeded the Maximum Number of Allowed Connections
      • 👽How to enable DNS over HTTPS on Firefox
  • 🧑‍🍼Software
    • VMware
      • 🌠Fix Deploy OVA Error no Support Hardware Versions on VMware ESXi 6.7
      • 🌠VMware Workstation and VMware ESXi Compatible
      • 🌠Promiscuous Mode and Forged Transmits on VMware vSphere 6.5
      • 🌠Update Patches on VMware ESXi 6.7 with ESXCLI
      • 🌠Fix Alert Hyperthreading Unmitigated on VMware ESXi 6.7
      • 🌠Fix VMware Error Client Session is no Longer Authenticated
      • 🌠Merge AVHDX and VHDX for Convert to VMDK
      • 🌠Convert VMDK to VHDX with Microsoft Virtual Machine Converter
      • 🌠Fix VMware Workstation Device / Credential Guard are not Compatible
      • 🌠Convert VMDK to VHDX with StarWind V2V Converter
    • Veeam Backup
      • 🧊Install Veeam Backup & Replication 11 on Windows
      • 🧊Backup Planning Matrix
      • 🧊Fix Veeam Backup Error Full Backup File Merge Failed
    • ESET
      • 🐕‍🦺Fix can’t Uninstall ESET Management Agent
  • 👩‍🍼Programming
    • Fundamental
      • 🔵ID Token vs Access Token
      • 🔴NULL vs NOT NULL
      • 🟣Microsoft Universal Data Access
      • 🟡Flow Graph Aptitude Test
      • 🟠C Pyramid – Part I
      • 🟤C Pyramid – Part II
      • ⚪JSON Web Token
      • 🟦Memory Architecture
    • Tools
      • AI Tools
        • ❤️Generative AI Tools
        • 💙Prompt Tools
        • 💚Dataset Tools
      • Extension Tools
        • ❄️Top Extension Microsoft Edge
        • ❄️Top Extension Visual Studio Code
      • Other Tools
        • 🚗Business Tools
        • 🚕CI/CD Tools
        • 🚙Design Tools
        • 🛻Freelance Tools
        • 🚌Hands-On Lab Tools
        • 🚎Productive Tools
        • 🏎️Programming Tools
        • 🚓SEO Tools
        • 🚑Mac Tools
      • Package Tools
        • 🧶Top NuGet Package .NET Core
      • Visual Studio Code
        • 🌑How to show Folder .git in Visual Studio Code
        • 🌑Fix CMake not Found Visual Studio
        • 🌑Backup Extension for Visual Studio Code
    • Python
      • Poetry
        • 🐍Poetry Virtual Environment Command
    • PHP
      • Laravel
        • 🍂Laravel Redis Key-Value Store
    • .NET Core
      • 🐹.NET Core Automatic Code Review with SonarQube
      • 🐹.NET Core Disable Authentication in Development Environment
      • 🐹Overview .NET Core
  • 👨‍🍼Other
    • Blog
      • 🎃Blog Dell
      • 🎃Blog Gitbook
      • 🎃Blog Network
    • Big Data
      • 🐱Big Data ของกระทรวงสาธารณสุข
    • Chat Bot
      • Chatfuel
        • 🍭Facebook Chatbot with Chatfuel
      • Dialogflow
        • ⛱️Dialogflow Connect Multiple Firebase Realtime Database
        • ⛱️Chatbot with Dialogflow and Firebase Realtime Database
    • Docker
      • 🐳How to Trust Sign Image on Docker
      • 🐳Upgrade Docker Compose
      • 🐳Install Nginx-RTMP and FSTV-Monitor on Docker
    • Machine Learning
      • 🧤PC SPEC for Deep Learning 2021
      • 🧤Install YOLO Object Detection on Windows 10
      • 🧤Thai Natural Language Processing with Python
      • 🧤Install Tensorflow with GPU on Windows 10
      • 🧤PC SPEC for Deep Learning 2019
      • 🧤Speech to Text with Google API
      • 🧤CUDA-Z
      • 🧤DVC Version Control for Machine Learning
    • Standard
      • 🧬Digital ID
      • 💻Computer Naming Convention
      • 🎁มาตรฐานข้อมูลกลาง
    • Policy
      • 🍔GDPR & PDPA
      • 🍟TDPG 2.0
      • 🍕Cookie Consent
    • WSL
      • 🧿How to move Distribution Data WSL to new Location
      • 🧿Export and Import Distro on Windows Subsystem for Linux
      • 🧿Install Docker on Windows Subsystem for Linux
  • 🧙‍♂️MICROSOFT 365
    • Outlook
      • 📩How to enable Forward Email on Microsoft Office 365 to Another Domain
      • 📩Fix Mailbox Storage Limit on Microsoft Office 365 with Compliance Search
      • 📩Fix can’t Search Thai Language on Microsoft Outlook
    • Power Automate
      • 🤖How to Rename all Files in Folder use UUID with Power Automate Desktop
      • 🤖How to get SharePoint List Comment with Power Automate
      • 🤖How to post Approve Comment to SharePoint List with Power Automate
      • 🤖Generate Unique ID when Submit Microsoft Form with Power Automate
      • 🤖Notification Maintenance when SharePoint List Create with Power Automate
      • 🤖Send Email and Share File Word Document with Power Automate
      • 🤖Generate Word Document when Submit Microsoft Form with Power Automate
Powered by GitBook
On this page
  • Requirement
  • Get Started
  • Solution 1
  • Solution 2
  • Solution 3

Was this helpful?

  1. Database
  2. Oracle Database

Create Oracle Corrupt Data Block

Last updated 1 year ago

Was this helpful?

ในกรณีที่เกิด Corrupt Data Block บน Oracle เราสามารถทำการ Recovery Data File ได้ จากไฟล์ Backup ของ RMAN ซึ่งเราจะมาจำลองการเกิด Corrupt Data Block ขึ้น ด้วยการ Change Seek ผ่านทาง dd command บน Linux

Requirement

  • Create Database with Sample Schema ( )

  • Enable Archive Log

Get Started

  • ทำการ Connect Database ด้วย SQL*Plus

$
sqlplus / as sysdba
  • ทำการ Create Tablespace

SQL>
create tablespace corrupt datafile '/u01/app/oracle/oradata/ORCL/corrupt.dbf' size 100m ;
  • ทำการ Create User Corrupt

SQL>
create user corrupt identified by corrupt ;
  • ทำการ Change Default Tablespace

SQL>
alter user corrupt default tablespace corrupt ;
  • ทำการ Grant Privilege

SQL>
grant create session, resource to corrupt ;
  • ทำการ Connect Database ด้วย User Corrupt

SQL>
connect corrupt/corrupt ;
  • ทำการ Create Table Employee

SQL>
create table emp(eno number(30)) ;
SQL>
begin
for i in 1..10000
loop
insert into emp values(i) ;
end loop ;
end ;
/
PL/SQL procedure successfully completed.
  • ทำการ Count Rows ใน Table Employee

SQL>
select count(*) from emp ;
  COUNT(*)
----------
     10000
  • ทำการตรวจสอบ Schema

RMAN>
report schema ;
  • ทำการ Backup Tablespace Corrupt

RMAN>
backup tablespace corrupt ;
  • ทำการ Query Header Block ใน Table DBA Segment

SQL>
select header_block from dba_segments where segment_name = 'EMP' ;
HEADER_BLOCK
------------
         130
  • ทำการ Corrupt Data Block

$
dd of=/u01/app/oracle/oradata/ORCL/corrupt.dbf bs=8192 conv=notrunc seek=131 << EOF
> testing corruption
> EOF
0+1 records in
0+1 records out
19 bytes (19 B) copied, 0.000231208 s, 82.2 kB/s
  • ทำการ Flush Buffer Cache

SQL>
alter system flush buffer_cache ;
  • ทำการ Connect Database ด้วย User Corrupt

SQL>
connect corrupt/corrupt ;
  • ทำการ Query Data ใน Table Employee จะเห็นว่า Oracle Error

SQL>
select count(*) from emp ;
select count(*) from emp
                     *
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 6, block # 131)
ORA-01110: data file 6: '/u01/app/oracle/oradata/ORCL/corrupt.dbfcode

Solution 1

  • ทำการตรวจสอบด้วย Data Recovery Advisor

RMAN>
list failure ;
RMAN>
advise failure ;
List of Database Failures
=========================

Failure ID Priority Status    Time Detected Summary
---------- -------- --------- ------------- -------
182        HIGH     OPEN      27-NOV-20     Datafile 6: '/u01/app/oracle/oradata/ORCL/corrupt.dbf' contains one or more corrupt blocks

analyzing automatic repair options; this may take some time
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=133 device type=DISK
analyzing automatic repair options complete

Mandatory Manual Actions
========================
no manual actions available

Optional Manual Actions
=======================
no manual actions available

Automated Repair Options
========================
Option Repair Description
------ ------------------
1      Perform block media recovery of block 131 in file 6
  Strategy: The repair includes complete media recovery with no data loss
  Repair script: /u01/app/oracle/diag/rdbms/orcl/ORCL/hm/reco_4277806215.hm
  • ทำการ Recovery Data Block

RMAN>
repair failure ;
Strategy: The repair includes complete media recovery with no data loss
Repair script: /u01/app/oracle/diag/rdbms/orcl/ORCL/hm/reco_4277806215.hm

contents of repair script:
   # block media recovery
   recover datafile 6 block 131;

Do you really want to execute the above repair (enter YES or NO)? YES
executing repair script

Starting recover at 27-NOV-20
using channel ORA_DISK_1

channel ORA_DISK_1: restoring block(s)
channel ORA_DISK_1: specifying block(s) to restore from backup set
restoring blocks of datafile 00006
channel ORA_DISK_1: reading from backup piece /u01/app/oracle/fast_recovery_area/ORCL/backupset/2020_11_27/o1_mf_nnndf_TAG20201127T154218_hw1gzc5z_.bkp
channel ORA_DISK_1: piece handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2020_11_27/o1_mf_nnndf_TAG20201127T154218_hw1gzc5z_.bkp tag=TAG20201127T154218
channel ORA_DISK_1: restored block(s) from backup piece 1
channel ORA_DISK_1: block restore complete, elapsed time: 00:00:01

starting media recovery

Solution 2

  • ทำการตรวจสอบด้วย DBVERIFY

$
dbv file=/u01/app/oracle/oradata/ORCL/corrupt.dbf blocksize=8192
DBVERIFY: Release 11.2.0.2.0 - Production on Fri Nov 27 15:53:11 2020

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

DBVERIFY - Verification starting : FILE = /u01/app/oracle/oradata/ORCL/corrupt.dbf
Page 131 is marked corrupt
Corrupt block relative dba: 0x01800083 (file 6, block 131)
Bad header found during dbv:
Data in bad block:
 type: 116 format: 5 rdba: 0x20676e69
 last change scn: 0x7075.72726f63 seq: 0x74 flg: 0x69
 spare1: 0x73 spare2: 0x74 spare3: 0xa
 consistency value in tail: 0xaed20601
 check value in block header: 0x6e6f
 block checksum disabled



DBVERIFY - Verification complete

Total Pages Examined         : 12800
Total Pages Processed (Data) : 19
Total Pages Failing   (Data) : 0
Total Pages Processed (Index): 0
Total Pages Failing   (Index): 0
Total Pages Processed (Other): 131
Total Pages Processed (Seg)  : 0
Total Pages Failing   (Seg)  : 0
Total Pages Empty            : 12649
Total Pages Marked Corrupt   : 1
Total Pages Influx           : 0
Total Pages Encrypted        : 0
Highest block SCN            : 1028466 (0.1028466)
  • ทำการ Recovery Data Block

RMAN>
blockrecover datafile 6 block 131 ;
  • ทำการ Validate Tablespace

RMAN>
backup validate tablespace corrupt ;

Solution 3

  • ไม่ต้องตรวจสอบเอง ให้ RMAN ทำการ Validate พร้อมทำการ Recovery ไปเลย

RMAN>
run {
backup validate database ;
blockrecover corruption list ;
}
  • ทำการ Connect Database ด้วย User Corrupt

SQL>
connect corrupt/corrupt ;
  • ลองทำการ Query Data ใน Table Employee อีกครั้งหนึ่ง

SQL>
select count(*) from emp ;
  COUNT(*)
----------
     10000

อ่านเพิ่มเติม :

🙇
🍊
Schema Diagrams
https://bit.ly/3o32RI6