3 Eylül 2025 Çarşamba

ÇALIŞANLAR VE BİRİMLER TABLOSU OLUŞTURMA, KAYIT GİRİŞİ VE SORULAR

1-Çalışanları birim adları ile birlikte listeleyiniz.

2-Birim adı boş olan kayıtları listeleyiniz ve sayılarını tespit ediniz.

3-Toplam çalışan sayısını bulunuz.

4-) Her birimde çalışan sayısını bulunuz.

5-)Her birimin ortalama maaşını bulunuz.

6-)Satınalma biriminin en yüksek maaş alan personelini bulunuz.

7-)Her birimin en yüksek maaş alan personelini bulunuz.

8-)En yüksek maaş alan kişiyi bulunuz.

9-)Adı veya Soyadında a harfi olmayan kişilerin sayısını bulunuz.

10-)Adı ve Soyadında b harfi olan kişilerin sayısını bulunuz.

11-)Birimi DİĞER olanların maaş toplamının, tüm personelin maaşına oranını bulunuz.

12-)Maaşların(toplam) birim bazlı yüzde olarak dağılımını bulunuz.        


create table dbtools.calisanlar

(

ad varchar2(50),

soyad varchar2(50),

anne_adi varchar2(50),

baba_adi varchar2(50),

birim number,

maas float

);



create table dbtools.birimler

(

id number,

ad varchar2(50)

);





INSERT /*+ APPEND */ INTO dbtools.calisanlar (ad, soyad, birim, maas, anne_adi, baba_adi)

WITH

-- Küçük sözlükler

adlar AS (

    SELECT 'Ahmet' ad FROM dual UNION ALL

    SELECT 'Mehmet' FROM dual UNION ALL

    SELECT 'Ayşe'   FROM dual UNION ALL

    SELECT 'Fatma'  FROM dual UNION ALL

    SELECT 'Ali'    FROM dual UNION ALL

    SELECT 'Zeynep' FROM dual UNION ALL

    SELECT 'Emre'   FROM dual UNION ALL

    SELECT 'Can'    FROM dual UNION ALL

    SELECT 'Elif'   FROM dual UNION ALL

    SELECT 'Merve'  FROM dual

),

soyadlar AS (

    SELECT 'Yılmaz' soyad FROM dual UNION ALL

    SELECT 'Demir'  FROM dual UNION ALL

    SELECT 'Kaya'   FROM dual UNION ALL

    SELECT 'Şahin'  FROM dual UNION ALL

    SELECT 'Çelik'  FROM dual UNION ALL

    SELECT 'Aydın'  FROM dual UNION ALL

    SELECT 'Aslan'  FROM dual UNION ALL

    SELECT 'Koç'    FROM dual UNION ALL

    SELECT 'Öztürk' FROM dual UNION ALL

    SELECT 'Doğan'  FROM dual

),

anne_adlari AS (

    SELECT 'Ayşe'  anne FROM dual UNION ALL

    SELECT 'Fatma' FROM dual UNION ALL

    SELECT 'Zeynep'FROM dual UNION ALL

    SELECT 'Emine' FROM dual UNION ALL

    SELECT 'Havva' FROM dual UNION ALL

    SELECT 'Meryem'FROM dual UNION ALL

    SELECT 'Hatice'FROM dual UNION ALL

    SELECT 'Rabia' FROM dual UNION ALL

    SELECT 'Aysel' FROM dual UNION ALL

    SELECT 'Gül'   FROM dual

),

baba_adlari AS (

    SELECT 'Mustafa' baba FROM dual UNION ALL

    SELECT 'Ahmet'   FROM dual UNION ALL

    SELECT 'Mehmet'  FROM dual UNION ALL

    SELECT 'Ali'     FROM dual UNION ALL

    SELECT 'Hüseyin' FROM dual UNION ALL

    SELECT 'Hasan'   FROM dual UNION ALL

    SELECT 'Osman'   FROM dual UNION ALL

    SELECT 'İsmail'  FROM dual UNION ALL

    SELECT 'Kemal'   FROM dual UNION ALL

    SELECT 'Yusuf'   FROM dual

),

-- Her dış satır için rastgele indeksleri ÖNCE üret (tek kez)

