Aşağıda, bir veritabanının enkarnasyonlarında yetimlerin ne zaman yaratıldığını açıklamak için kullanacağım kısa bir grafik var. Bu benim de enkarnasyonlarını açıklamak için kullanılan grafik bir varyasyonu cevap sorusuna Can herkes kolay anlaşılır şekilde bana Oracle veritabanında konsepti “enkarnasyon” açıklamak?
Umarım yolculuğun tadını çıkarırsın.
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
Veritabanını Zamanda Noktaya Geri Yükleme (1)
13:00 (13:00) 'den biraz sonra birileri veritabanının 12: 00'a (gün içi 12) geri yüklenmesi gerektiğine karar verir. DBA, veritabanını o zamana geri yüklemek için bir grup RMAN komutu başlatır veya 3. taraf bir tedarikçiden geri yükleme / kurtarma başlatmak için fantastik bir GUI'yi tıklar.
RMAN, veritabanının ve tüm Arşiv Günlüğü yedeklemelerinin disk / teypten TAM yedeklemesini alır ve bunları diske geri yükler. Kurtarma aşamasında RMAN, ilgili tüm bilgilerin mevcut olup olmadığını kontrol edecek ve tüm bitmiş işlemleri Zamanında Noktaya iletecek ve veritabanının tutarlı bir durumda olduğundan emin olmak için bitmemiş tüm işlemleri Zamanında geri alacaktır.
Veritabanı genel halka açılmadan önce, veritabanı gelecekteki tüm yedeklemelerin önceki yedeklemelerle çakışmamasını sağlamalıdır. Bu, yeni bir enkarnasyonun oluşturulması gerektiğinde ve veritabanını açmak için aşağıdaki komutu çalıştırdığınızda gerçekleşir:
ALTER DATABASE OPEN RESETLOGS;
(Geçerli) enkarnasyonlarınızın hiyerarşik bir görünümünü almak için örneğinize karşı aşağıdaki komut dosyasını çalıştırabilirsiniz:
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;
Veritabanının mevcut enkarnasyonu buna benzer olacaktır:
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
Grafiği kullanarak, enkarnasyonu 1 içeren yoldan enkarnasyon 2 ile yola taşındığımızı görebiliriz, çünkü veritabanını açtık ve veritabanı RESETLOGS
yeni bir enkarnasyon yarattı.
Veritabanını Zamanda Noktaya Geri Yükleme (2)
Yine, ilk geri yükleme / kurtarma işleminden sonra ve 15:00 (15:00) saatinden sonra veritabanının çalışmaya devam ettiğini varsayalım. Birisi, aynı gün saat 15: 00'te (15: 00) tam bir saate geri dönmesi gerektiğine karar verdi.
RMAN dosyaları geri yükleyecek, veritabanını kurtaracak ve ALTER DATABASE OPEN RESETLOGS
veritabanını tekrar çevrimiçi duruma getirmek için INCARNATION # şimdi 3 olarak ayarlanacak ve 16: 00'daki ilk yedekleme şu bilgileri içerecektir:
INCARNATION# 3
SCN# 500
Time......... 16:00
Yukarıdaki komut dosyasını kullanarak veritabanındaki enkarnasyonları sorgularsak, şöyle bir şey elde ederiz:
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
Veritabanını Zamanda Noktaya Geri Yükleme (3)
Yine, ikinci geri yükleme / kurtarma işleminden sonra veritabanının çalışmaya devam ettiğini ve saat 17: 00'den (17: 00) biraz sonra birisinin aynı gün 14: 00'a (14: 00) kadar yeni bir geri yükleme / kurtarma gerektiğine karar verdiğini varsayalım.
RMAN dosyaları geri yükleyecek, veritabanını kurtaracak ALTER DATABASE OPEN RESETLOGS
ve veritabanını tekrar çevrimiçi duruma getirmeye başlayacaktır . INCARNATION # şimdi 4 olarak ayarlanacak ve 18: 00'deki ilk yedekleme şu bilgileri içerecektir:
INCARNATION# 4
SCN# 400
Time......... 18:00
Yukarıdaki komut dosyasını kullanarak veritabanındaki enkarnasyonları sorgularsak, şöyle bir şey elde ederiz:
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
Ne oldu? Bir yetimimiz var!
Yetim Enkarnasyonlar ...
Grafiğe bakarsanız, şu anda enkarne 4 ve SCN 400 ile saat 18: 00'de (6: 00'da) karenin üzerinde duruyoruz. Şimdi bu çizgiyi başa kadar takip ederseniz, enkarnasyondan gideceğimizi görebilirsiniz. 4, enkarnasyon 2'ye geri dönün ve sonra veritabanı oluşturulduğu zaman enkarnasyon 1'e geri dönün.
Bu, komut dosyalarımın (basitleştirilmiş) çıktısına da karşılık gelir.
INCARNATION# PRIOR_INCARNATION# RESETLOGS_CHANGE# RESETLOGS_TIME STATUS PATH
------------ ------------------ ----------------- ------------------- ------- --------------------
4 2 300 2018-07-17 17:20:00 CURRENT -> 1 -> 2 -> 4
Peki enkarnasyon 3 ile ne oldu? Enkarnasyon 3 kötü mü, bayat mı yoksa ne veriyor?
Cevap
Hayır, enkarnasyon 3 kötü değil, sadece yetim.
Yedeklemeler ve geri yüklemeler arasında daha fazla zamana sahip daha büyük bir ölçekte, veritabanını enkarnasyon 3 kökeninde belirli bir zamana geri yükleyebilir / kurtarabilirsiniz.
RESET DATABASE TO INCARNATION 3;
... ve sonra diğer bir veritabanını geri yükleyeceğiniz / kurtaracağınız gibi veritabanını o zamana kadar geri yükleyin / kurtarın.
Ne ORPHAN
durumu, sana ne anlatıyor enkarnasyon 3 artık sürüm çoktan 4. 3 artık / geri akım zaman çizgisi boyunca veritabanını kurtarmak için gereklidir yetim enkarnasyon ile veritabanının mevcut durumuna ilişkin olmasıdır.
... Eski Yedeklemeler Sonucu
Artık yetim kalmış enkarnasyona ilişkin veritabanı yedeklemelerine bakıldığında, RMAN artık yetimsiz enkarnasyonun yedeklemelerinin OBSOLETE olduğunu belirler. Ama bu farklı bir soru-cevap hikayesi ...