Archive for Mayıs, 2011

RMAN Veri Kurtarma Yöntemleri


Merhaba,

Bu yazımda  RMAN ile alınan yedekten geri dönme yöntemlerimizi madde madde anlatacağım.

1-   Bütün datafile lar kaybedildiğinde, tüm yedeğin geri dönülmesi için;

SQL> startup mount;
RMAN> restore database;
RMAN> recover database;
SQL> alter database open;

 2-   Bir tablespace kaybedildiğinde, kaybedilen tablespace in geri dönülmesi için;

 SQL> alter tablespace users offline;
RMAN> restore tablespace users;
RMAN> recover tablespace users;
SQL> alter tablespace users online;

Tablespace offline yapılamazsa aşağıdaki yol izlenmelidir.

$ sqlplus “/ as sysdba”
SQL> shutdown abort;
SQL> startup mount;
$ rman target / catalog_user/catalog_user_password@catalogdb
RMAN> restore tablespace users;
RMAN> recover tablespace users;
SQL> alter database open;

3-   Bir datafile kaybedildiğinde, kaybedilen datafile ın geri dönülmesi için;

SQL> alter database datafile '/oracle/oradata/users.dbf' offline;
RMAN> restore datafile '/oracle/oradata/users.dbf'
RMAN> recover datafile '/oracle/oradata/users.dbf'
SQL> alter database datafile '/oracle/oradata/users.dbf' online;

Datafile offline yapılamazsa aşağıdaki yol izlenmelidir.

$ sqlplus “/ as sysdba”
SQL> shutdown abort;
SQL> startup mount;
$ rman target / catalog_user/catalog_user_password@catalogdb
RMAN> restore datafile '/oracle/oradata/users.dbf';
RMAN> recover datafile '/oracle/oradata/users.dbf';
SQL> alter database open;

4-   Controlfile lar kaybedildiğinde, kaybedilen controlfile ın geri dönülmesi için;

$ sqlplus “/ as sysdba”
SQL> shutdown abort;
SQL> startup nomount;
$ rman target / catalog_user/catalog_user_password@catalogdb
RMAN> set dbid = 3970640872;
RMAN> restore controlfile;
SQL> alter database mount;
SQL> alter database open;

Controlfile yedekten geri dönüldükten sonra, veritabanının açılması esnasında aşağıdaki gibi ORA-01589 hatası ile karşılaşılabilir.

ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

Bu durumda aşağıdaki işlemler yapılmalıdır.

SQL> shutdown abort;
SQL> startup mount;
$ rman target / catalog_user/catalog_user_password@catalogdb
RMAN> recover database;
SQL> alter database open resetlogs;
RMAN> reset database;

Veritabanı “resetlogs” ile açıldığı için controlfile daki SCN numarası sıfırlanacaktır. Bu durumda önceki alınan yedekler geçersiz olacaktır. Yeniden full yedek alınması zorunludur.

5-   Özel bir durum gerekebilir. Ve bizden belirli bir zamana dönmemiz istenebilir. Belirli bir zamana dönmek için 3 yöntem mevcuttur. Zamana göre, Arşiv sıra nosuna göre ve SCN (System Change Number) ye göre incomplete recovery (Belirli bir zamana dönme işlemi) yapabiliriz.

            A.   Zamana göre (Time-Based) incomplete recovery;

$ sqlplus "/ as sysdba"
SQL> shutdown abort;
SQL> startup mount;
$ rman target / catalog_user/catalog_user_password@catalogdb
RMAN> restore database until time "to_date('06/05/11 12:0:00','DD/MM/YY HH24:MI:SS')";
RMAN> recover database until time "to_date('06/05/11 12:0:00','DD/MM/YY HH24:MI:SS')";
SQL> alter database open resetlogs;

           B.   Sistem değişiklik numarasına göre (SCN-Based) incomplete recovery;

$ sqlplus "/ as sysdba"
SQL> shutdown abort;
SQL> startup mount;
$ rman target / catalog_user/catalog_user_password@catalogdb
RMAN> restore database until scn 1000;
RMAN> recover database until scn 1000;
SQL> alter database open resetlogs;

             C.   Arşiv dosyası sequence numarasına göre incomplete recovery;