seed AS (

    SELECT /*+ materialize */

           LEVEL AS id,

           TRUNC(DBMS_RANDOM.VALUE(1,11)) rnd_ad,

           TRUNC(DBMS_RANDOM.VALUE(1,11)) rnd_soyad,

           TRUNC(DBMS_RANDOM.VALUE(1,11)) rnd_anne,

           TRUNC(DBMS_RANDOM.VALUE(1,11)) rnd_baba,

           TRUNC(DBMS_RANDOM.VALUE(1,11)) rnd_birim,

           TRUNC(DBMS_RANDOM.VALUE(20000,150001), 2) rnd_maas

    FROM dual

    CONNECT BY LEVEL <= 500000

),

-- Sözlükleri 1..10 arası sabit anahtarla numaralandır

ad_rn    AS (SELECT ad,    ROW_NUMBER() OVER (ORDER BY ad)    rn FROM adlar),

soyad_rn AS (SELECT soyad, ROW_NUMBER() OVER (ORDER BY soyad) rn FROM soyadlar),

anne_rn  AS (SELECT anne,  ROW_NUMBER() OVER (ORDER BY anne)  rn FROM anne_adlari),

baba_rn  AS (SELECT baba,  ROW_NUMBER() OVER (ORDER BY baba)  rn FROM baba_adlari)

SELECT

    a.ad,

    s.soyad,

    sd.rnd_birim AS birim,

    sd.rnd_maas  AS maas,

    an.anne      AS anne_adi,

    bb.baba      AS baba_adi

FROM seed sd

JOIN ad_rn    a  ON a.rn    = sd.rnd_ad

JOIN soyad_rn s  ON s.rn    = sd.rnd_soyad

JOIN anne_rn  an ON an.rn   = sd.rnd_anne

JOIN baba_rn  bb ON bb.rn   = sd.rnd_baba;


COMMIT;


INSERT INTO DBTOOLS.birimler SELECT 1, 'FİNANS' FROM DUAL;

INSERT INTO DBTOOLS.birimler SELECT 2, 'İK' FROM DUAL;

INSERT INTO DBTOOLS.birimler SELECT 3, 'BİLGİ_İŞLEM' FROM DUAL;

INSERT INTO DBTOOLS.birimler SELECT 4, 'MUHASEBE' FROM DUAL;

INSERT INTO DBTOOLS.birimler SELECT 5, 'ARGE' FROM DUAL;

INSERT INTO DBTOOLS.birimler SELECT 6, 'TEKNİK SERVİS' FROM DUAL;

INSERT INTO DBTOOLS.birimler SELECT 7, 'SATINALMA' FROM DUAL;

INSERT INTO DBTOOLS.birimler SELECT 8, 'SATIŞ' FROM DUAL;

INSERT INTO DBTOOLS.birimler SELECT 9, 'DİĞER' FROM DUAL;

INSERT INTO DBTOOLS.birimler SELECT 10, NULL FROM DUAL;




27 Haziran 2019 Perşembe

Veritabanı Örnek Uygulama

1-OKUL adında bir user oluşturun yetkilerini verin.
2-Primary key, Foreign key ve indexleri de kullanarak, bu user üzerine bir okulun öğrenci kaydının olduğu "ogrenci" tablosu, 
"ogretmen" tablosu, derslerin olduğu "dersler" tablosu ve ders notları ile ilgili "notlar" tablolarını oluşturun ve 10 öğrenci kaydı, 
5 ders ve 5 öğretmen kaydı yaparak tüm öğrencilerin tüm dersler için 2 yazılı ve bir sözlü notlarını içeren tüm kayıtlarını oluşturun.
3-Yapılan kayıtlardan Öğrenci,Ders ve Ders notlarını, Not ortalamalarını ve Ders geçme kalma durumunu içeren "vie_notlar" adında bir view oluşturun.
(Sınav sonucu 10 luk sistemde değerlendirilmelidir. Ortalama üzerinde 1.yazılı %30, 2.yazılı %50, sözlü %20 etkildir ve ders geçme şartı 5 ve üzeri olan notlardır)
4-En başarılı olunan 2 dersin isimlerini sql cümlesi ile bulun.
5-Her dersin sınav not ortalamalarını bulan sql'i yazın.
6-Her öğrencinin en başarılı olduğu dersi ve not ortalamasını bulan sql cümleciğini yazın
7-Not ortalaması 3 ile 5 arası olan derslerin hocalarını bulun

19 Ekim 2017 Perşembe

