Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> डेटाबेस

Oracle डेटाबेस में ब्लॉक करप्शन ठीक करना: चरण-दर-चरण रिकवरी

ब्लॉक करप्शन ढूंढें और ठीक करें

निम्न छवि एक संभावित ब्लॉक करप्शन दिखाती है।

करप्शन ढूंढें

करप्शन ढूंढने के लिए, निम्नलिखित कमांड निष्पादित करें:

SQL> select * from V$DATABASE_BLOCK_CORRUPTION;
FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTION
----- ---------- ---------- ------------------ ----------
352 173191 9 0 ALL ZERO

SQL> SELECT FILE_ID,RELATIVE_FNO,FILE_NAME,TABLESPACE_NAME FROM DBA_DATA_FILES WHERE FILE_ID=352;
FILE_ID RELATIVE_FNO FILE_NAME TABLESPACE_NAME
---------- ------------ -------------------------------------------------- ------------------
352 352 /u01/apps_st/samusxxxxxxxx_data2/system09.dbf SYSTEM

SQL> SELECT owner, segment_name, segment_type FROM dba_extents WHERE RELATIVE_FNO = 352 AND Block_id BETWEEN 173191 AND 173191 + blocks - 1;
OWNER SEGMENT_NAME SEGMENT_TYPE
-------- --------------- ------------------
SYS I_COL3 INDEX
SYS C_OBJ# CLUSTER

नोट: इस मामले में, SYS ऑब्जेक्ट सेगमेंट I_COL3 में ब्लॉक करप्शन है। dbv कमांड द्वारा रिपोर्ट किया गया भ्रष्ट ब्लॉक dba_free_space व्यू में फ्री के रूप में दिखाया गया है।

ब्लॉक्स मुक्त करें

फाइल 352 के लिए ब्लॉक्स को मुक्त करने के लिए, निम्नलिखित कमांड निष्पादित करें:

SQL> select * from V$DATABASE_BLOCK_CORRUPTION;
FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTION
----- ---------- ---------- ------------------ ----------
352 173191 9 0 ALL ZERO

SQL> Select * from dba_free_space where file_id =352 and 173191 between block_id and block_id + blocks -1;
TABLESPACE_NAME FILE_ID BLOCK_ID BYTES BLOCKS RELATIVE_FNO
--------------- ------- -------- ----- ---------- ------------
SYSTEM 352 173191 73728 9 352

ब्लॉक्स को फोर्स क्लियर करें

ब्लॉक्स मुक्त होने के बाद, आप उन भ्रष्ट ब्लॉक्स को फोर्स क्लियर करने के लिए निम्नलिखित कमांड का उपयोग कर सकते हैं। इसे उन भ्रष्ट ब्लॉक्स को फ़ॉर्मेट करने के रूप में भी जाना जाता है जो किसी सेगमेंट का हिस्सा नहीं हैं।

1. एक उपयोगकर्ता बनाएं और डेटाबेस तक पहुंच प्रदान करें।
create user Scott identified by password default tablespace SYSTEM;
grant resource, connect, create table, create trigger to Scott;
2. डेटा फ़ाइल के विरुद्ध भ्रष्ट ब्लॉक की पहचान करें
[Thu Nov 17 11:59:19 orbdev@samusxxxxxxxx:~ ] $ dbv file='/mnt/apps_st/samusxxxxxxxx_data2/system09.dbf' userid=sys/xxxxx
DBVERIFY: Release 11.2.0.4.0 - Production on Thu Nov 17 11:59:21 2016
...
Page 173191 is marked corrupt
Corrupt block relative dba: 0x5802a487 (file 352, block 173191)
Completely zero block found during dbv:
...
Total Pages Marked Corrupt : 9
3. फ्री स्पेस ढूंढें
Select * from dba_free_space where file_id=  and  between block_id and block_id + blocks -1;
SQL> Select * from dba_free_space where file_id=352 and 173191 between block_id and block_id + blocks -1;
TABLESPACE_NAME FILE_ID BLOCK_ID BYTES BLOCKS RELATIVE_FNO
--------------- ---------- ---------- ---------- --------- ------------
SYSTEM 352 173196 73728 9 352
4. पहला भ्रष्ट ब्लॉक रीफॉर्मेट करें

चरण 4 को तब तक दोहराएं जब तक सभी भ्रष्ट ब्लॉक रीफॉर्मेट न हो जाएं।

