ต่อไปนี้เป็นกราฟิกสั้นที่ฉันจะใช้เพื่ออธิบายเมื่อเด็กกำพร้าถูกสร้างขึ้นในสาขาของฐานข้อมูล มันเป็นรูปแบบของกราฟิกที่ฉันใช้อธิบายการแปลงชาติในคำตอบของคำถามที่ทุกคนสามารถอธิบายแนวคิด "การเกิดใหม่" ในฐานข้อมูล Oracle ในวิธีที่ง่ายต่อการเข้าใจหรือไม่
ฉันหวังว่าคุณจะสนุกกับการเดินทาง
restore db +-----+ +-----+ +-----+
recover db | 2>3 | --> | 3 | --> | 3 | --> ...
resetlogs +-----+ +-----+ +-----+ ^
^ Incarn 3 3 | 3
/ SCN # 500 600 | 700
/ |
/ |
restore db +-----+ +-----+ +-----+ |
recover db | 1>2 | -------> | 2 | --> | 2 | --> ... |
resetlogs +-----+ +-----+ +-----+ ^ |
^ Incarn. 2 \ 2 | 2 |
/ SCN # 300 \ 400 | 500 |
/ \ | |
/ + --------------------+ |
+-----+ +-----+ +-----+ | \ +-----+ | +-----+
--> | 1 | --> | 1 | --> | 1 | --> ... | +-> | 2>4 | --> | 4 |
+-----+ +-----+ +-----+ ^ | restore db +-----+ | +-----+
Incarn. 1 1 1 | 1 2 | recover db | 4
SCN # 100 200 300 | 400 400 | resetlogs | 400
| | |
Backup 11:00 ----- 12:00 ----- 13:00 ----- 14:00 ----- 15:00 ----- 16:00 ----- 17:00 ----- 18:00
| | |
Restore/ (1) (2) (3)
Recovery
การคืนค่าฐานข้อมูลให้ตรงเวลา (1)
บางคนเล็กน้อยหลังจาก 13:00 น. (13:00 น.) ใครบางคนตัดสินใจว่าฐานข้อมูลจะต้องมีการคืนค่าเป็น 12:00 (เที่ยงวัน 12 นาฬิกา) DBA จะตั้งค่าคำสั่ง RMAN จำนวนมากเพื่อกู้คืนฐานข้อมูลไปยังจุดนั้นหรือคลิกผ่านทาง GUI ที่ยอดเยี่ยมเพื่อเริ่มต้นการกู้คืน / กู้คืนจากผู้ขายบุคคลที่สาม
RMAN ดึงการสำรองข้อมูลแบบเต็มของฐานข้อมูลและการสำรองข้อมูลแฟ้มบันทึกถาวรทั้งหมดจากดิสก์ / เทปและเรียกคืนไปยังดิสก์ ในขั้นตอนการกู้คืน RMAN จะตรวจสอบว่ามีข้อมูลที่เกี่ยวข้องทั้งหมดและย้อนกลับธุรกรรมที่เสร็จสิ้นทั้งหมดไปยังจุดในเวลาและย้อนกลับธุรกรรมที่ยังไม่เสร็จทั้งหมดไปยังจุดในเวลาเพื่อให้มั่นใจว่าฐานข้อมูลอยู่ในสถานะที่สอดคล้องกัน
ก่อนที่จะสามารถเปิดฐานข้อมูลสู่สาธารณะทั่วไปฐานข้อมูลได้เพื่อให้แน่ใจว่าการสำรองข้อมูลในอนาคตทั้งหมดไม่ขัดแย้งกับการสำรองข้อมูลก่อนหน้า นี่คือเมื่อมีการสร้างชาติใหม่และจะเกิดขึ้นเมื่อคุณดำเนินการคำสั่งต่อไปนี้เพื่อเปิดฐานข้อมูล:
ALTER DATABASE OPEN RESETLOGS;
คุณสามารถเรียกใช้สคริปต์ต่อไปนี้กับอินสแตนซ์ของคุณเพื่อดึงมุมมองแบบลำดับชั้นของสาขา (ปัจจุบัน) ของคุณ:
set pages 50 --- repeat header every 50 records
set lines 230 --- set lines(ize) length to 230
column path format a40 --- set column path to alpha-numeric 40
alter sessiosn set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
--- set date format of date columns to something more detailed
select
INCARNATION#,
PRIOR_INCARNATION#,
RESETLOGS_CHANGE#,
RESETLOGS_TIME,
STATUS,
SYS_CONNECT_BY_PATH(INCARNATION#, ' -> ') Path
FROM v$database_incarnation
WHERE LEVEL >=1 START WITH INCARNATION# = '1'
CONNECT BY PRIOR INCARNATION# = PRIOR_INCARNATION#
ORDER BY LEVEL, Path, RESETLOGS_TIME;
การจุติของฐานข้อมูลในปัจจุบันจะคล้ายกับสิ่งนี้:
INCARNATION# PRIOR_INCARNATION# RESETLOGS_CHANGE# RESETLOGS_TIME STATUS PATH
------------ ------------------ ----------------- ------------------- ------- --------------------
1 0 1 2017-03-08 15:57:31 PARENT -> 1
2 1 200 2018-07-27 13:20:00 CURRENT -> 1 -> 2
การใช้กราฟิกเราจะเห็นว่าเราได้ย้ายจากเส้นทางที่มีการจุติ 1 ไปยังเส้นทางที่มีการจุติมา 2 เพราะเราได้เปิดฐานข้อมูลด้วยRESETLOGS
และฐานข้อมูลได้สร้างชาติใหม่
การคืนค่าฐานข้อมูลให้ตรงเวลา (2)
สมมติว่าฐานข้อมูลยังคงทำงานต่อไปหลังจากการดำเนินการกู้คืน / กู้คืนแรกและหลังจาก 15:00 น. (15:00 น.) มีคนตัดสินใจว่าจำเป็นต้องมีการกู้คืน / กู้คืนใหม่กลับสู่ชั่วโมงเต็มเวลา 15:00 น. (15:00) ในวันเดียวกัน
RMAN จะกู้คืนไฟล์กู้คืนฐานข้อมูลและตั้งค่าปิดALTER DATABASE OPEN RESETLOGS
เพื่อให้ฐานข้อมูลกลับสู่สถานะออนไลน์ INCARNATION # จะถูกตั้งค่าเป็น 3 และการสำรองข้อมูลครั้งแรกที่ 16:00 จะมีข้อมูล:
INCARNATION# 3
SCN# 500
Time......... 16:00
หากเราค้นหาสาขาในฐานข้อมูลโดยใช้สคริปต์ด้านบนเราจะได้รับสิ่งนี้:
INCARNATION# PRIOR_INCARNATION# RESETLOGS_CHANGE# RESETLOGS_TIME STATUS PATH
------------ ------------------ ----------------- ------------------- ------- --------------------
1 0 1 2017-03-08 15:57:31 PARENT -> 1
2 1 200 2018-07-27 13:20:00 PARENT -> 1 -> 2
3 2 400 2018-07-27 15:20:00 CURRENT -> 1 -> 2 -> 3
การคืนค่าฐานข้อมูลให้ตรงเวลา (3)
สมมติว่าฐานข้อมูลยังคงทำงานต่อไปหลังจากการดำเนินการกู้คืน / กู้คืนครั้งที่สองและเล็กน้อยหลังจาก 17:00 (5pm) ใครบางคนตัดสินใจว่าจำเป็นต้องมีการกู้คืน / กู้คืนใหม่กลับไปที่ 14:00 (2:00) ในวันเดียวกัน
RMAN จะกู้คืนไฟล์กู้คืนฐานข้อมูลและปิดALTER DATABASE OPEN RESETLOGS
เพื่อนำฐานข้อมูลกลับมาออนไลน์ INCARNATION # จะถูกตั้งค่าเป็น 4 และการสำรองข้อมูลครั้งแรกเวลา 18:00 น. จะมีข้อมูล:
INCARNATION# 4
SCN# 400
Time......... 18:00
หากเราค้นหาสาขาในฐานข้อมูลโดยใช้สคริปต์ด้านบนเราจะได้รับสิ่งนี้:
INCARNATION# PRIOR_INCARNATION# RESETLOGS_CHANGE# RESETLOGS_TIME STATUS PATH
------------ ------------------ ----------------- ------------------- ------- --------------------
1 0 1 2017-03-08 15:57:31 PARENT -> 1
2 1 200 2018-07-16 13:20:00 PARENT -> 1 -> 2
3 2 400 2018-07-17 15:20:00 ORPHAN -> 1 -> 2 -> 3
4 2 300 2018-07-17 17:20:00 CURRENT -> 1 -> 2 -> 4
เกิดอะไรขึ้น? เรามีเด็กกำพร้า!
แปลงร่างกำพร้า ...
หากคุณดูกราฟิกเรากำลังยืนอยู่บนจัตุรัสเวลา 18:00 น. (18:00 น.) ด้วยการจุติจุติ 4 และ SCN 400 ตอนนี้ถ้าคุณตามเส้นนั้นกลับไปที่จุดเริ่มต้นคุณจะเห็นว่าเราจะไปจากชาติ 4 back up to incarnation 2 จากนั้นกลับไปที่ incarnation 1 ซึ่งเป็นเวลาที่สร้างฐานข้อมูล
สิ่งนี้ยังสอดคล้องกับเอาต์พุต (เรียบง่าย) ของสคริปต์ของฉัน
INCARNATION# PRIOR_INCARNATION# RESETLOGS_CHANGE# RESETLOGS_TIME STATUS PATH
------------ ------------------ ----------------- ------------------- ------- --------------------
4 2 300 2018-07-17 17:20:00 CURRENT -> 1 -> 2 -> 4
แล้วเกิดอะไรขึ้นกับการจุติ 3 การจุติมาต 3 เป็นสิ่งที่ไม่ดีหรือเหม็นอับหรือมีอะไรให้?
ตอบ
ไม่การจุติที่ 3 นั้นไม่เลวเลยมันเป็นแค่เด็กกำพร้า
ในระดับที่ใหญ่ขึ้นด้วยเวลาที่มากขึ้นระหว่างการสำรองและกู้คืนคุณยังคงสามารถเรียกคืน / กู้คืนฐานข้อมูลกลับไปยังจุดในช่วงเวลาของการเกิดจุติ 3 คุณจะต้องปิดคำสั่งต่อไปนี้:
RESET DATABASE TO INCARNATION 3;
... จากนั้นกู้คืน / กู้คืนฐานข้อมูลไปยังจุดนั้นในเวลาเช่นเดียวกับที่คุณต้องการกู้คืน / กู้คืนฐานข้อมูล
สิ่งที่ORPHAN
สถานะไม่บอกคุณว่าชาติที่ 3 เป็นเรื่องที่เกี่ยวข้องไม่มีสถานะปัจจุบันของฐานข้อมูลที่มีชาติปัจจุบัน 4. กำพร้าชาติ 3 ไม่จำเป็นที่จะเรียกคืน / กู้คืนฐานข้อมูลตามระยะเวลาปัจจุบัน
... ส่งผลให้เกิดการสำรองข้อมูลที่ล้าสมัย
ตอนนี้ดูที่การสำรองฐานข้อมูลที่เกี่ยวข้องกับการเกิดใหม่ของเด็กกำพร้าดี RMAN กำหนดว่าการสำรองข้อมูลขององค์กรที่กำพร้ากำพร้าเป็น OBSOLETE แต่นั่นเป็นเรื่องราวสำหรับ Q & A ที่แตกต่างกัน ...