Oracle da ARCHIVELOG moda geçiş ve BACKUP yapılandırması

Oracle veritabanında 2 çeşit bakup türü vardır.Online ve Offline alınan backuplar. Offline alınan backuplarda olası bir durumda sistemi son ana döndüremeyip veri kayıplarına neden olabiliriz.O yüzden "sıfır veri kaybı mantığı ile yola çıkacaksak, muhakkak online backup almak durumundayız. Bu da db imizin ARCHIVELOG mod da çalışmasıyla mümkündür. Archivelog modda yapılan işlem aslında basit anlatımla, db üzerinde yapılan değişiklikler, redolog dosyaları üzerinde tutulur.Bu tutulan logların belli aralıklarla arşivlendiği moda, ARCHIVELOG mode deniyor.Veritabanını ARCHIVELOG moda aldığımızda db üzerinde ayrıca bir kaynak harcayacağından, db imizde yavaşlama olabilir. Güçlü bir sistem altyapısına sahip isek, bu yük hissedilmeyecektir. Db' imizin ARCHIVELOG modda olup olmadığını şu şekilde sorgulayabiliriz.

SELECT LOG_MODE FROM v$database;Sonuç ARCHIVELOG değil de NOARCHIVELOG iseARCHIVELOG moda almak için aşağıdaki adımlar sırasıyla uygulanır;1) shutdown immeidate                                                    //db i kontrollü kapatırız   Db imizi ARCHIVELOG moda aldıktan sonra işimiz bitmiyor. Hemen rman backup için backup planı çıkarıyoruz. Kurumumuza uygun olan backup planını belirleyip, bunu sisteme uyarlamanız gerekiyor.sonuç: ARCHIVELOG ise kullanılıyor, değil ise NOARCHIVELOG olarak görülecektir.Eğer NOARCHIVELOG modda ise şu şekilde ARCHIVELOG moda alabiliriz.2) startup mount                                                                   //mount durumuna alırız3) alter database archivelog / alter database noarchivelog         //archivelog moduna alırız4) alter database open                                                           //db imizi açarız.bu genelde küçük boyutlu ve kısa sürede bitecek databaselerde her gün full backup şeklinde, çok daha büyük database lerde haftanın ilk günü full, sonraki günleride incremental backup şeklinde alabiliriz.    Şimdi burada , her gün full backup alan ve bu backupların son 5 ini disk üzerinde tutan bir backup senaryosunu yapılandıracağız.



Öncelikle sisteme bağlanıp RMAN scriptimizi yazıyoruz.

login as: root

root@192.168.1.1's password:  *****

 [root@oracle01~]# su – oracle

[oracle@oracle01~]# cd /oracle/scripts/



oracle@oracle01~]#vi rman_backup_todisk_full.sh

rman target / <<EOF

run {

backup database filesperset 4 format "/backup/DB_%d.%s.%t.%p.dbf";

sql 'alter system archive log current';

backup format '/backup/ARC_%d_%s_%t_%p.arc' archivelog all not backed up 1 times skip inaccessible;

delete noprompt archivelog until time 'sysdate-7' backed up 1 times to device type disk;

backup format '/backup/CTL_%s_%t_%p.ctl' current controlfile;

}





Önce ESC tuşu sonra

  :wq! İle dosyamızı kaydedip çıkıyoruz.



Sıra geldi scriptimizi crontab’a eklemeye.



oracle@oracle01~]# crontab -e

Karşımıza açılan editöre aşağıdaki komut satırını ekliyoruz.

#backuplar                                                                         // job başlığı

0 18 * * * /oracle/admin/BISAR/scripts/full_rman.sh          // her gün saat 18 de bu job çalışsın



Sıra geldi değişkenlerin ve loğ mekanizmasının atanmasına;

Bunun için de bir sh dosyasına ihtiyacımız var.

oracle@oracle01~]# cd /oracle/admin/MASCADB/scripts/

oracle@oracle01~]# vi full_rman.sh





#!/bin/bash

export ORACLE_BASE=/oracle

export ORACLE_SID=MASCADB

export ORACLE_HOME=/oracle/product/11.2.0/db_1

PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin

export PATH