$ sqlplus "/ as sysdba"
SQL> shutdown abort;
SQL> startup mount;
$ rman target / catalog_user/catalog_user_password@catalogdb
RMAN> restore database until sequence 9923;
RMAN> recover database until sequence 9923;
SQL> alter database open resetlogs;

6-   Alınan yedekte arşiv dosyaları varsa ve belirli arşiv dosyalarının geri dönülmesi gerekirse;

$ rman target / catalog_user/catalog_user_password@catalogdb
RMAN> restore ARCHIVELOG FROM TIME 'SYSDATE-1' UNTIL TIME 'SYSDATE';

Ya da

RMAN> restore ARCHIVELOG FROM TIME "to_date('07/11/05 00:00:01','MM/DD/YY HH24:MI:SS')
UNTIL TIME 'SYSDATE';

7-   Herhangi bir datafile ın bir bloğunda corruption oluşursa aşağıdaki gibi bir hata alınır ve ilgili datafile ın ilgili bloğu aşağıdaki gibi kurtarılır.

Hata:

ORA-01578: ORACLE data block corrupted (file # 8, block # 13)

ORA-01110: data file 8: ‘/oracle/oradata/users.dbf’

Kurtarmak için:

$ rman target / catalog_user/catalog_user_password@catalogdb
RMAN>blockrecover datafile 8 block 13;

         Kurtarmak için özel bir backup set verebiliriz;

# backupset den kurtarma
RMAN> BLOCKRECOVER DATAFILE 8 BLOCK 13 DATAFILE 2 BLOCK 19 FROM BACKUPSET;
# image copy den kurtarma
RMAN> BLOCKRECOVER DATAFILE 8 BLOCK 13 DATAFILE 2 BLOCK 19
      FROM DATAFILECOPY;
# "FULL" taglı olan backupset den kurtarma
RMAN> BLOCKRECOVER DATAFILE 8 BLOCK 13 DATAFILE 2 BLOCK 199
       FROM TAG = FULL;

Backup esnasında veya “Backup Validate” komutuyla RMAN bulduğu corrupted blokları V$DATABASE_BLOCK_CORRUPTION viewına yazar. Corrupt olan blok recover edildiğinde RMAN otomatik bu view ı günceller. Geçmişe yönelik tüm corruption listesi V$BACKUP_CORRUPTION ve V$COPY_CORRUPTION viewlarından bakılabilir. Aşağıdaki komut çalıştırıldığında RMAN,  V$DATABASE_BLOCK_CORRUPTION viewında bulunan tüm corrupted blokları recover eder.

RMAN>BLOCKRECOVER CORRUPTION LIST
  RESTORE UNTIL TIME 'SYSDATE-10';

8-   2. veri dosyamızda problem olduğunda, 2. veri dosyamızı “image copy” yedeğe switch etmek için;

RMAN>sql ‘alter database datafile 2 offline’;
RMAN>switch datafile 2 to copy;
RMAN>recover datafile 2;
RMAN>sql ‘alter database datafile 2 online’;

Sağlam yedekli, problemsiz veritabanlarınız olması dileğiyle 🙂 …

Talip Hakan Öztürk


Oracle UNDO Parametrelerinin Optimize Edilmesi


Merhaba arkadaşlar,

Bu makale ile, ORACLE'ın ayrılmaz bir parçası olan UNDO muzumuzu nasıl optimize edeceğimiz sorusunun cevabını inceleyeceğiz.

Veritabanındaki işlem geri alma işlemi, işleme veya geri alma işlemi gerçekleştirilinceye kadar geri alma segmentlerinde tutulur. Bazen veritabanındaki uzun sorgularımız “ORA-01555: Anlık Görüntü Çok Eski"Hata. Bunun nedeni UNDO parametrelerimizin doğru yapılandırılmamış olmasıdır. UNDO_RETENTIO Parametre ile, işlemden sonra veritabanının ne kadar geri alacağına karar veririz. Bu parametre varsayılan olarak 900 saniyedir. Daha sonra bu değeri arttırmak bizim elimizde. 900'lerin (15 dak) değerinin arttırılması daha orantılı alan gerektirecektir. Geri alma segmentlerini tanımlamak ve yönetmek yerine, geri alma tablo alanı oluşturmak ve geri alma yönetimini kibarca bırakmak kolaydır. UNDO_MANAGEMENT parametre OTO ORACLE gerisini kolayca yapacak. "ORA-01555: Anlık Görüntü Çok EskiKurtul hatadan kurtulmanın yolları UNDO_RETENTIO parametre ve UNDO Tablo Alanı boyut doğru yapılandırılmış 🙂

İyi UNDO_RETENTIO Ne kadar kalmalıyız? Cevap, UNDO Tablo boyutunuzla orantılıdır. UNDO Tabloları'na diskinize ve verilerinizin önemine göre bir alan verebilirsiniz. Bu boyuta göre en uygun zamanı hesaplayarak UNDO_RETENTIO parametre.

Şimdi bazı matematiksel hesaplamalar yapalım. İlk olarak, Undo tablo alanının boyutunu aşağıdaki sorgu ile belirleyelim;

UNDO_SIZE olarak SELUM TOPLA (a.bayt)
V $ veri dosyasından a,
v $ tablo alanı b,
dba_tablespaces c
NEREDE c.contents = & # 39; UNDO & # 39;
VE c.status = & # 39; ONLINE & # 39;
AND b.name = c.tablespace_name
AND a.ts # = b.ts #;

Ardından, saniye başına geri alma blok sayısını bulalım;

UNDO_BLOCK_PER_SECOND olarak SELECT MAX (undoblks / ((end_time-begin_time) * 3600 * 24))
V $ undostat'tan;

Son olarak, veritabanı blok büyüklüğümüzü bulalım;

DB_BLOCK_SIZE olarak TO_NUMBER (değer) SEÇİN
V $ parametresinden
NEREDE adı = & # 39; db_block_size & # 39 ;;

Şimdi üç optimum sonuç elde ettik UNDO_RETENTIO Zamanımızı hesaplayacağız. Kullanacağımız formül aşağıdaki gibidir;

UNDO RETENTION TIME = (UNDO BOYUTU) / (DB BLOK BOYUTU × İKİNCİ BAŞINA UNDO BLOKU)

Bu formülde yukarıdaki değerleri değiştirdiğimizde UNDO_RETENTIO Zamanımızı bulmuş olacağız.

Şimdi buna karşı taraftan bakalım. Verilerimizi geri almak için yeterli disk alanımız ve kritik veritabanı işlemlerimiz varsa UNDO RETENTION Zamanımızı 1 saat (3600 sn) olarak düşünürsek, yukarıda belirtilen formülü kullanarak optimum UNDO bedenimizi hesaplayabiliriz. Bu durumda formülümüz;

UNDO BLOK BOYUTU İKİNCİ BAŞINA UNDO BLOKU

Son olarak, hepsini tek bir sorgu ile çözelim. Optimum UNDO_RETENTIO zamanı bulmak için;

D.undo_size / (1024 * 1024) UNDO_SIZE olarak SEÇ,
SUBSTR (örneğin, 1,25) UNDO_RETENTION olarak,
YUVARLAK ((d.undo_size / (to_number (f.value) * *
g.undo_block_per_sec))) OPTIMUM_UNDO_RETENTION olarak
-DEN (
SELECT SUM (a.bytes) undo_size
V $ veri dosyasından a,
v $ tablo alanı b,
dba_tablespaces c
NEREDE c.contents = & # 39; UNDO & # 39;
VE c.status = & # 39; ONLINE & # 39;
AND b.name = c.tablespace_name
AND a.ts # = b.ts #
D
v $ e parametresi,
v $ f parametresi,
(
MAX SEÇİMİ (undoblks / ((end_time-begin_time) * 3600 * 24))
undo_block_per_sec
V $ undostat'dan
) g
NEREDE e.name = & # 39; undo_retention & # 39;
AND f.name = & # 39; db_block_size & # 39 ;;

belirlenecek UNDO RETENTION süreye göre en uygun UNDO boyutunu bulmak;

D.undo_size / (1024 * 1024) UNDO_SIZE olarak SEÇ,
SUBSTR (örneğin, 1,25) UNDO_RETENTION olarak,
(TO_NUMBER (e.value) * TO_NUMBER (f.value) *
g.undo_block_per_sec) / (1024 * 1024)
NEEDED_UNDO_SIZE "olarak
-DEN (
SELECT SUM (a.bytes) undo_size
V $ veri dosyasından a,
v $ tablo alanı b,
dba_tablespaces c
NEREDE c.contents = & # 39; UNDO & # 39;
VE c.status = & # 39; ONLINE & # 39;
AND b.name = c.tablespace_name
AND a.ts # = b.ts #
D
v $ e parametresi,
v $ f parametresi,
(
MAX SEÇİMİ (undoblks / ((end_time-begin_time) * 3600 * 24))
undo_block_per_sec
V $ undostat'dan
) g
NEREDE e.name = & # 39; undo_retention & # 39;
AND f.name = & # 39; db_block_size & # 39 ;;

Veritabanımızın son açılmasından bu yana kaç ORA-1555 hatası aldığını merak ediyorsanız, aşağıdaki sorguyla bulabilirsiniz.

  
  
  
  "ORA-01555 (anlık görüntü çok eski)" hata sayısını seçin: & # 39;
|| toplamı (ssolderrcnt)
v $ undostat'tan;

Sağlıklı çalışma veritabanlarına optimum değerlerimizle sahip olmanızı diliyoruz 🙂

Talip Hakan Özer


Kendimizi Değerlendirelim-5


Home
> Kendimizi Değerlendirelim > Kendimizi Değerlendirelim-5

Kendimizi Değerlendirelim-5

Bir yazılımcı bir ehliyet takip veritabanı hazırlayacaktır. Ehliyet veritabanında alanları yukarıdaki gibi olan basvurular tablosu tasarlamaktadır.

TABLO OLUŞTURMAK

  1. Tablo alanları resimde verilmiştir.
  • Başvuru numarası 100den başlamaktadır ve otomatik olarak artmaktadır.
  • Kullanıcı TC kimlik numarası birincil anahtar olmalıdır
  • Boş geçilmeyecek alanlar b_adi, b_soyadi, b_tck, b_dogumtarihi, b_telefon, b_sinif

TABLO KISITLAMALARI

  • Cinsiyet alanının varsayılan değeri E olmalıdır.
  • TC kimlik numarası 11 hanelidir ve çift sayı ile biter.
  • Telefon alanına girilecek değer cep telefon numarasıdır ve formatı şöyle olmalıdır. (532) 656-88-99
  • Başvurulacak ehliyet sınıfları A,A2,B,C,D,E,F,G ve H dir.
  • Sakatlik durumunun varsayılan değeri O (sıfır) dır, buraya 0, 1 veya 2 girilebilir.

SORGULAR

  • Son başvuru tarihi 5mayıs2011 olduğuna göre başvuru tarihini kaçırmış kişileri listeleyiniz.
  • Adaylara 102AÖ, 101 AC, 100AK şeklinde yeni bir numara verilmek isteniyor. Buna göre yeni bir adayno alanı ekleyerek değerleri bu şekilde atayınız ve bu aday numaralarını gösteriniz.
  • Tabloya durum adında bir alan ekleyiniz. Bu alana yazılacak olan O (sıfır) değeri başvurunun geçersiz olduğunu, 1 (bir) değeri geçerli olduğunu belirtecektir. Kriterler aşağıdadır;
  • A2 için yaş şartı 18inden gün almış olmak, B için yaş şartı 19undan gün almış olmak, C için yaş şartı 19undan gün almış olmak, D için yaş şartı 23ünden gün almış olmak, E için yaş şartı 23ünden gün almış olmak, G için yaş şartı 19undan gün almış olmak, H için yaş şartı 19undan gün almış olmak, F için şart sakatlık durumunun olması ve 18inden gün almış olmaktır.

Aşağıdaki resimde durum alanı eklenmiştir. Daha sonra ise yukardaki şart uygulanarak 16 yaşındaki Ayşe’nin C için yaptığı başvurusu geçersiz olduğu için durumu SIFIR yapılmıştır.



  • Başvurusu geçersiz olanları gecersizler, geçerli olanları ise gecerliler adıyla ayrı tablolara kopyalayınız.
  • Aşağıdaki şekilde çıktı verecek sorguyu hazırlayınız.



  • Copyright © 1996-2010 Bilgisayar Mühendisinin Notları. All rights reserved.
    iDream theme by Templates Next | Powered by WordPress