create table scott.s (n number,c varchar2(4000)) nologging tablespace SYSTEM;
select owner,table_name,tablespace_name from dba_tables where table_name='S';
SQL> CREATE OR REPLACE TRIGGER corrupt_trigger AFTER INSERT ON scott.s REFERENCING OLD AS p_old NEW AS new_p FOR EACH ROW
DECLARE corrupt EXCEPTION;
BEGIN
IF (dbms_rowid.rowid_block_number(:new_p.rowid)=&blocknumber) and (dbms_rowid.rowid_relative_fno(:new_p.rowid)=&filenumber) THEN
RAISE corrupt;
END IF;
EXCEPTION
WHEN corrupt THEN
RAISE_APPLICATION_ERROR(-20000, 'Corrupt block has been formatted');
END;
/
Enter value for blocknumber: 173191
...
Trigger created.
Select BYTES/1024/1024 from dba_free_space where file_id=352 and 173191 between block_id and block_id + blocks -1;
72K
SQL> BEGIN
FOR i IN 1..100000 LOOP
EXECUTE IMMEDIATE 'alter table scott.s allocate extent (DATAFILE '||'''/mnt/apps_st/samusxxxxxxxx_data2/system09.dbf''' ||'SIZE 72K)';
END LOOP;
END;
/
SQL> BEGIN
FOR i IN 1..1000000 LOOP
INSERT /*+ APPEND */ INTO scott.s select i, lpad('REFORMAT',3092, 'R') from dual;
commit ;
END LOOP;
END;
/
SQL> Select * from v$database_block_corruption;
no rows selected
DROP TABLE scott.s;
Alter system switch logfile;
Alter system checkpoint;
DROP trigger corrupt_trigger;
5. सत्यापित करें कि भ्रष्ट ब्लॉक ठीक हो गए हैं
SQL> select * from V$DATABASE_BLOCK_CORRUPTION;
no rows selected
[Wed Nov 16 08:12:37 orbdev@samusxxxxxx:~ ] $ dbv file='/mnt/apps_st/samusxxxxxx_data2/system09.dbf' userid=sys/****
DBVERIFY: Release 11.2.0.4.0 - Production on Wed Nov 16 08:12:41 2016
...
Total Pages Marked Corrupt : 0

निष्कर्ष

डेटा करप्शन का पता लगाने और रोकने के लिए, निम्नलिखित अधिकतम उपलब्धता आर्किटेक्चर (MAA) सर्वोत्तम प्रथाओं को निष्पादित करें:

  • Oracle Data Guard का उपयोग करें।
  • Oracle डेटाबेस ब्लॉक करप्शन डिटेक्शन पैरामीटर सेट करें।
  • रिकवरी मैनेजर (RMAN) के साथ बैकअप और रिकवरी रणनीति लागू करें।

ये उच्च उपलब्धता समाधान Oracle डेटाबेस के साथ एकीकृत हैं और अंतर्निहित डेटा संरचनाओं का लाभ उठाते हैं। इस प्रकार, उपकरण बुद्धिमान डेटा सुरक्षा और आपदा पुनर्प्राप्ति का एक नया वर्ग प्रदान करते हैं।

  1. Oracle 19c: डेटाबेस प्रशासकों के लिए उन्नत सुविधाएं Oracle 19c: डेटाबेस प्रशासकों के लिए उन्नत सुविधाएं

    Oracle® Database संस्करण 19c ने नई और बेहतर सुविधाओं की एक श्रृंखला पेश की। परिचय Oracle 19c, लंबी अवधि के समर्थन के साथ Oracle Database 12c रिलीज़ 2 उत्पाद परिवार में अंतिम है। यह Linux®, Windows®, Solaris®, HP/UX®, और AIX® प्लेटफॉर्म के साथ-साथ Oracle Cloud पर उपलब्ध है। Oracle 19c ग्राहकों को उनक

  1. विंडोज 10 में विंडोज अपडेट डेटाबेस करप्शन त्रुटि ठीक करें - चरण-दर-चरण समाधान विंडोज 10 में विंडोज अपडेट डेटाबेस करप्शन त्रुटि ठीक करें - चरण-दर-चरण समाधान

    विंडोज अपडेट डेटाबेस करप्शन त्रुटि ठीक करें: विंडोज 10 अपडेट करते समय आपका अपडेट अटक सकता है या आप विंडोज अपडेट डेटाबेस करप्शन त्रुटि के कारण अपने विंडोज को अपडेट नहीं कर पाएंगे। आप इस त्रुटि का पता केवल विंडो अपडेट समस्या निवारक चलाने पर लगा पाएंगे, जबकि कुछ मामलों में समस्या निवारक विंडोज अपडेट स

  1. विंडोज 10 पर भ्रष्ट प्रोग्राम को ठीक करें या हटाएं: चरण-दर-चरण मार्गदर्शिका विंडोज 10 पर भ्रष्ट प्रोग्राम को ठीक करें या हटाएं: चरण-दर-चरण मार्गदर्शिका

    विंडोज 10 का वातावरण प्रोग्राम और एप्लिकेशन से भरा हुआ है। विंडोज 10 पर ढेर सारे ऐप्स और प्रोग्राम लोड होते हैं जो हमारे अनुभव को आनंददायक बनाते हैं। लेकिन कुछ समय ऐसे भी होते हैं जब कोई खास ऐप अचानक क्रैश हो जाता है और हमें पता नहीं होता कि क्यों। खैर, बेशक विंडोज तुरंत रिपेयर प्रोग्राम विंडो खोल द