find /backup/* -mtime +4 –exec rm {} \;                                 // Bugünden önceki 4 backubu siler, bugün ile 5 olacak   

/oracle/admin/MASCADB/scripts/rman_backup_todisk_full.sh > /oracle/admin/MASCADB/scripts/full_rman.tmp



#mailx -s "RMAN: $CUST $SID FULL" $DBA < /masca/log_rman_full_db.tmp





Artık sistemimiz günlük olarak online RMAN backup alacaktır.

Burada bir önemli konuya daha dikkat çekmek istiyorum;

Sistemi ARCHIVELOG moda aldığımız için db sürekli ARCHIVELOG üretecek ve diskte belirli bir yer tutacaktır.



Özellikle Update ve insert işlemlerinin yoğun olduğu işlemlerin yapılması sırasında üretilen archivelog ların boyutu,

normal zamandaki işlemlere göre çok daha fazla olacak ve diskte daralmalara sebep olacaktır. Eğer diskte yerimiz yeterince yok ise, sistemin durması bile kaçınılmaz olacaktır. Bunu önlemenin yolu, işlem sırasında

şu adımları izlemektir;





>root

>password :\..../



>su - oracle



export ORACLE_SID=MASCADB



>rman

RMAN>connect target/

RMAN>list archivelog all;

RMAN>delete noprompt archivelog until time 'sysdate-1';  ya da                                 

RMAN>delete noprompt archivelog all;      //tamamı

RMAN> crosscheck archivelog all;       

RMAN> delete expired archivelog all;     

LİNUX ÜZERİNE SNMP KURULUMU VE YAPILANDIRMA


SNMP NEDİR?   NE İŞE YARAR?
SNMP açılımı “Simple Network Management Protocol” yani  “Basit Ağ Yönetim Protokolü“dür. Router, switch gibi network bileşenlerinin veya network kartı olan UPS gibi cihazların yönetimini sağlar. Tabi ki network cihazlarının SNMP desteği olmak zorundadır. Çok sayıda router içeren büyük bir network’ü kontrol etmek zordur. Her bir network cihazına tek tek girmek ve onları sürekli takip etmek imkansızdır. Bunun için geliştirilmiş Opmanager, Solar Winds gibi ücretli veya Cacti gibi ücretsiz açık kaynak kodlu yazılımlar mevcuttur. 
Bu yazılımlar ile network cihazlarının band kullanım bilgilerini, işlemci ve ram kullanım yüzdelerini, Ethernet üzerinden geçen trafiği SNMP protokolünü kullanarak anlık izleyebilirsiniz.
Sonuç olarak bu yazılımlar network cihazlarından bazı bilgileri SNMP protokolü ile çekerler. 
SNMP protokolünün v1, v2 ve v3 versiyonları vardır. En güvenilir olanı versiyon 3’tür. Dinleme saldırılarına karşı önlem olarak duyurulan SNMP versiyon 3 ’te farklılık olarak, kimlik doğrulama (authentication) yapılmaktadır ve SNMP data paketleri şifreleme yöntemi ile iletilmektedir.

SNMP KURULUMU NASIL YAPILIR?
Linux işletim sisteminde “snmp” kurulumu için aşağıdaki adımları izleyebilirsiniz.
yum install net-snmp net-snmp-utils net-snmp-devel -y
komutu ile snmp paketi kurulmuş olur.

Snmp protokolüne bağlanabilmek için community ismi belirlemek gerekir.

Öncesinde bir yapılandırma söz konusu ise, öncelikle eski config dosyasının bir kopyası alınır. 
cp etc/snmp/snmpd.conf /etc/snmp/snmpd_bckp.conf

Sonra aşağıdaki komut ile community tanımı yapılır.  
echo rocommunity public > /etc/snmp/snmpd.conf

Tanım yapıldıktan sonra aşağıdaki komut ile servis başlatılır ve protokol devreye alınmış olur.

service snmpd start

10 Ekim 2013 Perşembe

Fiziksel Standby Database'in Raporlama ve Test İçin Kullanılması

   Oracle dataguard, restore point ve flashback database özelliği kullanılarak bir fiziksel veritabanı okuma/yazma(read/write) modda açılabilir. Açılan veritabanı test ,
raporlama vb. sistemler için kullanılabilir. Bu kullanımın ardından tekrar standby moda çekilelebilir.
Bu işlemi aşağıdaki adımları izleyerek yapabiliriz;

1.Fiziksel Standby Veritabanında Yapılması Gerekenler
 a. Flash recovery alananının ayarlanması gerekir bu işlem aşağıdaki şekilde yapılır.
    SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=50G;
    SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='+RECOVER';
 b.Stanby veritabanını log apply moddan çıkartıp, guarantee(garantili) restore point oluşturulur.
    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
    SQL> CREATE RESTORE POINT before_dr GUARANTEE FLASHBACK DATABASE;

2.Primary(birincil) veritabanında yapılması gerekenler
 a. Mevcut logların arşivlenmesi sağlanır
    SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
 b. Stanby veritabanına log gönderen servis defer moda çekilir.
    SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_3=DEFER;

3. Stanby veritabanının aktifleştirilmesi
 a.stanby database aktifleştirilmesi aşağıdaki şekilde yapılır
   SQL> ALTER DATABASE ACTIVATE STANDBY DATABASE;
 b.stanby veritabanının koruma modunu maksimum performans olacak şekilde aşağıdaki şekilde değiştirilir.
   SQL> STARTUP MOUNT FORCE;
   SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;
   SQL> ALTER DATABASE OPEN;


3. Aktifleştirilen veritabanının standby moda dönüştürülmesi.
   SQL> STARTUP MOUNT FORCE;
   SQL> FLASHBACK DATABASE TO RESTORE POINT before_dr;
   SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY;
   SQL> STARTUP MOUNT FORCE;
4. Standby veritabanının tekrar recovery moda çekilmesi
   SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

5. Primary veritabanından log gönderiminin aktifleştirilmesi
   SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_3=ENABLE;


#standby taraftaki listener, listener123'ü ethernet aktif edildikten sonra aç



Falshback Database'in Açılması
Falashback database bir veritabanının zaman içerisinde kaynakların elverdiği ölçüde ileri geri alınmasına yardımcı olan, bu sayede kullanıcı hatalarına karşı bir önlem

olarak kullanılan bir teknolojidir. Genellikle veri silinmesi(drop,tuncate, delete) durumlarında kaybolan verileri çok basit şekilde geri getirmeye yardımcı
olur.Flashback database teknolojisi datafile silinmesine bir önlem değildir. Flashback logları controlfile'in recreate edildiği durumlarda da işe yaramaz.
1. Veritabanı açıksa kapatılır ve mount modda açılır.
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
2. Eğer istenirse flashback retention süresi değiştirilebilir.
SQL> ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=4320; # 3 gün,defaultu 1 gündür(1440) dakika
3. flashback database aktifleştirilir
SQL> ALTER DATABASE FLASHBACK ON;


Bir tablespace için flashback loglama özelliğini aşağıdaki şekilde devre dışı bırakılabilir.
SQL> ALTER TABLESPACE tbs_3 FLASHBACK OFF;
ya da devre dışıysa aşağıdaki şekilde aktifleştirilebilir
SQL> ALTER TABLESPACE tbs_3 FLASHBACK OFF;

örnek flashback komutları;
FLASHBACK DATABASE TO TİMESTAMP SYSDATE-2;
FLASHBACK DATABASE TO RESTORE POİNT ‘before_dr’;
FLASHBACK DATABASE TO SCN 1012568;
4. Flashback database in kapatılması
Veritabanı mount modda açılır ve aşağıdaki komut çalıştırılır.
SQL> ALTER DATABASE FLASHBACK ON;


Normal Ve Garantili Restore Point Oluşturma
restore poin ; flashback açık olan veritabanlarında bir isimle belirlenen noktaya kolayca dönmek için kullanılan bir teknolojidir. guarantee ve normal olmak üzere 2

şekilde oluşturulabilir. normal şekilde oluşturulduğu zaman o noktaya geri dönebilmenin garantisi yoktur. eğer DB_RECOVERY_FILE_DEST_SIZE alanı dolarsa varolan
logların üzerine yazılır ve normal yaratılan restore point ler bozulabilir. Bir restore point in hiç bir şekilde bozulmasını istemiyorsanız bunu guarantee restore
point olarak oluşturmak gerekir.
Normal restore point oluşturma;
SQL> CREATE RESTORE POINT before_upgrade;
Restore point created.
Guarantee restore point oluşturma

select flashback_on from v$database;
SQL> CREATE RESTORE POINT before_upgrade GUARANTEE FLASHBACK DATABASE;
Restore point created.

Restore Point'lerin listelenmesi
SQL> SELECT NAME, SCN, TIME, DATABASE_INCARNATION#,
        GUARANTEE_FLASHBACK_DATABASE,STORAGE_SIZE
        FROM V$RESTORE_POINT;
sorgusuyla tüm restore point'ler veya aşağıdki sorguyla Guarantee restore point'ler listelenebilir.
SQL> SELECT NAME, SCN, TIME, DATABASE_INCARNATION#,
        GUARANTEE_FLASHBACK_DATABASE, STORAGE_SIZE
        FROM V$RESTORE_POINT
      WHERE GUARANTEE_FLASHBACK_DATABASE='YES';


Restore Point'in silinmesi
Aşağıdaki şekilde yapılır.
SQL> DROP RESTORE POINT before_app_upgrade;
Restore point dropped.

4 Ekim 2013 Cuma

ARCHIVELOG moda geçiş ve BACKUP yapılandırması

Oracle veritabanında 2 çeşit bakup türü vardır.Online ve Offline alınan backuplar. Offline alınan backuplarda olası bir durumda sistemi son ana döndüremeyip veri kayıplarına neden olabiliriz.O yüzden "sıfır veri kaybı mantığı ile yola çıkacaksak, muhakkak online backup almak durumundayız. Bu da db imizin ARCHIVELOG mod da çalışmasıyla mümkündür. Archivelog modda yapılan işlem aslında basit anlatımla, db üzerinde yapılan değişiklikler, redolog dosyaları üzerinde tutulur.Bu tutulan logların belli aralıklarla arşivlendiği moda, ARCHIVELOG mode deniyor.Veritabanını ARCHIVELOG moda aldığımızda db üzerinde ayrıca bir kaynak harcayacağından, db imizde yavaşlama olabilir. Güçlü bir sistem altyapısına sahip isek, bu yük hissedilmeyecektir. Db' imizin ARCHIVELOG modda olup olmadığını şu şekilde sorgulayabiliriz. 
SELECT LOG_MODE FROM v$database;Sonuç ARCHIVELOG değil de NOARCHIVELOG iseARCHIVELOG moda almak için aşağıdaki adımlar sırasıyla uygulanır;1) shutdown immeidate                                                    //db i kontrollü kapatırız   Db imizi ARCHIVELOG moda aldıktan sonra işimiz bitmiyor. Hemen rman backup için backup planı çıkarıyoruz. Kurumumuza uygun olan backup planını belirleyip, bunu sisteme uyarlamanız gerekiyor.sonuç: ARCHIVELOG ise kullanılıyor, değil ise NOARCHIVELOG olarak görülecektir.Eğer NOARCHIVELOG modda ise şu şekilde ARCHIVELOG moda alabiliriz.2) startup mount                                                                   //mount durumuna alırız3) alter database archivelog / alter database noarchivelog         //archivelog moduna alırız4) alter database open                                                           //db imizi açarız.bu genelde küçük boyutlu ve kısa sürede bitecek databaselerde her gün full backup şeklinde, çok daha büyük database lerde haftanın ilk günü full, sonraki günleride incremental backup şeklinde alabiliriz.    Şimdi burada , her gün full backup alan ve bu backupların son 5 ini disk üzerinde tutan bir backup senaryosunu yapılandıracağız.


Öncelikle sisteme bağlanıp RMAN scriptimizi yazıyoruz.
login as: root
root@192.168.1.1's password:  *****
 [root@oracle01~]# su – oracle
[oracle@oracle01~]# cd /oracle/scripts/
oracle@oracle01~]#vi rman_backup_todisk_full.sh
rman target / <<EOF
run {
backup database filesperset 4 format "/backup/DB_%d.%s.%t.%p.dbf";
sql 'alter system archive log current';
backup format '/backup/ARC_%d_%s_%t_%p.arc' archivelog all not backed up 1 times skip inaccessible;
delete noprompt archivelog until time 'sysdate-7' backed up 1 times to device type disk;
backup format '/backup/CTL_%s_%t_%p.ctl' current controlfile;
}

  Önce ESC tuşu sonra
  :wq! İle dosyamızı kaydedip çıkıyoruz.

Sıra geldi scriptimizi crontab’a eklemeye.

oracle@oracle01~]# crontab -e
Karşımıza açılan editöre aşağıdaki komut satırını ekliyoruz.
#backuplar                                                                         // job başlığı
0 18 * * * /oracle/admin/BISAR/scripts/full_rman.sh          // her gün saat 18 de bu job çalışsın

Sıra geldi değişkenlerin ve loğ mekanizmasının atanmasına;
Bunun için de bir sh dosyasına ihtiyacımız var.
oracle@oracle01~]# cd /oracle/admin/MASCADB/scripts/
oracle@oracle01~]# vi full_rman.sh
  

#!/bin/bash
export ORACLE_BASE=/oracle
export ORACLE_SID=MASCADB
export ORACLE_HOME=/oracle/product/11.2.0/db_1
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export PATH
find /backup/* -mtime +4 –exec rm {} \;                                 // Bugünden önceki 4 backubu siler, bugün ile 5 olacak     
/oracle/admin/MASCADB/scripts/rman_backup_todisk_full.sh > /oracle/admin/MASCADB/scripts/full_rman.tmp

#mailx -s "RMAN: $CUST $SID FULL" $DBA < /masca/log_rman_full_db.tmp



Artık sistemimiz günlük olarak online RMAN backup alacaktır.
Burada bir önemli konuya daha dikkat çekmek istiyorum;
Sistemi ARCHIVELOG moda aldığımız için db sürekli ARCHIVELOG üretecek ve diskte belirli bir yer tutacaktır.

Özellikle Update ve insert işlemlerinin yoğun olduğu işlemlerin yapılması sırasında üretilen archivelog ların boyutu,
normal zamandaki işlemlere göre çok daha fazla olacak ve diskte daralmalara sebep olacaktır. Eğer diskte yerimiz yeterince yok ise, sistemin durması bile kaçınılmaz olacaktır. Bunu önlemenin yolu, işlem sırasında 
şu adımları izlemektir;


>root
>password :\..../

>su - oracle

export ORACLE_SID=MASCADB

>rman
RMAN>connect target/
RMAN>list archivelog all;
RMAN>delete noprompt archivelog until time 'sysdate-1';  ya da                                   
RMAN>delete noprompt archivelog all;      //tamamı
RMAN> crosscheck archivelog all;          
RMAN> delete expired archivelog all;       

27 Eylül 2013 Cuma

SQL TRACE

   Bir session’ın çalıştırdığı sqlleri Enterprise Manager veya Toad gibi toollarla 
her zaman görmek mümkün olmuyor. Kesin olarak görmek ve performans noktaları 
hakkında detaylarını öğrenmek istiyorsanı sql trace açmanız gerekir. Bunu farklı 
şekillerde yapabilirsiniz.
Bunun için öncelikle session hakkında bazı bilgileri aşağıdaki sorguyla alabilirsiniz.
Select pid,spid, s.sid,s.serial#
from gv$process p, gv$session s
where p.addr = s.paddr
and s.sid = 2105;
pid spid serial#
52 32362 3801
Sonra sql trace açmak için 2 yolunuz var;

1. oradebug; oldukça basit ve kullanışlı bir yöntem bunun için;
sqlplus / as sysdba –login olunur
oradebug setorapid 52 –pid set edilir
oradebug event 10046 trace name context forever, level 12 –trace açılır, leveller 4,8,12 olabilir
oradebug tracefile_name –yazdığı dosya görüntülenir
/u01/app/oracle/admin/RAC/udump/rac1_ora_32362.trc
exit
Sonra;
tail -100f /u01/app/oracle/admin/RAC/udump/rac1_ora_32362.trc ile dosyanın içeriği görüntülenir
veya 
tkprof /u01/app/oracle/admin/RAC/udump/rac1_ora_32362.trc
          output = test
ile dosya formatlanarak test isimli dosya okunabilir.
trace’i kapatmak için;
oradebug setorapid 52 –pid set edilir
oradebug event 10046 trace name context off –trace kapatılır
komutu sqlplusdan çalıştırılabilir.

2. dbms_monitor paketi kullanılabilir.Bunun için;
exec dbms_monitor.session_trace_enable(2105,3801,TRUE,FALSE);
–3. parametre waits, 4. parametre bind değişkenler — şeklinde trace açlılır
üreteceği trace dosyası udump dizininde oracle_sid_ora_spid.trc formatındadır.
Sonrasında 1. adımdakine benzer şekilde tkprof ile dosya formatlanarak içeriği incelenebilir.

Trace’i kapatmak için
exec dbms_monitor.session_trace_disable(2105,3801);
komutu sqlplusdan çağrılabilir.



Alıntıdır: