Archive for Eylül, 2017

Yazar: Akin


Buyarak, Java’yı, temellerini başlayarak, hiç bilmeyenlerin de öğrenebileceği şekilde derslerle anlatacağım. Derslerin sunumlarına, örnek kodlarına ve konu anlatım videolarına bu sayfadan bakın.

Dersler, bölümler olarak yazıldıkça ve videoları çekildikten buraya konacaktır. İlgili örnek kodları da Eclipse projesi olarak burada paylaşacağım. Belki bu anlatımlar ileride bir kitaba dönüşür.

Java dersleri iki eğitimden oluşan: Java ile Nesne Merkezli Programlamaya Giriş ettik Java ile Nesne Merkezli ve Fonksiyonel Programlama

Bu iki eğitim sırayla öğrenilebilir. Çünkü Java ile Nesne Merkezli Programlamaya Giriş eğitimi, hem programlamaya hem de Java’ya giriş içeriğine sahiptir. Java'nın programlama isteğinde bu eğitimle başlamalıdırlar. Aralarındaki fark bu eğitim ne kadar hızlı öğrenip ilerliyorleri olacak. Tabi olarak bu eğitim içeriğini hakim olan kullanıcılar bir sonraki eğitici geçebilirler.

Java ile Nesne Merkezli ve Fonksiyonel Programlama eğitimi ise, Java ile Nesne Merkezli Programlamaya Giriş üzerine bina edilen ve Java SE’nin daha ileri konularını ele alan bir içeriğe sahiptir. Temelde “Java menüleri” diyecekleriniz olmak, bu iki eğitim içeriğine hakim olmak gerekir. Zaten Oracle’ın Java sertifikasyon sınavlarından OCA’ın kapsamlıı genel olarak, Java ile Nesne Merkezli Programlamaya Giriş, OCP’nin kapsamlıı ise genel olarak Java ile Nesne Merkezli ve Fonksiyonel Programlama içeriğini örtüşmekte.

Dersler ve seçenekleri, Java SE’nin 8. sürümü gelecekteki. Java SE’ye 8. ve önceki sürümlerde gelen yeni özellikler yeri geldiğinde ifade edilir. Ayrıca Java’yı temizlemek için neleri bilmek istediğinizigiyle ilgili buraya da bakabilirsiniz.

Hedef videolarında gelen gidilen sunumlar ile aşağıdan indireceğiniz sunumlar ve diğerleri arasında ufa-tefek farklılıklar olabilir. Çünkü sunumları ve örnekleri planlanmış ve buraya da planlanmış hallerini koyuyorum. Ama bölümlerin genel yapısı ve yönetimi aynıdır.

Sunumlardan da farkedeceğiniz gibi kavramımdasınız, “nasıl” lıkla beraber “neden” liği kavramak esastır. Hemen konu konu ile ilgili, noktaya atış türünden detaylı şekilde de hazırlantayım. Bu kod örneklerinin hoşunuza gideceğini umuyorum. Öğrenmeyi daha sağlıklı ve daha zevkli hale getirmek için örneklerle oynayın, bunu yapıp davranışını gözlemleyin. Programlama dilleri ancak ve ancak bol pratik yaparak öğrenilebilir.

Dersler açılması vurgulamaya çalışacağım bir diğer tarz program program daha geniş, Yazılım Mühendisliği bakış açısını ele almak ve planlamayı öğreniyor, her birini büyük resme, bir yazılım mimarı edasıyla yerleştirebilme becerisini vermek. Zira ülkemiz yazılan programlama kitaplarındaki en temel eksik, bir “süreç” anlayışına sahip olmamalarıdır.

Bu sayfayla ve eğitim ve malzemeleriyle ilgili öneri ve eleştirilerinizi benimle paylaşırsanız, sevinirim.

Java ile Nesne Merkezli Programlamaya Giriş

Sunumlar

Bu eğitimin derslerinin sunumlarına, örneklerin ve bazı bölümlerin videolarına aşağıdan tek tek ulaşılabilir gibi tüm bölümlerin tanıtımlarına, bir arada zip dosyası olarak da aşağıdaki linkten bağlanılabilir.

Java ile Nesne-Merkezli Programlamaya Giriş

Örnek Kodlar

Eğitimin örnek kodları bir Eclipse projesi olarak düzenlenmiştir ve aşağıdaki linkten yapılmıştır. Tek yapmanızınız şey, zip menüsü açıp giden Eclipse’te “import” edip ufak tefek yapmanız gereken şeyler yapmaktır. Bir projenin Eclipse’e nasıl ithal edileceği ve gerekli ayarları Giriş bölümündeki 2. videoda anlatıldı.

Ayrıca projeyi ithal ederekde edinilenler Readme.txt tarihinde da açıklaması, ilgili ayar bilgileri orada da vardır.

Java Ile Nesne Merkezli Programlamaya Giriş

Videolar

Konu anlatım videoları Youtube’da çalma listesi olarak gösteriyor. Videolara ayırarak, konulardaki linklerle ulaşabileceğimiz gibi “Java ile Nesne Merkezli Programlamaya Giriş”Adlı play listten de etkinleştir.

0 – Giriş

Bu eğitimle ilgili temel bilgileri paylaşılan giriş bölümüdür. Sunumu yoktur, sadece iki tane videosu vardır:

1 – Java’ya Giriş

Java nedir? sorusu cevaplıyor. Java’nın en temel özellikleri, ortaya çıkması ve kısa tarihi, farklı özellikleri ve sürümleri, öğrenme yöntemi, Oracle’ın sertifika sınavları ve dilin günümüz yazılım dünyasındaki yeri anlatılmaktadır.

Sunum:

1 Bolum Java'ya Giriş

Videolar:

2 – Nesne Merkezli Programlamaya Giriş

Bulanık nesne odaklı teorinin, soyutlama, sınıf, nesne, vb. temel düzeyde ele alınmaktadır. Bu bölüm felsefi bir tarza vardır.

Sunum:

2 Bolum Nesne-Merkezli Programı hazırlama Temelleri

Videolar:

3 – Java’nın Temelleri

Bulanık Java’nın temel yapısını ele alınıyor. Java kaynak kodunun yapısı, anahtar sözcükleri, veri tipleri, ifadeleri, cümleleri ve blokları ile kodlama simgeleri işlenmesi.

Sunum:

3 Bolum Java'nin Temelleri

Videolar:

4 – Operatörler

Java operatörleri ele alınacaktır.

Sunum:

4 Bolum Operatörü

Videolar:

5 – Akış Denetimi

Java’da akışın kontrolünü belirleyen yapılar ele alınacak, karar verme, tekrarlama ve dallanma yapıları anlatılmaktadır.
Sunum:

5 Bolum Akis Kontrolu

Videolar:

6 – Diziler

Java’da en basit torba yapısı olan diziler (dizi) anlatılmıştır.
Sunum:

6 Bolum Diziler

Videolar:

7 – Java Nesneleri: Temeller

Java’da nesne odaklı program oluşturma temelleri anlatılıyor. Buradaki, sınıf oluşturma ve sınıfın yapısı, değişkenler ve metotlar, kurucular, nesne üretme, başlama sırası ile bu ettik statik anahtar kelimeler ele alınmaktadır.
Sunum:

7. Bölüm Java Nesneleri - Temeller

Videolar:

8 – Java Nesneleri: Organizasyon

Java’nın nesne odaklı programı oluşturma organizasyonel planlama anlatımı. Paket ve ithalat yapısı ve CLASSPATH, sarmalama (kapsülleme) ve bilgi saklama (bilgi gizleme), kontrol etme ve kontrol etme ve düzenleme becerisini alma alıanıyor.

Sunum:

8. Bolum Java Nesneleri - Organizasyon

Videolar:

9 – Tekrar Kullanım ve Kalıtım

Yazılımda tekrar kullanım (tekrar kullanılabilirlik) ve Java’daki -A sahiptir ile is-a yapıları yapısı ele alınacaktır. Saklama (gizleme) ve üstüne yazma / ezme (geçersiz kılma) mekanizmaları da bu arada ele alınacaktır. Ayrıca java.lang.Object sınıfı ve menüsünde metotlar bu bölümün genelinde aradadır.

Sunum:

9 Bolum Tekrar Kullanim Ve Miras

Videolar:

Java ile Nesne Merkezli Programlamaya Giriş eğitimi burada bitmiştir. Java ile Nesne Merkezli ve Fonksiyonel Programlama üzerine eğitimine devam edebilir.


Java ile Nesne Merkezli ve Fonksiyonel Programlama

Bu eğitim gelişimi “Java ile Nesne-Merkezli Programlamaya Giriş” eğitiminin devamıdır. Bu eğitimin sadece sunumları kullanılabilir açık olarak ayarladığınız. Konuların yazımı henüz bitmedi, yapılmasıkça buraya konacaktır. Eğitimin örnek kodları ve videoları için buraya bakabilirsiniz.

1 – Nesne-Merkezli Programlamaya Giriş Sınıflar, Nesneler ve Tekrar Kullanım

Java ile Nesne Merkezli Programlamaya Giriş nolu bölümlerinin kısa bir özetidir. Bilgili durumları kontrol edilebilirler.

Sunum:

1. Bölüm: Nesne-Merkezli Programlamaya Giriş Sınıflar, Nesneler Ve Tekrar Kullanım

2 – Çok Şekillilik (Polimorfizm)

Bu şehirde gezinme (upcasting), çok şekillilik (polimorfizm), alçaltma (downcasting) ve çalışma-zaman ipucu belirlemesi (run-time türü tanımlama) yapılacaktır.

Sunum:

2. Bölüm: Çok Şekillilik (Polimorfizm)

3 – Soyut Sınıflar (Soyut Sınıflar)

Soyut sınıflar (soyut sınıflar) incelenecektir.

Sunum:

3. Bölüm: Soyut Sınıflar (Soyut Sınıflar)

4 – Arayüzler (Arayüzler)

Arayüzler (arayüzler) ele alınacaktır. Java SE 8 ile gelen yenilikler de konular arasındadır.

Sunum:

4. Bölüm: Arayüzler (Arayüzler)

5 – Alt Sınıflar (İç İçe Sınıflar)

Alt sınıflar (iç içe sınıflar) ele alınacaktır.

Sunum:

5. Bolum Alt Sınıflar (İç İçe Sınıflar)

6. Bölüm Fonksiyonel Programlama (İşlevsel Programlama)

Java SE 1.8 ile birlikte gelenler programlama yapıları ele alınacaktır.

Sunum:

6. Bolum Fonksiyonel Programlama (İşlevsel Programlama)

7 – Sıradışı Durum Yönetimi (İstisna Yönetimi)

Sıra dışı durum yönetimi ve assert

Sunum:

7. Bölüm: Sıradışı Durum Yönetimi (İstisna Yönetimi)

8 – Torbalar (Koleksiyonlar)

Java’nın torbası çerçevesi (koleksiyon çerçevesi).

Sunum:

8. Bolum Torbalar (Koleksiyonlar)

9 – Genel Yapılar ve Akışlar (Jenerik ve Akarsular)

Genel yapılar (generics) ile Java SE 1.8 ile birlikte gelen akışlar (akışları) ele alınacaktır.

10 – Giriş / Çıkışın Temelleri (Giriş / Çıkış Temelleri)

Java’da temel GÇ (IO) mekanizmaları ele alınacaktır.

11 – Dosya Giriş / Çıkışı (Dosya Girişi / Çıkışı)

Java’nın dosya yönetimi ve dosya GÇ (IO) mekanizmaları ele alınacaktır.

12 – Çok Kanallı Programlama (Diş Açma)

Java’da çok kanallı (multi-thread) programlama ele alınacaktır. Ayrıca çok kanallı (multi-threaded) ortamlarda kaynak eşzamanlaması (eşzamanlılık) da inceleyeceğim.

13 – JDBC ile Veri Tabanı Programlama (JDBC ile Veri Tabanı Programlama)

Java’nın ilişkisel veri tabanlarıyla haberleşme bileşeni olan JDBC ele alınacaktır.

Ek-1 – Java API’si ve Ana Sınıfları (Java API’leri ve Ana Sınıflar)

Java’da sayı, string, tarih, takvim, biçimlendirme (biçimlendirme), düzenli ifadeler (normal ifadeler) gibi konular ele alınacaktır.

Ek-2 – Sınıf Tasarımı (Sınıf Tasarımı)

Yazılım geliştirme süreci ile Java’nın iyi sınıfları nasıl tasarlanır ve yazılır, tasarım tasarımı ve Java deyimleri, vb. konular ele alınacaktır.

Bu yazı toplam 39373 defa görüntülendi.



Yazar: Muhammed COŞKUN


Buyarak, Java’yı, temellerini başlayarak, hiç bilmeyenlerin de öğrenebileceği şekilde derslerle anlatacağım. Derslerin sunumlarına, örnek kodlarına ve konu anlatım videolarına bu sayfadan bakın.

Dersler, bölümler olarak yazıldıkça ve videoları çekildikten buraya konacaktır. İlgili örnek kodları da Eclipse projesi olarak burada paylaşacağım. Belki bu anlatımlar ileride bir kitaba dönüşür.

Java dersleri iki eğitimden oluşan: Java ile Nesne Merkezli Programlamaya Giriş ettik Java ile Nesne Merkezli ve Fonksiyonel Programlama

Bu iki eğitim sırayla öğrenilebilir. Çünkü Java ile Nesne Merkezli Programlamaya Giriş eğitimi, hem programlamaya hem de Java’ya giriş içeriğine sahiptir. Java'nın programlama isteğinde bu eğitimle başlamalıdırlar. Aralarındaki fark bu eğitim ne kadar hızlı öğrenip ilerliyorleri olacak. Tabi olarak bu eğitim içeriğini hakim olan kullanıcılar bir sonraki eğitici geçebilirler.

Java ile Nesne Merkezli ve Fonksiyonel Programlama eğitimi ise, Java ile Nesne Merkezli Programlamaya Giriş üzerine bina edilen ve Java SE’nin daha ileri konularını ele alan bir içeriğe sahiptir. Temelde “Java menüleri” diyecekleriniz olmak, bu iki eğitim içeriğine hakim olmak gerekir. Zaten Oracle’ın Java sertifikasyon sınavlarından OCA’ın kapsamlıı genel olarak, Java ile Nesne Merkezli Programlamaya Giriş, OCP’nin kapsamlıı ise genel olarak Java ile Nesne Merkezli ve Fonksiyonel Programlama içeriğini örtüşmekte.

Dersler ve seçenekleri, Java SE’nin 8. sürümü gelecekteki. Java SE’ye 8. ve önceki sürümlerde gelen yeni özellikler yeri geldiğinde ifade edilir. Ayrıca Java’yı temizlemek için neleri bilmek istediğinizigiyle ilgili buraya da bakabilirsiniz.

Hedef videolarında gelen gidilen sunumlar ile aşağıdan indireceğiniz sunumlar ve diğerleri arasında ufa-tefek farklılıklar olabilir. Çünkü sunumları ve örnekleri planlanmış ve buraya da planlanmış hallerini koyuyorum. Ama bölümlerin genel yapısı ve yönetimi aynıdır.

Sunumlardan da farkedeceğiniz gibi kavramımdasınız, “nasıl” lıkla beraber “neden” liği kavramak esastır. Hemen konu konu ile ilgili, noktaya atış türünden detaylı şekilde de hazırlantayım. Bu kod örneklerinin hoşunuza gideceğini umuyorum. Öğrenmeyi daha sağlıklı ve daha zevkli hale getirmek için örneklerle oynayın, bunu yapıp davranışını gözlemleyin. Programlama dilleri ancak ve ancak bol pratik yaparak öğrenilebilir.

Dersler açılması vurgulamaya çalışacağım bir diğer tarz program program daha geniş, Yazılım Mühendisliği bakış açısını ele almak ve planlamayı öğreniyor, her birini büyük resme, bir yazılım mimarı edasıyla yerleştirebilme becerisini vermek. Zira ülkemiz yazılan programlama kitaplarındaki en temel eksik, bir “süreç” anlayışına sahip olmamalarıdır.

Bu sayfayla ve eğitim ve malzemeleriyle ilgili öneri ve eleştirilerinizi benimle paylaşırsanız, sevinirim.

Java ile Nesne Merkezli Programlamaya Giriş

Sunumlar

Bu eğitimin derslerinin sunumlarına, örneklerin ve bazı bölümlerin videolarına aşağıdan tek tek ulaşılabilir gibi tüm bölümlerin tanıtımlarına, bir arada zip dosyası olarak da aşağıdaki linkten bağlanılabilir.

Java ile Nesne-Merkezli Programlamaya Giriş

Örnek Kodlar

Eğitimin örnek kodları bir Eclipse projesi olarak düzenlenmiştir ve aşağıdaki linkten yapılmıştır. Tek yapmanızınız şey, zip menüsü açıp giden Eclipse’te “import” edip ufak tefek yapmanız gereken şeyler yapmaktır. Bir projenin Eclipse’e nasıl ithal edileceği ve gerekli ayarları Giriş bölümündeki 2. videoda anlatıldı.

Ayrıca projeyi ithal ederekde edinilenler Readme.txt tarihinde da açıklaması, ilgili ayar bilgileri orada da vardır.

Java Ile Nesne Merkezli Programlamaya Giriş

Videolar

Konu anlatım videoları Youtube’da çalma listesi olarak gösteriyor. Videolara ayırarak, konulardaki linklerle ulaşabileceğimiz gibi “Java ile Nesne Merkezli Programlamaya Giriş”Adlı play listten de etkinleştir.

0 – Giriş

Bu eğitimle ilgili temel bilgileri paylaşılan giriş bölümüdür. Sunumu yoktur, sadece iki tane videosu vardır:

1 – Java’ya Giriş

Java nedir? sorusu cevaplıyor. Java’nın en temel özellikleri, ortaya çıkması ve kısa tarihi, farklı özellikleri ve sürümleri, öğrenme yöntemi, Oracle’ın sertifika sınavları ve dilin günümüz yazılım dünyasındaki yeri anlatılmaktadır.

Sunum:

1 Bolum Java'ya Giriş

Videolar:

2 – Nesne Merkezli Programlamaya Giriş

Bulanık nesne odaklı teorinin, soyutlama, sınıf, nesne, vb. temel düzeyde ele alınmaktadır. Bu bölüm felsefi bir tarza vardır.

Sunum:

2 Bolum Nesne-Merkezli Programı hazırlama Temelleri

Videolar:

3 – Java’nın Temelleri

Bulanık Java’nın temel yapısını ele alınıyor. Java kaynak kodunun yapısı, anahtar sözcükleri, veri tipleri, ifadeleri, cümleleri ve blokları ile kodlama simgeleri işlenmesi.

Sunum:

3 Bolum Java'nin Temelleri

Videolar:

4 – Operatörler

Java operatörleri ele alınacaktır.

Sunum:

4 Bolum Operatörü

Videolar:

5 – Akış Denetimi

Java’da akışın kontrolünü belirleyen yapılar ele alınacak, karar verme, tekrarlama ve dallanma yapıları anlatılmaktadır.
Sunum:

5 Bolum Akis Kontrolu

Videolar:

6 – Diziler

Java’da en basit torba yapısı olan diziler (dizi) anlatılmıştır.
Sunum:

6 Bolum Diziler

Videolar:

7 – Java Nesneleri: Temeller

Java’da nesne odaklı program oluşturma temelleri anlatılıyor. Buradaki, sınıf oluşturma ve sınıfın yapısı, değişkenler ve metotlar, kurucular, nesne üretme, başlama sırası ile bu ettik statik anahtar kelimeler ele alınmaktadır.
Sunum:

7. Bölüm Java Nesneleri - Temeller

Videolar:

8 – Java Nesneleri: Organizasyon

Java’nın nesne odaklı programı oluşturma organizasyonel planlama anlatımı. Paket ve ithalat yapısı ve CLASSPATH, sarmalama (kapsülleme) ve bilgi saklama (bilgi gizleme), kontrol etme ve kontrol etme ve düzenleme becerisini alma alıanıyor.

Sunum:

8. Bolum Java Nesneleri - Organizasyon

Videolar:

9 – Tekrar Kullanım ve Kalıtım

Yazılımda tekrar kullanım (tekrar kullanılabilirlik) ve Java’daki -A sahiptir ile is-a yapıları yapısı ele alınacaktır. Saklama (gizleme) ve üstüne yazma / ezme (geçersiz kılma) mekanizmaları da bu arada ele alınacaktır. Ayrıca java.lang.Object sınıfı ve menüsünde metotlar bu bölümün genelinde aradadır.

Sunum:

9 Bolum Tekrar Kullanim Ve Miras

Videolar:

Java ile Nesne Merkezli Programlamaya Giriş eğitimi burada bitmiştir. Java ile Nesne Merkezli ve Fonksiyonel Programlama üzerine eğitimine devam edebilir.


Java ile Nesne Merkezli ve Fonksiyonel Programlama

Bu eğitim gelişimi “Java ile Nesne-Merkezli Programlamaya Giriş” eğitiminin devamıdır. Bu eğitimin sadece sunumları kullanılabilir açık olarak ayarladığınız. Konuların yazımı henüz bitmedi, yapılmasıkça buraya konacaktır. Eğitimin örnek kodları ve videoları için buraya bakabilirsiniz.

1 – Nesne-Merkezli Programlamaya Giriş Sınıflar, Nesneler ve Tekrar Kullanım

Java ile Nesne Merkezli Programlamaya Giriş nolu bölümlerinin kısa bir özetidir. Bilgili durumları kontrol edilebilirler.

Sunum:

1. Bölüm: Nesne-Merkezli Programlamaya Giriş Sınıflar, Nesneler Ve Tekrar Kullanım

2 – Çok Şekillilik (Polimorfizm)

Bu şehirde gezinme (upcasting), çok şekillilik (polimorfizm), alçaltma (downcasting) ve çalışma-zaman ipucu belirlemesi (run-time türü tanımlama) yapılacaktır.

Sunum:

2. Bölüm: Çok Şekillilik (Polimorfizm)

3 – Soyut Sınıflar (Soyut Sınıflar)

Soyut sınıflar (soyut sınıflar) incelenecektir.

Sunum:

3. Bölüm: Soyut Sınıflar (Soyut Sınıflar)

4 – Arayüzler (Arayüzler)

Arayüzler (arayüzler) ele alınacaktır. Java SE 8 ile gelen yenilikler de konular arasındadır.

Sunum:

4. Bölüm: Arayüzler (Arayüzler)

5 – Alt Sınıflar (İç İçe Sınıflar)

Alt sınıflar (iç içe sınıflar) ele alınacaktır.

Sunum:

5. Bolum Alt Sınıflar (İç İçe Sınıflar)

6. Bölüm Fonksiyonel Programlama (İşlevsel Programlama)

Java SE 1.8 ile birlikte gelenler programlama yapıları ele alınacaktır.

Sunum:

6. Bolum Fonksiyonel Programlama (İşlevsel Programlama)

7 – Sıradışı Durum Yönetimi (İstisna Yönetimi)

Sıra dışı durum yönetimi ve assert

Sunum:

7. Bölüm: Sıradışı Durum Yönetimi (İstisna Yönetimi)

8 – Torbalar (Koleksiyonlar)

Java’nın torbası çerçevesi (koleksiyon çerçevesi).

Sunum:

8. Bolum Torbalar (Koleksiyonlar)

9 – Genel Yapılar ve Akışlar (Jenerik ve Akarsular)

Genel yapılar (generics) ile Java SE 1.8 ile birlikte gelen akışlar (akışları) ele alınacaktır.

10 – Giriş / Çıkışın Temelleri (Giriş / Çıkış Temelleri)

Java’da temel GÇ (IO) mekanizmaları ele alınacaktır.

11 – Dosya Giriş / Çıkışı (Dosya Girişi / Çıkışı)

Java’nın dosya yönetimi ve dosya GÇ (IO) mekanizmaları ele alınacaktır.

12 – Çok Kanallı Programlama (Diş Açma)

Java’da çok kanallı (multi-thread) programlama ele alınacaktır. Ayrıca çok kanallı (multi-threaded) ortamlarda kaynak eşzamanlaması (eşzamanlılık) da inceleyeceğim.

13 – JDBC ile Veri Tabanı Programlama (JDBC ile Veri Tabanı Programlama)

Java’nın ilişkisel veri tabanlarıyla haberleşme bileşeni olan JDBC ele alınacaktır.

Ek-1 – Java API’si ve Ana Sınıfları (Java API’leri ve Ana Sınıflar)

Java’da sayı, string, tarih, takvim, biçimlendirme (biçimlendirme), düzenli ifadeler (normal ifadeler) gibi konular ele alınacaktır.

Ek-2 – Sınıf Tasarımı (Sınıf Tasarımı)

Yazılım geliştirme süreci ile Java’nın iyi sınıfları nasıl tasarlanır ve yazılır, tasarım tasarımı ve Java deyimleri, vb. konular ele alınacaktır.

Bu yazı toplam 39373 defa görüntülendi.



Yazar: Akin


Bu sayfada, Java’yı, temellerinden başlayarak, hiç bilmeyenlerin de öğrenebileceği şekilde derslerle anlatacağım. Derslerin sunumlarına, örnek kodlarına ve konu anlatım videolarına bu sayfadan ulaşabilirsiniz.

Dersler, bölümler olarak yazıldıkça ve videoları çekildikçe buraya konacaktır. İlgili örnek kodları da Eclipse projesi olarak burada paylaşacağım. Belki bu anlatımlar ileride bir kitaba dönüşür.

Java dersleri iki eğitimden oluşmaktadır: Java ile Nesne Merkezli Programlamaya Giriş ve Java ile Nesne Merkezli ve Fonksiyonel Programlama

Bu iki eğitim sırayla öğrenilmelidir. Çünkü Java ile Nesne Merkezli Programlamaya Giriş eğitimi, hem programlamaya hem de Java’ya giriş içeriğine sahiptir. Dolayısıyla programlamayı hiç bilmeyeneler ile programlama geçmişi olup da Java’yı öğrenmek isteyen bu eğitimle başlamalıdırlar. Aralarındaki fark bu eğitimi ne kadar hızlı öğrenip ilerleyecekleri olacaktır. Tabi olarak bu eğitim içeriğine hakim olanlar doğrudan bir sonraki eğitime geçebilirler.

Java ile Nesne Merkezli ve Fonksiyonel Programlama eğitimi ise, Java ile Nesne Merkezli Programlamaya Giriş üzerine bina edilen ve Java SE’nin daha ileri konularını ele alan bir içeriğe sahiptir. Temelde “Java biliyorum” diyecek seviyede olmak, bu iki eğitim içeriğine hakim olmak anlamına gelmektedir. Zaten Oracle’ın Java sertifikasyon sınavlarından OCA’in kapsamı genel olarak, Java ile Nesne Merkezli Programlamaya Giriş, OCP’nin kapsamı ise genel olarak, Java ile Nesne Merkezli ve Fonksiyonel Programlama içeriğiyle örtüşmektedir.

Dersler ve örnekler, Java SE’nin 8. sürümü üzerinden olacaktır. Java SE’ye 8. ve önceki sürümlerde katılan yeni özellikler yeri geldikçe ifade edilecektir. Ayrıca Java’yı öğrenmek için neleri bilmek gerektiğiyle ilgili buraya da bakabilirsiniz.

Dersin videolarında üzerinden gidilen sunumlar ile aşağıdan indireceğiniz sunumlar ve örnekler arasında ufa-tefek farklılıklar olabilir. Çünkü sunumları ve örnekleri sıklıkla güncelliyor ve buraya da güncellenmiş hallerini koyuyorum. Ama bölümlerin genel yapısı ve içerikleri aynıdır.

Sunumlardan da farkedeceğiniz gibi yaklaşımımda anlamak, “nasıl”lıkla beraber “neden”liği kavramak esastır. Hemen her konu ile ile ilgili, noktaya atış türünden ayrıntılı örnekleri de hazırlamaktayım. Bu kod örneklerinin hoşunuza gideceğini umuyorum. Öğrenmenizi daha sağlıklı ve daha zevkli hale getirmek için örneklerle oynayın, değişiklikler yapıp davranışını gözlemleyin. Programlama dilleri ancak ve ancak bol pratik yaparak öğrenilebilir.

Dersler sırasında vurgulamaya çalışacağım bir diğer tarz ise programlamayı daha geniş, Yazılım Mühendisliği bakış açısıyla ele almak ve detayları öğrenirken her birini büyük resme, bir yazılım mimarı edasıyla yerleştirebilme becerisini vermek. Zira ülkemizde yazılan programlama kitaplarındaki en temel eksik, bir “süreç” anlayışına sahip olmamalarıdır.

Bu sayfayla ve eğitim ve malzemeleriyle ilgili öneri ve eleştirilerinizi benimle paylaşırsanız, sevinirim.

Java ile Nesne Merkezli Programlamaya Giriş

Sunumlar

Bu eğitimin derslerinin sunumlarına, örneklerine ve bazı bölümlerin videolarına aşağıdan tek tek ulaşabileceğiniz gibi tüm bölümlerin sunumlarına, bir arada zip dosyası olarak da aşağıdaki linkten ulaşabilirsiniz.

Java ile Nesne-Merkezli Programlamaya Giriş

Örnek Kodlar

Eğitimin örnek kodları bir Eclipse projesi olarak düzenlenmiştir ve aşağıdaki linkten indirilebilir. Tek yapacağınız şey, zip dosyasını açıp sonrasında Eclipse’te “import” edip ufak tefek bazı ayarlarını yapmaktır. Bir projenin Eclipse’e nasıl import edileceği ve gerekli ayarları Giriş kısmındaki 2. videoda anlatılmaktadır.

Ayrıca projeyi import ettiğinizde içindeki Readme.txt dosyasını da okuyun, ilgili ayar bilgileri orada da vardır.

Java Ile Nesne Merkezli Programlamaya Giris

Videolar

Konu anlatım videoları Youtube’da play list olarak bulunmaktadır. Videolara aşağıda, konular altındaki linklerle ulaşabileceğiniz gibi “Java ile Nesne Merkezli Programlamaya Giriş” isimli play listten de ulaşabilirsiniz.

0 – Giriş

Bu eğitimle ilgili temel bilgilerin paylaşıldığı giriş bölümüdür. Sunumu yoktur, sadece iki tane videosu vardır:

1 – Java’ya Giriş

Java nedir? sorusu cevaplanmaktadır. Java’nın en temel özellikleri, ortaya çıkışı ve kısa tarihi, farklı tipleri ve sürümleri, öğrenme yöntemi, Oracle’ın sertifika sınavları ve dilin günümüz yazılım dünyasındaki yeri anlatılmaktadır.

Sunum

1  Bolum Java'ya Giris

Videolar:

2 – Nesne Merkezli Programlamaya Giriş

Bu bölümde nesne merkezli teorinin, soyutlama, sınıf, nesne, vb. temel kavramları ele alınmaktadır. Bu bölüm felsefi bir tarza sahiptir.

Sunum

2  Bolum Nesne-Merkezli Programlamanın Temelleri

Videolar:

3 – Java’nın Temelleri

Bu bölümde Java’nın temel yapıları ele alınıyor. Java kaynak kodunun yapısı, anahtar kelimeleri, veri tipleri, ifadeleri, cümleleri ve blokları ile kodlama standartları işlenmektedir.

Sunum

3  Bolum Java'nin Temelleri

Videolar:

 

4 – Operatörler

Java operatörleri ele alınacaktır.

Sunum

4  Bolum Operatorler

Videolar:

5 – Akış Kontrolü

Java’da akışın kontrolünü belirleyen yapılar ele alınacak, karar verme, tekrarlama ve dallanma yapıları anlatılacaktır.
Sunum

5  Bolum Akis Kontrolu

Videolar:

6 – Diziler

Java’da en basit torba yapısı olan diziler (array) anlatılmaktadır.
Sunum:

6  Bolum Diziler

Videolar:

7 – Java Nesneleri: Temeller

Java’da nesne merkezli programlamanın temelleri anlatılacaktır. Bu bölümde, sınıf oluşturma ve sınıfın bileşenleri, değişkenler ve metotlar, kurucular, nesne üretme, başlama sırası ile this ve static anahtar kelimeleri ele alınmaktadır.
Sunum

7. Bölüm Java Nesneleri - Temeller

Videolar:

8 – Java Nesneleri: Organizasyon

Java’da nesne merkezli programlamanın organizasyonel özellikleri anlatılacaktır. Paket ve import yapısı ve CLASSPATH, sarmalama (encapsulation) ve bilgi saklama (information hiding), erişim kontrol yapıları ve bellek organizasyonu bu bölümde ele alıancaktır.

Sunum: 

8. Bolum Java Nesneleri - Organizasyon

Videolar:

9 – Tekrar Kullanım ve Kalıtım

Yazılımda tekrar kullanım (reusability) ve Java’daki has-a ile is-a yapıları yapısı ele alınacaktır. Saklama (hiding) ve üstüne yazma/ezme (overriding) mekanizmaları da bu bölümde ele alınacaktır. Ayrıca java.lang.Object sınıfı ve üzerindeki metotlar bu bölümün konuları arasındadır.

Sunum

9  Bolum Tekrar Kullanim Ve Miras

Videolar:

 

Java ile Nesne Merkezli Programlamaya Giriş eğitimi burada bitmiştir. Java ile Nesne Merkezli ve Fonksiyonel Programlama üzerine eğitimine devam edebilirsiniz.


Java ile Nesne Merkezli ve Fonksiyonel Programlama

Bu eğitim yukarıdaki “Java ile Nesne-Merkezli Programlamaya Giriş” eğitiminin devamıdır. Bu eğitimin sadece sunumları kullanıma açık olarak aşağıda verilmektedir. Konuların yazımı henüz bitmemiştir, yazıldıkça buraya konacaktır. Eğitimin örnek kodları ve videolarına ulaşmak için buraya bakabilirsiniz.

1 – Nesne-Merkezli Programlamaya Giriş Sınıflar, Nesneler ve Tekrar Kullanım

Java ile Nesne Merkezli Programlamaya Giriş eğitiminin nesne merkezli programlamaya giriş yapan 7, 8 ve 9 nolu bölümlerinin kısa bir özetidir. Doğrudan bu eğitime başlayanlar bu bölüm ile kendilerini bilgi durumlarını kontrol edebilirler.

Sunum:

1.  Bölüm: Nesne-Merkezli Programlamaya Giriş Sınıflar, Nesneler Ve Tekrar Kullanım

 

2 – Çok Şekillilik (Polymorphism)

Bu bölümde yükseltme (upcasting), çok şekillilik (polymorphism), alçaltma (downcasting) ve çalışma-zamanı tip belirlemesi (run-time type identification) incelenecektir.

Sunum: 

2.  Bölüm: Çok Şekillilik (Polymorphism)

 

3 – Soyut Sınıflar (Abstract Classes)

Soyut sınıflar (abstract classes) incelenecektir.

Sunum: 

3.  Bölüm: Soyut Sınıflar (Abstract Classes)

 

4 – Arayüzler (Interfaces)

Arayüzler (interfaces) ele alınacaktır. Java SE 8 ile gelen yenilikler de konular arasındadır.

Sunum: 

4.  Bölüm: Arayüzler (Interfaces)

 

5 – Alt Sınıflar (Nested Classes)

Alt sınıflar  (nested classes) ele alınacaktır.

Sunum:

5. Bolum Alt Sınıflar (Nested Classes)

 

6. Bölüm Fonksiyonel Programlama (Functional Programming)

Java SE 1.8 ile birlikte gelen fonksiyonel  programlama yapıları ele alınacaktır.

Sunum: 

6. Bolum Fonksiyonel Programlama (Functional Programming)

 

7 – Sıradışı Durum Yönetimi (Exception Handling)

Sıra dışı durum yönetimi ve assert anahtar kelimesinin kullanımı incelenecektir.

Sunum: 

7.  Bölüm: Sıradışı Durum Yönetimi (Exception Handling)

 

8 – Torbalar (Collections)

Java’nın torba çerçevesi (collections framework) anlatılacaktır.

Sunum:

8. Bolum Torbalar (Collections)

 

9 – Genel Yapılar ve Akışlar (Generics and Streams)

Genel yapılar (generics) ile Java SE 1.8 ile birlikte gelen akışlar (streams) ele alınacaktır.

 

10 – Giriş/Çıkışın Temelleri (Fundamentals of Input/Output)

Java’da temel GÇ (IO) mekanizmaları ele alınacaktır.

 

11 – Dosya Giriş/Çıkışı (File Input/Output)

Java’da dosya yönetimi ve dosya GÇ (IO) mekanizmaları ele alınacaktır.

 

12 – Çok Kanallı Programlama (Threading)

Java’da çok kanallı (multi-threaded) programlama ele alınacaktır. Ayrıca çok kanallı (multi-threaded) ortamlarda kaynak eşzamanlaması (concurrency) da incelenecektir.

 

13 – JDBC ile Veri Tabanı Programlama (Database Programming with JDBC)

Java’nın ilişkisel veri tabanlarıyla haberleşme bileşeni olan JDBC ele alınacaktır.

 

Ek-1 – Java API’si ve Ana Sınıfları (Java APIs and Main Classes)

Java’da sayı, string, tarih, takvim, biçimlendirme (formatting), düzenli ifadeler (regular expressions) gibi konular ele alınacaktır.

 

Ek-2 – Sınıf Tasarımı (Class Design)

Yazılım geliştirme süreci ile Java’da iyi sınıflar nasıl tasarlanır ve yazılır, tasarım şablonları ve Java deyimleri, vb. konular ele alınacaktır.

Bu yazı toplam 39373 defa görüntülenmiştir.



Yazar: Fivane


Buyarak, Java’yı, temellerini başlayarak, hiç bilmeyenlerin de öğrenebileceği şekilde derslerle anlatacağım. Derslerin sunumlarına, örnek kodlarına ve konu anlatım videolarına bu sayfadan bakın.

Dersler, bölümler olarak yazıldıkça ve videoları çekildikten buraya konacaktır. İlgili örnek kodları da Eclipse projesi olarak burada paylaşacağım. Belki bu anlatımlar ileride bir kitaba dönüşür.

Java dersleri iki eğitimden oluşan: Java ile Nesne Merkezli Programlamaya Giriş ettik Java ile Nesne Merkezli ve Fonksiyonel Programlama

Bu iki eğitim sırayla öğrenilebilir. Çünkü Java ile Nesne Merkezli Programlamaya Giriş eğitimi, hem programlamaya hem de Java’ya giriş içeriğine sahiptir. Java'nın programlama isteğinde bu eğitimle başlamalıdırlar. Aralarındaki fark bu eğitim ne kadar hızlı öğrenip ilerliyorleri olacak. Tabi olarak bu eğitim içeriğini hakim olan kullanıcılar bir sonraki eğitici geçebilirler.

Java ile Nesne Merkezli ve Fonksiyonel Programlama eğitimi ise, Java ile Nesne Merkezli Programlamaya Giriş üzerine bina edilen ve Java SE’nin daha ileri konularını ele alan bir içeriğe sahiptir. Temelde “Java menüleri” diyecekleriniz olmak, bu iki eğitim içeriğine hakim olmak gerekir. Zaten Oracle’ın Java sertifikasyon sınavlarından OCA’ın kapsamlıı genel olarak, Java ile Nesne Merkezli Programlamaya Giriş, OCP’nin kapsamlıı ise genel olarak Java ile Nesne Merkezli ve Fonksiyonel Programlama içeriğini örtüşmekte.

Dersler ve seçenekleri, Java SE’nin 8. sürümü gelecekteki. Java SE’ye 8. ve önceki sürümlerde gelen yeni özellikler yeri geldiğinde ifade edilir. Ayrıca Java’yı temizlemek için neleri bilmek istediğinizigiyle ilgili buraya da bakabilirsiniz.

Hedef videolarında gelen gidilen sunumlar ile aşağıdan indireceğiniz sunumlar ve diğerleri arasında ufa-tefek farklılıklar olabilir. Çünkü sunumları ve örnekleri planlanmış ve buraya da planlanmış hallerini koyuyorum. Ama bölümlerin genel yapısı ve yönetimi aynıdır.

Sunumlardan da farkedeceğiniz gibi kavramımdasınız, “nasıl” lıkla beraber “neden” liği kavramak esastır. Hemen konu konu ile ilgili, noktaya atış türünden detaylı şekilde de hazırlantayım. Bu kod örneklerinin hoşunuza gideceğini umuyorum. Öğrenmeyi daha sağlıklı ve daha zevkli hale getirmek için örneklerle oynayın, bunu yapıp davranışını gözlemleyin. Programlama dilleri ancak ve ancak bol pratik yaparak öğrenilebilir.

Dersler açılması vurgulamaya çalışacağım bir diğer tarz program program daha geniş, Yazılım Mühendisliği bakış açısını ele almak ve planlamayı öğreniyor, her birini büyük resme, bir yazılım mimarı edasıyla yerleştirebilme becerisini vermek. Zira ülkemiz yazılan programlama kitaplarındaki en temel eksik, bir “süreç” anlayışına sahip olmamalarıdır.

Bu sayfayla ve eğitim ve malzemeleriyle ilgili öneri ve eleştirilerinizi benimle paylaşırsanız, sevinirim.

Java ile Nesne Merkezli Programlamaya Giriş

Sunumlar

Bu eğitimin derslerinin sunumlarına, örneklerin ve bazı bölümlerin videolarına aşağıdan tek tek ulaşılabilir gibi tüm bölümlerin tanıtımlarına, bir arada zip dosyası olarak da aşağıdaki linkten bağlanılabilir.

Java ile Nesne-Merkezli Programlamaya Giriş

Örnek Kodlar

Eğitimin örnek kodları bir Eclipse projesi olarak düzenlenmiştir ve aşağıdaki linkten yapılmıştır. Tek yapmanızınız şey, zip menüsü açıp giden Eclipse’te “import” edip ufak tefek yapmanız gereken şeyler yapmaktır. Bir projenin Eclipse’e nasıl ithal edileceği ve gerekli ayarları Giriş bölümündeki 2. videoda anlatıldı.

Ayrıca projeyi ithal ederekde edinilenler Readme.txt tarihinde da açıklaması, ilgili ayar bilgileri orada da vardır.

Java Ile Nesne Merkezli Programlamaya Giriş

Videolar

Konu anlatım videoları Youtube’da çalma listesi olarak gösteriyor. Videolara ayırarak, konulardaki linklerle ulaşabileceğimiz gibi “Java ile Nesne Merkezli Programlamaya Giriş”Adlı play listten de etkinleştir.

0 – Giriş

Bu eğitimle ilgili temel bilgileri paylaşılan giriş bölümüdür. Sunumu yoktur, sadece iki tane videosu vardır:

1 – Java’ya Giriş

Java nedir? sorusu cevaplıyor. Java’nın en temel özellikleri, ortaya çıkması ve kısa tarihi, farklı özellikleri ve sürümleri, öğrenme yöntemi, Oracle’ın sertifika sınavları ve dilin günümüz yazılım dünyasındaki yeri anlatılmaktadır.

Sunum:

1 Bolum Java'ya Giriş

Videolar:

2 – Nesne Merkezli Programlamaya Giriş

Bulanık nesne odaklı teorinin, soyutlama, sınıf, nesne, vb. temel düzeyde ele alınmaktadır. Bu bölüm felsefi bir tarza vardır.

Sunum:

2 Bolum Nesne-Merkezli Programı hazırlama Temelleri

Videolar:

3 – Java’nın Temelleri

Bulanık Java’nın temel yapısını ele alınıyor. Java kaynak kodunun yapısı, anahtar sözcükleri, veri tipleri, ifadeleri, cümleleri ve blokları ile kodlama simgeleri işlenmesi.

Sunum:

3 Bolum Java'nin Temelleri

Videolar:

4 – Operatörler

Java operatörleri ele alınacaktır.

Sunum:

4 Bolum Operatörü

Videolar:

5 – Akış Denetimi

Java’da akışın kontrolünü belirleyen yapılar ele alınacak, karar verme, tekrarlama ve dallanma yapıları anlatılmaktadır.
Sunum:

5 Bolum Akis Kontrolu

Videolar:

6 – Diziler

Java’da en basit torba yapısı olan diziler (dizi) anlatılmıştır.
Sunum:

6 Bolum Diziler

Videolar:

7 – Java Nesneleri: Temeller

Java’da nesne odaklı program oluşturma temelleri anlatılıyor. Buradaki, sınıf oluşturma ve sınıfın yapısı, değişkenler ve metotlar, kurucular, nesne üretme, başlama sırası ile bu ettik statik anahtar kelimeler ele alınmaktadır.
Sunum:

7. Bölüm Java Nesneleri - Temeller

Videolar:

8 – Java Nesneleri: Organizasyon

Java’nın nesne odaklı programı oluşturma organizasyonel planlama anlatımı. Paket ve ithalat yapısı ve CLASSPATH, sarmalama (kapsülleme) ve bilgi saklama (bilgi gizleme), kontrol etme ve kontrol etme ve düzenleme becerisini alma alıanıyor.

Sunum:

8. Bolum Java Nesneleri - Organizasyon

Videolar:

9 – Tekrar Kullanım ve Kalıtım

Yazılımda tekrar kullanım (tekrar kullanılabilirlik) ve Java’daki -A sahiptir ile is-a yapıları yapısı ele alınacaktır. Saklama (gizleme) ve üstüne yazma / ezme (geçersiz kılma) mekanizmaları da bu arada ele alınacaktır. Ayrıca java.lang.Object sınıfı ve menüsünde metotlar bu bölümün genelinde aradadır.

Sunum:

9 Bolum Tekrar Kullanim Ve Miras

Videolar:

Java ile Nesne Merkezli Programlamaya Giriş eğitimi burada bitmiştir. Java ile Nesne Merkezli ve Fonksiyonel Programlama üzerine eğitimine devam edebilir.


Java ile Nesne Merkezli ve Fonksiyonel Programlama

Bu eğitim gelişimi “Java ile Nesne-Merkezli Programlamaya Giriş” eğitiminin devamıdır. Bu eğitimin sadece sunumları kullanılabilir açık olarak ayarladığınız. Konuların yazımı henüz bitmedi, yapılmasıkça buraya konacaktır. Eğitimin örnek kodları ve videoları için buraya bakabilirsiniz.

1 – Nesne-Merkezli Programlamaya Giriş Sınıflar, Nesneler ve Tekrar Kullanım

Java ile Nesne Merkezli Programlamaya Giriş nolu bölümlerinin kısa bir özetidir. Bilgili durumları kontrol edilebilirler.

Sunum:

1. Bölüm: Nesne-Merkezli Programlamaya Giriş Sınıflar, Nesneler Ve Tekrar Kullanım

2 – Çok Şekillilik (Polimorfizm)

Bu şehirde gezinme (upcasting), çok şekillilik (polimorfizm), alçaltma (downcasting) ve çalışma-zaman ipucu belirlemesi (run-time türü tanımlama) yapılacaktır.

Sunum:

2. Bölüm: Çok Şekillilik (Polimorfizm)

3 – Soyut Sınıflar (Soyut Sınıflar)

Soyut sınıflar (soyut sınıflar) incelenecektir.

Sunum:

3. Bölüm: Soyut Sınıflar (Soyut Sınıflar)

4 – Arayüzler (Arayüzler)

Arayüzler (arayüzler) ele alınacaktır. Java SE 8 ile gelen yenilikler de konular arasındadır.

Sunum:

4. Bölüm: Arayüzler (Arayüzler)

5 – Alt Sınıflar (İç İçe Sınıflar)

Alt sınıflar (iç içe sınıflar) ele alınacaktır.

Sunum:

5. Bolum Alt Sınıflar (İç İçe Sınıflar)

6. Bölüm Fonksiyonel Programlama (İşlevsel Programlama)

Java SE 1.8 ile birlikte gelenler programlama yapıları ele alınacaktır.

Sunum:

6. Bolum Fonksiyonel Programlama (İşlevsel Programlama)

7 – Sıradışı Durum Yönetimi (İstisna Yönetimi)

Sıra dışı durum yönetimi ve assert

Sunum:

7. Bölüm: Sıradışı Durum Yönetimi (İstisna Yönetimi)

8 – Torbalar (Koleksiyonlar)

Java’nın torbası çerçevesi (koleksiyon çerçevesi).

Sunum:

8. Bolum Torbalar (Koleksiyonlar)

9 – Genel Yapılar ve Akışlar (Jenerik ve Akarsular)

Genel yapılar (generics) ile Java SE 1.8 ile birlikte gelen akışlar (akışları) ele alınacaktır.

10 – Giriş / Çıkışın Temelleri (Giriş / Çıkış Temelleri)

Java’da temel GÇ (IO) mekanizmaları ele alınacaktır.

11 – Dosya Giriş / Çıkışı (Dosya Girişi / Çıkışı)

Java’nın dosya yönetimi ve dosya GÇ (IO) mekanizmaları ele alınacaktır.

12 – Çok Kanallı Programlama (Diş Açma)

Java’da çok kanallı (multi-thread) programlama ele alınacaktır. Ayrıca çok kanallı (multi-threaded) ortamlarda kaynak eşzamanlaması (eşzamanlılık) da inceleyeceğim.

13 – JDBC ile Veri Tabanı Programlama (JDBC ile Veri Tabanı Programlama)

Java’nın ilişkisel veri tabanlarıyla haberleşme bileşeni olan JDBC ele alınacaktır.

Ek-1 – Java API’si ve Ana Sınıfları (Java API’leri ve Ana Sınıflar)

Java’da sayı, string, tarih, takvim, biçimlendirme (biçimlendirme), düzenli ifadeler (normal ifadeler) gibi konular ele alınacaktır.

Ek-2 – Sınıf Tasarımı (Sınıf Tasarımı)

Yazılım geliştirme süreci ile Java’nın iyi sınıfları nasıl tasarlanır ve yazılır, tasarım tasarımı ve Java deyimleri, vb. konular ele alınacaktır.

Bu yazı toplam 39373 defa görüntülendi.



Veritabanında Denetleme (Audit)


Veritabanında standart denetleme audit_trail parametresine değer (os, db, db extended, xml, xml extended) atanması ile başlar. Eğer denetlemeyi durdurmak istersek parametre NONE yapılmalıdır. Bu parametrenin none yapılması ile beraber veritabanı kapatılıp açıldığında tüm denetleme durmuş olur.

Denetlemeler komut, yetki, obje ve network aktiviteleri bazında tanımlanır. Denetleme başlatmak için AUDIT, durdurmak için NOAUDIT komutu kullanılmalıdır.

Bir kullanıcı kendine ait tüm kullanıcılar üzerinde AUDIT başlatabilir. Başka kullanıcıların objeleri üzerinde AUDIT başlatmak için ise AUDIT ANY yetkisi olmalıdır. Sistem yetkileri üzerinde AUDIT tanımlamak için AUDIT SYSTEM yetkisi olmalıdır. NOAUDIT komutunun çalıştırılması için ise özel bir yetkiye gerek yoktur.

O7_DICTIONARY_ACCESSIBILITY parametresi FALSE ise denetim izleri yalnızca SYSDBA yekili kullanıcılar tarafında silinebilir. DELETE ANY TABLE yetkisine sahip kullanıcılar dahi silemezler.

Tüm denetim kayıtları herhangi bir transaction’ın tanımlanmasını beklemeden, denetlenecek komutun çalışma anında yazılır.

Komutların Denetlenmesi

Komut bazında denetleme yapılması, kullancıların çalıştırdığı,

  • DML(INSERT, UPDATE, DELETE, SELECT)
  • DDL(CREATE, DROP….)

gibi veritabanı komutlarının denetlenmesi işlemidir. Denetleme yaparken denetleyeceğimiz obje türünü girmemiz yeterlidir. AUDIT komutunda yazdığınız obje türüne türüne göre istenilen komutlar denetlenir. Obje türüne göre denetleyebileceğimiz komutlar aşağıdaki gibidir.

Oracle Audit System

 

 

 

 

 

 

 

Bu tür komut bazlı denetlemeyi başlatmak için AUDIT SYSTEM yetkisine sahip olunması gerekir. (dba_sys_privs viewi sorgulanarak yetki sahipleri bulunabilir) Komut bazında denetleme yeni session açıldığında aktif olur.

Örneğin tablo objesi DELETE komutunun tüm veritabanında denetlenmesi için aşağıdaki komutu çalıştırabiliriz.


audit delete table by access;

Yada sadece SYSTEM kullanıcısında çalıştırılan SELECT TABLE komutunu denetlemek istersek aşağıdaki komutu çalıştırabiliriz.


audit select table by system;

Verilen audit leri görmek için DBA_STMT_AUDIT_OPTS viewini sorgulayabiliriz.

Oracle Audit Privilege

 

 

Yukarıdaki resimdede görüldüğü gibi;

  • SYSTEM kullanıcısında çalışan tüm SELECT TABLE komutları
  • SYSTEM kullanıcısının çalıştırdığı tüm komutların
  • EXEMPT ACCESS POLICY yetkisini veren GRANT komutlarının
  • Bütün kullanıcılarda olmak üzere DELETE TABLE komutlarının denetlendiğini görmekteyiz.

Yukarıdaki resimdede görüldüğü gibi SYSTEM kullanıcısının hem ALL STATEMENTS, hemde SELECT TABLE komutuyla denetlenmektedir. Bu durumda SYSTEM kullanıcısı SELECT TABLE çalıştırdığında 2 tanemi denetim izi olacak diye soru işaretimiz olabilir fakat bu doğru bir yaklaşım değildir sadece bir tane denetim izi oluşur.

AUDIT DELETE TABLE BY ACCESS komutunda kullanılan BY ACCESS eki her bir delete komutu için bir denetim kaydı oluşturulacağını gösterir. BY ACCESS yerine BY SESSION kullanılırsa sessionlar’da kullanılan tüm delete komutlarına karşılık gelen tek bir denetim izi tutulacaktır. Bu nedenle BY SESSİON ile tutulan denetim izinleri bize detaylı bilgi vermez.

Standart olarak başarılı ve başarısız tüm komutlar denetlenir. Sadece başarılı komutları denetlemek istersek WHENEVER SUCCESSFUL, sadece başarısız komutları denetlemek istersek WHENEVER NOT SUCCESSFUL kelimelerini ekleriz.. Örn;


AUDIT UPDATE TABLE, INSERT TABLE  BY ACCESS WHENEVER NOT SUCCESSFUL;

Şu anda bağlı olan session’da çalışan tüm komutlar içinde denetim izi oluşturmak istersek, aşapıdaki komutu kullanırız.


AUDIT ALL STATEMENTS IN SESSION CURRENT;

Bu komut özellikle logon trigger içinde kullanıldığında, veritabanına bağlanan tüm sessionlar için denetim izleri toplamaya başlarız. Örn ad-hoc bir sorgulama programı olan SQL*Plus ile veritabanına bağlanan kullanıcıların komutlarını denetlemek istersek aşağıdaki gibi bir logon trigger yazmalıyız.


CREATE OR REPLACE TRIGGER SYS.SQLPLUS_LOGON_TRIGGER
   AFTER LOGON
   ON DATABASE
DECLARE
BEGIN
   IF 
            UPPER (SYS_CONTEXT ('userenv'), 'MODULE') LIKE '%SQL%PLUS%'  OR  
            UPPER (SYS_CONTEXT ('userenv'), 'MODULE') LIKE '%SQLPLUS%'
   THEN
      EXECUTE IMMEDIATE 'AUDIT ALL STATEMENTS IN SESSION CURRENT;';
   END IF;
EXCEPTION
   WHEN OTHERS
   THEN
      NULL;
END;
/

Veritabanına bağlanan tüm kullanıcılar denetlemek istersek aşağıdaki komutu çalıştırmalıyız. Ama fazla transaction olan yerde büyük sıkıntılara neden olabilir.


ADUIT SESSION BY ACCESS;

Birkaç pratik örnek yapacak olursak;

  • Sadece belirli bir kullanıcının çalıştırdığı bütün komutları denetlemek istersek, aşağıdaki komutu vermeliyiz.

AUDIT SESSION BY MUSTAFA BY ACCESS;
  • User bazlı denetleme için

AUDIT SELECT TABLE, UPDATE TABLE BY KAMIL, MUSTAFA BY ACCESS;
  • Login ve logout’ ların Audilenmesi;

AUDIT SESSION BY ACCESS;
  • Userların tüm SQL Statement’ larının Auditlenmesi

AUDIT ALL STATEMENTS BY MUSTAFA BY ACCESS;

Yetkilerin Denetlenmesi

Yetkilerin denetlenmesi bir kullanıcısnın sistem yetkilerini kullanarak yaptığı işlerin denetlenmesidir.Örn bir kullanıcının CREATE ANY TABLE yetkisi varsa ve bu yetkiyi kullanarak başka kullanıcılarda tablo yarattığında denetim izi oluşsun istiyorsak yetki denetlemesi yapmalıyız.

Kullanıcının yetkiye sahip olmadan erişebildiği nesneler için yetki denetlemesi yapılamaz. Örn bir kullanıcı kendi şemasında bulunan tabloları zaten select edebileceği için (SELECT ANY TABLE yetkisine  ihtiyaç yoktur) bu tür durumlarda yetki denetlemesi ile denetlenmez (Komut denetlenmesi yapılabilir.) Ama bir kullanıcı başka bir kullanıcının tablolarına SELECT ANY TABLE yetkisi ile eriştiği anda yetki denetlemesine takılır.

Yetki denetlemesi hem kullanıcı hemde veritabanı bazında olabilir. Yetki denetlemesi yapacak kullanıcının AUDIT SYSTEM yetkisi olmalıdır. Yetki denetlemesi ile denetleme yapabileceğimiz sistem yetkileri aşağıdaki gibidir.

ADMIN CREATE ANY VIEW DROP ANY SEQUENCE
ALTER ANY CACHE GROUP CREATE CACHE GROUP DROP ANY SYNONYM
ALTER ANY INDEX CREATE MATERIALIZED VIEW DROP ANY TABLE
ALTER ANY MATERIALIZED VIEW CREATE PROCEDURE DROP ANY VIEW
ALTER ANY PROCEDURE CREATE PUBLIC SYNONYM DROP PUBLIC SYNONYM
ALTER ANY SEQUENCE CREATE SEQUENCE EXECUTE ANY PROCEDURE
ALTER ANY TABLE CREATE SESSION FLUSH ANY CACHE GROUP
ALTER ANY VIEW CREATE SYNONYM INSERT ANY TABLE
CACHE_MANAGER CREATE TABLE LOAD ANY CACHE GROUP
CREATE ANY CACHE GROUP CREATE VIEW REFRESH ANY CACHE GROUP
CREATE ANY INDEX DELETE ANY TABLE SELECT ANY SEQUENCE
CREATE ANY MATERIALIZED VIEW DROP ANY CACHE GROUP SELECT ANY TABLE
CREATE ANY PROCEDURE DROP ANY INDEX UNLOAD ANY CACHE GROUP
CREATE ANY SEQUENCE DROP ANY MATERIALIZED VIEW UPDATE ANY TABLE
CREATE ANY SYNONYM DROP ANY PROCEDURE XLA
CREATE ANY TABLE

 

  • Bellirli bir kullanıcıya denetim izi oluşturmak.

AUDIT CREATE ANY TABLE BY MUSTAFA;
  • Tüm kullanıcıda denetim izi oluşturmak.

AUDIT DELETE ANY TABLE;
  • Yetkileri kaldırmak için.

NOAUDIT CREATE ANY TABLE BY MUSTAFA;

NOAUDIT DELETE ANY TABLE;

Obje Denetlenmesi

Objelerin denetlenmesi ile şemadaki bir nesne tüm veritabanı kullacıları için denetlenir. Bu tür bir denetleme belirli bir kullanıcının nesne üzerindeki erişimleri için kullanılmaz.  Yapılan denetim tanımı tüm kullanıcılar için geçerlidir.

Bir kullanıcı sahip olduğu nesneler üzerinde AUDIT tanımlama yetkisine sahiptir. Başka kullanıcıların nesneleri üzerinden denetleme tanımlayabilmesi için AUDIT ANY yetkisine sahip olmalıdır.

Örnegin bir obje için denetlme yapmak istesek.


AUDIT SELECT,INSERT,UPDATE ON MUSTAFA.TEST_TABLE BY ACCESS;

DBA_OBJ_AUDIT_OPTS görüntüsü ile objler üzerinde yapılan denetlemeler sorgulanır.

Oracle Audit Object

 

 

  • OWNER : Obje Sahibi
  • OBJECT_NAME : Obje İsmi
  • OBJECT_TYPE : Obje Tipi
  • ALT : Alter komutu Başarılı/Başarısız
  • AUD : Audit komutu Başarılı/Başarısız
  • COM : Comment komutu Başarılı/Başarısız
  • DEL : Delete komutu Başarılı/Başarısız
  • GRA : Grant komutu Başarılı/Başarısız
  • IND : Index komutu Başarılı/Başarısız
  • INS : Insert komutu Başarılı/Başarısız
  • LOC : Lock komutu Başarılı/Başarısız
  • REN : Rename komutu Başarılı/Başarısız
  • SEL : Select komutu Başarılı/Başarısız
  • UPD : Update komutu Başarılı/Başarısız
  • REF : Reference komutu Başarılı/Başarısız
  • EXE : Execute komutu Başarılı/Başarısız
  • CRE : Create komutu Başarılı/Başarısız
  • REA : Read komutu Başarılı/Başarısız
  • WRI : Write komutu Başarılı/Başarısız
  • FBK : Flashback komutu Başarılı/Başarısız

Kolon içerikleri ise aşağıdaki şekilde değerlendirilir.

  • -/- : Denetlenme tanımlanmamış
  • A/- : Komut başarılı çalıştığında denetleme yapılıyor (By Access)
  • -/A : Komut başarısız olduğunda denetleme yapılıyor (By Access)
  • A/A : Komut başarılı veya başarısız olduğunda denetleme yapılıyor (By Access)
  • S/- : Komut başarılı çalıştığında denetleme yapılıyor (By Session)
  • -/S : Komut başarısız olduğunda denetleme yapılıyor (By Session)
  • S/S : Komut başarılı veya başarısız olduğunda denetleme yapılıyor (By Session)

Veritaanında henüz yaratılmayan nesnelerin denetlenmesinide tanımlayabiliriz. Bu kullanım AUDIT komut içinde ON DEFAULT tanımının kullanılması ile yapılır ve standart olarak denetlemeler  all_def_audit_opts viewi ile sorgulanır.

Oracle Standart Auditing

 

 

 

 

Veritabanında Standart Olarak Kullanılan Denetleme Tanımları

Bir veritabanı standart olarak dbca arabirimi ile yaratıldığında, denetim izleri veritabanında tutulur. Audit_trail parametresi DB olarak atanır. $ORACLE_HOME/rdbms/admin dizinindeki secconf.sql dosyası çalıştırılarak veritabanındaki standart denetimler tanımlanır.

Veritabanı oluşturulduğunda tanımlanan standart denetimleri geri almak istersek aynı dizindeki undoaud.sql dosyasını çalıştırmalıyız.

Kendi yarattığımız veritabanlarında standart denetleme tanımlarını yapmak istersek secconf.sql betiğini değiştirebiliriz.

  • Audit alter any table by access;
  • Audit create any table by access;
  • Audit drop any table by access;
  • Audit Create any procedure by access;
  • Audit Drop any procedure by access;
  • Audit Alter any procedure by access;
  • Audit Grant any privilege by access;
  • Audit grant any object privilege by access;
  • Audit grant any role by access;
  • Audit audit system by access;
  • Audit create external job by access;
  • Audit create any job by access;
  • Audit create any library by access;
  • Audit create public database link by access;
  • Audit exempt access policy by access;
  • Audit alter user by access;
  • Audit create user by access;
  • Audit role by access;
  • Audit create session by access;
  • Audit drop user by access;
  • Audit alter database by access;
  • Audit alter system by access;
  • Audit alter profile by access;
  • Audit drop profile by access;
  • Audit database link by access;
  • Audit system audit by access;
  • Audit profile by access;
  • Audit public synonym by access;
  • Audit system grant by access;
  • Audit directory by access;

Orta Katman Kullanıcılarının Denetlenmesi

Orta katman uygulamaları veritabanına bağlanırken, veritabanında daha önceden açılmış bir session’ı kullanırlar. Orta katman kullanıcıları aslında veritabanında ortak bir veritabanı kullanıcısı kullanır. Bu nedenle denetleme açısından bakıldığında orta katmandan gelen kullanıcılar için özel bir çalışma yapılmadığı sürece birbirinden ayırt etmek imkansızdır..

Orta katmandan bağlanan kullanıcıların veritabanında denetlenebilmesi için kullanılacak seçeneklerden biri, veritabanına bağlantı kurarken orta katman tarafında CLIENT_IDENTIFIER alanının set edilmesidir. Bu durumda her bir uygulama kullanıcısı veritabanına bağlandığında , oracle.jdbc.driver.OracleConnection paketi ile bağlantı yaparken setClientIdentified() metodu kullanılarak CLIENT_IDENTIFIED alanına kullanıcı kodu atar. Java tarafında tarafında CLIENT_IDENTIFIER alanına değer atamak için farklı metodlar bulunmaktadır. Bunun dışında diğer bir yöntem ise Dynamic Monitoring Service tanımının kullanılmasıdır.

Client_identifier bilgisine USERENV uygulama bağlamı ile erişilir.

Anıl Akduygu Oracle Veritabanı Güvenliği
https://docs.oracle.com/cd/E11882_01/server.112/e10575/tdpsg_auditing.htm#TDPSG52529
http://www.kamilturkyilmaz.com/2011/01/21/oracle%E2%80%99-da-audit-mekanizmasi/

İyi Çalışmalar…
Mustafa Bektaş Tepe

6,539 total views, 12 views today


Oracle Audit – Denetim İzlerinin Yönetilmesi


Denetim izleri yapılan konfigürasyona göre veritabanında tablo olarak veya işletim sisteminde dosya olarak tutulmaktadır. Bu denetim izlerini silmek veya başka ortamlara taşımak için farklı yöntemler kullanılabilir. Fakar Oracle 11g ile beraber denetim izlerinin yönetilmesi için DBMS_AUDIT_MGMT paketi kullanılmaya başlanmıştır. Böylece değişik ortamlarda tutulan denetim izleri tek bir paket ile yönetilebilir hale gelmiştir. DBMS_AUDIT_MGMT paketi denetim izleri üzerinde taşıma silme işlemi yaparken veritabanındaki sessionları bekler duruma getirmez ve kullanıcılar çalışmalarına kesintisiz devam ederler. Bu nedenle değişik yöntemler ile denetim izlerini yönetebilmemize rağmen(Örneğin tabloda ise DELETE komutu, işletim sisteminde ise rm komutu kullanabiliriz) DBMS_AUDIT_MGMTpaketini kullanmak daha doğrudur.

Veritabanında Saklanılan Denetim İzlerinin Farklı Tablespacelere Taşınması

Veritabanında tutulan standart denetim izleri SYS.AUD$ tablosunda, ayrıntılı denetim izleride(Fine Grained Auditing-log mekanizması diyebiliriz) FGA_LOG$ tablolarında tutulur. Veritabanı ilk yaratıldığında bu tablolar varsayılan olarak SYSTEM tablespace’inde tutulur. Ama tabloların büyümesi ve denetleme politikası nedeniyle SYSTEM tablespace üzerinde baskı oluşabilir. Bu nedenle sık sık silinmesi ve sürekli ekleme yapılan tabloları ayrı bir tablespace’e taşımak isteriz.

Bu işlem DBMS_AUDIT_MGMT.set_audit_trail_location veritabanı paketi ile yapılır. Bu paket 2 tane parametre alır. Bir tanesi taşımak istediğiniz tablo türünü gösteren parametre, diğeri ise tabloların taşınacağı tablespace adıdır.

Tablo türünü gösteren parametre aşağıdaki 3 değerden birini alır.

  • DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD: Standard denetim izi (AUD$).
  • DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD: Ayrıntılı enetim izi (FGA_LOG$).
  • DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD : Standart ve Ayrıntılı denetim izi için.

SELECT table_name, tablespace_name
FROM dba_tables
WHERE table_name IN ('AUD$', 'FGA_LOG$')
ORDER BY table_name;
TABLE_NAME   TABLESPACE_NAME
------------------------------ ------------------------------
AUD$            SYSTEM
FGA_LOG$        SYSTEM

CREATE TABLESPACE AUDIT_TS
DATAFILE
'/u01/app/oracle/oradata/ORCL/AUDIT_TS' SIZE 104857600 AUTOEXTEND ON NEXT 10485760 MAXSIZE UNLIMITED;


BEGIN
DBMS_AUDIT_MGMT.set_audit_trail_location(
audit_trail_type = DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
audit_trail_location_value = 'AUDIT_TS');
END;
/


SELECT table_name, tablespace_name
FROM dba_tables
WHERE table_name IN ('AUD$', 'FGA_LOG$')
ORDER BY table_name;
TABLE_NAME   TABLESPACE_NAME
------------------------------ ------------------------------
AUD$           AUDIT_TS
FGA_LOG$       SYSTEM


BEGIN
DBMS_AUDIT_MGMT.set_audit_trail_location(
audit_trail_type = DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD,
audit_trail_location_value = 'AUDIT_TS');
END;
/


SELECT table_name, tablespace_name
FROM dba_tables
WHERE table_name IN ('AUD$', 'FGA_LOG$')
ORDER BY table_name;

TABLE_NAME  TABLESPACE_NAME
------------------------------ ------------------------------
AUD$         AUDIT_TS
FGA_LOG$     AUDIT_TS

NOT : Denetim izleri üzerinde işlem yaparken birçok  parametre kullancağız. Bu parametrelerin sorgulanması için dba_audit_mgmt_config_params görüntüsünü kullancağız.

Dosya Olarak Tutulan Denetim İzlerinin Yönetilmesi

Denetim izleri, veitabanında XML formatında veya text dosyası olarak tutulurlar. Bu dosyaların işletim sisteminde sayısını iki ayrı parametre ile yönetiriz.

SET_AUDIT_TRAIL_PROPERTY prosedürü, denetim izi olarak tutulan dosyanın maksimum boyutu veya üzerine kaç gün boyunca yazılabileceğini belirlememizi sağlar.

AUDIT FILE MAX SIZE  : Dosyanın maksimum boyutu KB cinsinden

AUDIT FILE MAX AGE : Dosyanın yaşı gün cinsinden

Bir dosya bu iki sınırdan herhangi birine ulaştığında denetim iznini tutmak için otomatik olarak yeni bir dosya yaratılır. Bu parametrelerin varsayılan değerleri;

Oracle Audit Tablespace Move

 

 

 

 

XML dosyasının maksimum 20000 KB boyutunda olmasını istersek, set_auidit_trail_property

prosedürünü şu parametrelerle çağırırız.


BEGIN
DBMS_AUDIT_MGMT.set_audit_trail_property(
audit_trail_type = DBMS_AUDIT_MGMT.AUDIT_TRAIL_XML,
audit_trail_property  = DBMS_AUDIT_MGMT.OS_FILE_MAX_SIZE,
audit_trail_property_value  = 20000);
END;
/

Oracle Audit Tablespace Change

 

 

 

 

Veya her 10 günde bir işletim sistemi dosyasının değişmesini istersek aşağıdaki gibi çalıştırabiliriz.


BEGIN
DBMS_AUDIT_MGMT.set_audit_trail_property(
audit_trail_type  = DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,
audit_trail_property  = DBMS_AUDIT_MGMT.OS_FILE_MAX_AGE,
audit_trail_property_value  = 10);
END;
/

NOT : clear_audit_trail_property prosedürü, tanımlanan dosya kısıtlamalarını kaldırmak için kullanılır. Bu prosedürü çağırırken use_default_values -> TRUE yapılırsa belirtilen kısıtlamalar varsayılan değerine atanır. use_default_values -> FALSE yapılırsa tanımlanan kısıtlamalar kalkmış olur.


BEGIN
DBMS_AUDIT_MGMT.clear_audit_trail_property(
audit_trail_type  = DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,
audit_trail_property  = DBMS_AUDIT_MGMT.OS_FILE_MAX_AGE,
use_default_values  = TRUE);
END;
/

BEGIN
DBMS_AUDIT_MGMT.clear_audit_trail_property(
audit_trail_type  = DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,
audit_trail_property  = DBMS_AUDIT_MGMT.OS_FILE_MAX_AGE,
use_default_values  = FALSE);
END;
/

Denetim İzlerinin Silinmesi

Güvenlik politikaları gereği, denetim izleri belirli bir süre tutulduktan sonra arşivlenmeli ve silinmelidir. Arşivlenme işlemi her sistem için farklıdır. Örneğim denetim izlerini Oracle veritabanında tablo olarak tutuyorsanız, denetim izleri veritabanı linkleri ile başka bir veritabanına atılabilir veya aynı veritabanı içerisinde başka bir tabloya insert edilip bu tablodan export alınabilir.

Eğer audit vault kullanıyorsak Audit Vault’un denetim izlerinin arşivlenmesi ve silinmesi için sağladığı imkanları kullanmalıyız.

Arşivlenen denetim izlerinin silinmesi konusundaki prosedürler ise DBMS_AUDIT_MGMT paketine eklenmiştir. Parametrelere bakacak olursak.Oracle Audit Data Delete

 

 

 

Yukarıdaki BATCH SIZE parametreleri silme işleminin nasıl yapılacağını göstermektedir. Veritabanında çok fazla sayıda denetim log kaydı varsa bu kayıtların tamamının silinmesi yerine belirli sayıda kaydın silinmesi, veritabanı performansını etkilemez. Bizim örneğimizde topluca silinecek kayıt sayısı 10.000(DB AUDIT CLEAN BATCH SIZE) dir olarak verilmiştir. Aynı şekilde dosyaları silerken tüm dosyaların silinmesi işletim sistemini etkileyebilir. OS FILE CLEAN BATCH SIZE parametresi ise topluca silinebilecek dosya sayısını belirtir.

Örneğin XML dosyasında tutulan denetim izlerinin nasıl silineceği gösterelim. Öncelikle silinecek denetim izleri için bir kerelik yapılacak olan init_cleanup işlemi yapılır. İnit_cleanup prosedüründe denetim izi türü ve izleri silme aralığı(default_cleanup_interval) tanımlanır.  Bu değer saat cinsindendir.


BEGIN
DBMS_AUDIT_MGMT.init_cleanup(
audit_trail_type  = DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,
default_cleanup_interval  = 24 );
END;
/

Oracle Audit Clean

 

 

 

 

XML denetim izlerini sileceğimiz için, denetim izlerine bakıp hangi kayıtları sileceğimize karar verelim. Örneğin 16/08/2017 14:00:00 tarihinden eski tüm denetim izlerini silelim.


select count(*) from v$xml_audit_trail where to_char(extended_timestamp,'yyyymmddhh24miss') < '20170816140000';

COUNT(*)
----------
6

Dosyaların tutulduğu denetim XML dosyalar aşağıda gösteilmiştir. Bu dosyaların silinmesi ile denetim iznide silinmiş olacaktır.


(oracle@single1 adump)$ ls -l | awk '{print $9}'
ORCL_ora_26145_20170816135821117535216458.xml
ORCL_ora_26156_20170816135825439436041442.xml
ORCL_ora_26204_20170816135851762930978647.xml
ORCL_ora_26480_20170816140129490139568203.xml
ORCL_ora_26484_20170816140132716999488990.xml
ORCL_ora_27496_20170816141649368788261843.xml
ORCL_ora_27506_20170816141653676585884698.xml
ORCL_ora_27537_20170816141704127179546507.xml
ORCL_ora_27572_20170816141719406926027828.xml
ORCL_ora_27582_20170816141722496656792804.xml
ORCL_ora_31170_20170816151515838448143795.aud
ORCL_ora_31170_20170816151517682193143795.aud
ORCL_ora_31212_20170816151517698206143795.aud
ORCL_ora_31221_20170816151522025324143795.aud
ORCL_ora_31312_20170816151613324300143795.aud
ORCL_ora_31318_20170816151616145043143795.aud
ORCL_ora_3132_20170816162309871894143795.aud
ORCL_ora_3132_20170816162311352326143795.aud
ORCL_ora_31610_20170816152115811166143795.aud
ORCL_ora_3171_20170816162311368127194954.xml
ORCL_ora_3209_20170816162315732555595830.xml
ORCL_ora_3555_20170816162621668254293794.xml
ORCL_ora_3557_20170816162623631536296289.xml

Silme işlemine başlamadan önce veritabanına hangi tarihten önceki dosyaları sileceğimizi girmemiz gerekir. Set_last_archive_timestamp prosedürü ile denetim izi türü ve denetim izlerinin hangi tarihten itibaren silineceği bilgileri belirlenir.


BEGIN
DBMS_AUDIT_MGMT.set_last_archive_timestamp (
audit_trail_type  = DBMS_AUDIT_MGMT.AUDIT_TRAIL_XML,
last_archive_time = to_date('16-08-2017 14:00:00 ','dd-mm-yyyy hh24:mi:ss') );
END;
/


select * from dba_audit_mgmt_last_arch_ts;

Oracle Audit DBMS_AUDIT_MGMT

 

 

Artık arşivlenmeyi clean_audit_trail prosedürü ile başlatabilriz. Burada dikkat edilmesi gereken use_last_arch_timestamp parametresi TRUE olmalıdır. Yoksa silme işlemine izin verilmez.


BEGIN
DBMS_AUDIT_MGMT.clean_audit_trail (
audit_trail_type = DBMS_AUDIT_MGMT.AUDIT_TRAIL_XML,
use_last_arch_timestamp = TRUE );
END;
/

Denetim izleri artık silinmiştir. İşlemin başarılı olup olmadığını görmek için denetim izi kayıtlarına bakalım. Öncelikle XML denetim izi kayıtlarını gösteren v$xml_audit_trail görüntüsüne bakalım.


select count(*) from v$xml_audit_trail where to_char(extended_timestamp,'yyyymmddhh24miss') '20170816140000';
COUNT(*)
----------
 0

Anıl Akduygu Oracle Veritabanı Güvenliği
https://docs.oracle.com/cd/E11882_01/server.112/e10575/tdpsg_auditing.htm#TDPSG52529
http://www.kamilturkyilmaz.com/2011/01/21/oracle%E2%80%99-da-audit-mekanizmasi/

Yararlı olması Dileğiyle
Yazar : Mustafa Bektaş Tepe

3,634 total views, 15 views today


Oracle Audit


Denetimin en genel tanımı kural koymak İzleme ve kayıt.

Veri tabanı denetimi, veri tabanı güvenliği açısından en önemli çalışmalardan biridir. Veri tabanı denetimi sayesinde;

  • Veritabanında yer alan bilgilerin yetkisiz kişilerce tutarlı ve değişmemiş olduğunu kanıtlar.
  • Veritabanında yapılan şüpheli işlemler kim tarafından sorgulanabilir ve bulunabilir.
  • Veritabanında yetkisiz işlemler yapmak isteyen kullanıcılar için tehlike önlemleri alınır.
  • Güvenlik yönetmeliklerine uygunluk sağlanır.
  • Veri tabanı performansı hakkında bilgi toplanır.

Buradaki önemli noktalardan biri izleme ve kayıt için kuralların belirlenmesidir. Veritabanında kısa sürede milyonlarca işlem yapılabilir. Önemli olan kayda değer olan işlemleri belirlemektir. Kaydedilmesi gereken işlemleri belirlemek bizim denetim politikamız Denetim Politikası.

Bir diğer önemli nokta da veritabanındaki işlemlerin gerçekleşmesi. nasıl kayıt olunur. Bu kayıtlara denetim izi denir.

Ek olarak, denetimin bir diğer önemli noktası değişmemiş depolama.

Oracle Veritabanında Denetim İzleri

Oralce veritabanındaki kontrol tamamen kapalı olsa bile zorunlu kaydedilmiş 3 işlem günler mevcuttur;

  • Veritabanını açmak
  • Veri tabanı kapatma
  • Kullanıcıları veritabanına SYSDBA ve SYSOPER rolü ile bağlama

veritabanında denetim izleri İki ayrı parametre ile yönetilir. Bunlar audit_trail ve audit_sys_operations parametreler Audit_trail parametresine NONE atanır ve audit_sys_operations parametresini boşaltırsak, veritabanında denetimi durdururuz.

Veritabanındaki durum busadece veri tabanı kapatma, açma ve veri tabanı yöneticisi giriş işlemleri, Denetim izi, audit_file_dest dizinindeki * .aud dosyalarına yazılır.

Bunun gibi bir veritabanında, veritabanını açıp kapattığımızda, / u01 / app / oracle / admin / ORCL / adump dizinine bakarız.

<img veri eki-id = "2821" data-permalink = "http://www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-1.png" data-orig-file = "https://i0.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-1.png?fit=771%2C95" data-orig-size = "771, 95 "data-comments-open =" 1 "data-image-meta =" {"açıklık": "0", "credit": "", "kamera": "", "resim yazısı": "", "created_timestamp ":" 0 "," telif hakkı ":" "," FOCAL_LENGTH ":" 0 "," iso ":" 0 "," shutter_speed ":" 0 "," başlık ":" "," yönlendirme ":" 0 "}" data-image-title = "Oracle Denetim 1" veri-resim-açıklaması = "

Oracle Denetimi

"data-medium-file =" https://i0.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-1.png?fit=300%2C37 "veri- large-file = "https://i0.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-1.png?fit=771%2C95" class = "alignleft wp -image-2821 size-medium "src =" https://i0.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-1.png?resize=300%2C37 "alt =" Oracle Audit "width =" 300 "height =" 37 "srcset =" https://i0.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit- 1.png? Yeniden Boyutlandırma =% 300 2C37 300w, https://i0.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-1.png?resize=768%2C95 768w, https: //i0.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-1.png?w=771 771w "boyutlar =" (maksimum genişlik: 300px 100vw, 300px " data-recalc-dims = "1" />

<img data-ek-id = "2819" data-permalink = "http://www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-Parameter-2.png" veri kaynağı file = "https://i1.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-Parameter-2.png?fit=855%2C860" veri boyutu-boyutu = "855,860" veri-yorum-açık = "1" veri-resim-meta = "{" açıklık ":" 0 "," kredi ":" "," kamera ":" "," resim yazısı ":" ", "created_timestamp": "0", "telif hakkı": "", "FOCAL_LENGTH": "0", "iso": "0", "shutter_speed": "0", "başlık": "", "yönlendirme": "0"} "veri-resim-başlığı =" Oracle Denetim Parametresi 2 "veri-resim-açıklaması ="

Oracle Denetim Parametresi

"data-medium-file =" https://i1.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-Parameter-2.png?fit=298%2C300 " data-large-file = "https://i1.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-Parameter-2.png?fit=855%2C860" sınıfı = "alignnone wp-image-2819 boyut ortası" src = "https://i1.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-Parameter-2.png Yeniden Boyutlandır = 298% 2C300 "alt =" Oracle Denetim Parametresi "width =" 298 "height =" 300 "srcset =" https://i1.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017 / 09 / Oracle-Audit-Parameter-2.png? Resize =% 298 2C300 298w, https://i1.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit- Parametre -2.png? Yeniden Boyutlandırma =% 150 2C150 150w, https://i1.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-Parameter-2.png?resize = 768% 2C772 768w, https://i1.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-Parameter-2.png?resize=300%2C302 300w, https: //i1.w p.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-Parameter-2.png?w=855 855w "boyutlar =" (maks. genişlik: 298px) 100vw, 298px "veri -recalc-dims = "1" />

Eğer Veri tabanındaki kontrolü başlatır ve Denetim için herhangi bir tanım yapmazsakBu durumda (yalnızca denetim komutuyla bir denetim tanımlamazsak); “INSERT, UPDATE, DELETE, MERGE, SYS.AUD $ ve SYS.FGA_LOG $ 'a yapıldı işlemler kontrol edilir. Bu tablolar, veritabanında denetim izlerini tutan tablolardır. Normalde bu tablolara müdahale edilmemelidir, bu nedenle bu tablolarda bir değişiklik yapıldığında tanım olmasa bile kontrol edilmesi mantıklı olur. Örneğin;




alter sistem seti audit_trail = & # 39; DB & # 39; kapsamı = spfile;
alter sistem seti audit_sys_operations = TRUE kapsamı = spfile;
derhal kes
Başlamak 

veritabanında önceden tanımlanmış kontrol tanımları Biz emekli oluyoruz;




HİÇBİR TÜM NOAUDIT;
NOUUDIT TÜM ÖZELLİKLERİ;
NOUUDIT TÜM AÇIKLAMALAR;
NOUUDIT TÜMÜ;

Veritabanına SYS kullanıcıları ile bağlanıyoruz ve sys.aud $ tablosunu siliyoruz.




sys.aud $ silmek;
300 satır silindi.
işlemek;
Tamamlandı.

Bu işlemden sonra denetim tablosunda yazılı bir kayıt yoktur. Bununla birlikte, audit_sys_operations parametresi TRUE olduğundan ve bu SYS kullanıcısı tarafından yapıldığından, denetim izi audit_file_dest parametresi tarafından gösterilen dizine aşağıdaki gibi yazılır.




(oracle @ single1 adump) $ cat ORCL_ora_6825_20170816091342121137143795.aud

Çar 26 Ağu 09:18:57 2017 +03: 00
UZUNLUK: & # 39; 169 & # 39;
EYLEM: (15) 'sys.aud' yi sil. $ & # 39;
VERİTABANI KULLANICI: (1) & # 39; / & # 39;
ÖZEL: (6) 'SYSDBA' # #;
MÜŞTERİ KULLANICI: (6) 'kehanet & # 39;
İSTEMCİ TERMİNALİ: (5) '' puan / 4 '#
DURUM: (1) & # 39; 0 & # 39;
DBID: (10) '1479257114' # 10;

Çar 16 Ağu 09:19:00 2017 +03: 00
UZUNLUK: & # 39; 159 & # 39;
EYLEM: (6) 'taahhüt & # 39;
VERİTABANI KULLANICI: (1) & # 39; / & # 39;
ÖZEL: (6) 'SYSDBA' # #;
MÜŞTERİ KULLANICI: (6) 'kehanet & # 39;
İSTEMCİ TERMİNALİ: (5) '' puan / 4 '#
DURUM: (1) & # 39; 0 & # 39;
DBID: (10) '1479257114' # 10;

NOT : SYSTEM kullanıcısıyla aynı şeyi yaparsanız, bu işlem için denetim izninin sys.aud $ tablosuna yazıldığını göreceksiniz.

Denetim Masasının Korunması

Kontrol masasını korumak için O7_DICTIONARY_ACCESSIBILITY parametreler YANLIŞ olmalıdır. Varsayılan değer yanlıştır.

Bu parametre bize HERHANGİ bir sistem yetkilendirmesi ile SYS nesnelerine erişim sağlar. Örneğin, bir kullanıcı herhangi bir tabloyu SEÇME yetkisine sahipse, bu, kullanıcının veritabanındaki tüm tabloları okuyabileceği anlamına gelir. Ancak, O7_DICTIONARY_ACCESSIBILITY parametresi false ise, SYS altındaki nesneler muaf tutulur. Bu parametre, özellikle denetim izini sürdüğümüz sys.aud $ tablosunu silmekten kaçınmak için, özellikle herhangi bir tabloyu sil ve GÜNCELLEME HERHANGİ BİR TABLO ayrıcalıklarına sahip kullanıcılar için ayarlanmalıdır.

NOT : Veri Tabanı Kasası kurulumu, denetim masasını korumanın en sağlam yoludur. DB Vault kurulumu ile birlikte gelen REALM ya da COMMAND RULE yardımı ile veritabanı yöneticisi de dahil olmak üzere tüm erişim güvenliği yöneticisine sys.aud $ verilir.

Veritabanında Denetim İzlerinin Tutulması

Veritabanında denetim izi tutmak audit_trail parametreler DB veya DB, GENİŞLETİLMİŞ Tamamlanmalı. Denetim izi veritabanında başlatıldığında, tüm kayıtlar sys.aud $ tablosuna yazılır.

SYS.aud $ tablosu sütunlar genellikle zor kodlanmıştır ($) bunun yerine çok sık kullanılmaz DBA_AUDIT_TRAIL Görünümü kullanıyoruz.

Audit_trail parametresi DB olarak ayarlanırsa, veritabanındaki denetim izinin türü ve diğer bilgileri korunur. Denetim izinde yürütülen SQL izi mevcut değil. Örneğin, bir tablodan bir kaydı silin. Audit_trail parametresi DB ise denetim izi sırasında, hangi kullanıcıyı DELETE'yi işlem türü olarak uyguladığımı görüyoruz. Ancak, komutun kendisini ve çalıştırma sırasında aldığı parametreyi göremiyoruz. Veritabanında tutulan denetim izinin daha az kaynak tüketmesini istiyorsak (disk, CPU), audit_trail parametresi DB olarak ayarlanmalıdır.

Eğer Audit_trail parametreleri DB, EXTENDED olarak ayarlanmışsa, veritabanı denetim izinde çalışan tüm SQL komutu ve komutta yer alan parametreler sys.aud $ tablosundadır. Yazılıdır. Örneğin;




sistem setini değiştirirseniz audit_trail = DB, EXTENDED kapsamı = spfile;
derhal kes
Başlamak
sys.aud $ öğesini silin. where entryid = 1;
0 satır silindi.
işlemek;
Tamamlandı.

<img veri eki-id = "2816" data-permalink = "http://www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-3.png" data-orig-file = "https://i0.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-3.png?fit=859%2C118" data-orig-size = "859,118" data-comments-open = "1" data-image-meta = "{" açıklık ":" 0 "," credit ":" "," kamera ":" "," resim yazısı ":" "," created_timestamp ": "0", "telif hakkı", "", "FOCAL_LENGTH": "0", "iso", "0", "shutter_speed": "0", "başlık": "", "yönlendirme": "0"} "data-image-title =" Oracle Denetim 3 "data-image-açıklama ="

Oracle Denetimi

"data-medium-file =" https://i0.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-3.png?fit=300%2C41 "veri- large-file = "https://i0.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-3.png?fit=859%2C118" class = "alignleft wp -image-2816 size-orta "src =" https://i0.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-3.png?resize=300%2C41 "alt =" Oracle Audit "width =" 300 "height =" 41 "srcset =" https://i0.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit- 3.png? Yeniden Boyutlandırma =% 300 2C41 300w, https://i0.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-3.png?resize=768%2C105 768w, https: //i0.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-3.png?w=859 859w "boyutlar =" (maksimum genişlik: 300px 100vw, 300px " data-recalc-dims = "1" />

Örnekteki denetim izinde, SQL_TEXT boş olan çizgi, audit_trail parametresinin DB değerine sahip olduğu bir işlemdir. SQL_TEXT doluysa, audit_trail parametresi DB EXTENDED olur.

İşletim Sisteminde Denetim İzlerini Tutmak

İşletim sistemindeki dosyalarda denetim izlerini sürdürebilmek için aşağıdaki 3 ayrı parametreden birinin seçilmesi gerekir.

  1. işletim sistemi
  2. XML
  3. XML, GENİŞLENMİŞ

OS Parametresini Kullanma

İşletim sistemindeki dosyalarda denetim izlerini tutmak için Audit_trail parametresi OS olarak ayarlanır.




alter sistem seti audit_trail = OS kapsam = spfile;

Örneğin; Amacımız İk Kullanıcı Personel tablosunu takip etmektir.




tüm çalışanlara erişimi denetleyerek;
Denetim başarılı oldu.

SYSTEM kullanıcıları ile kontrol ettiğimiz çalışanlar tablosunu sorgulayalım. Politikalarımıza göre işletim sistemi dosyasına yazılacaktır.

Denetim izi bulunduğu dizinde, ilgili dosya açılır ve denetim izi okunur. Buradaki bilgiler sys.aud $ tablosundaki bilgilere benzer. Dosyaları aramak ve gerekli denetim iznini bulmak veritabanındaki tablolardan daha zordur. Ancak, dosya sistemine yazılan denetim izlerinin veri tabanı yöneticileri tarafından erişilemeyen dizinlerde olması, bu denetim türünü daha güvenli kılmaktadır.




Çar 16 Ağu 11:16:37 2017 +03: 00
UZUNLUK: & # 39; 218 & # 39;
EYLEM: (54) 'Çalışan' kimliğini, ilk adını, çalışanlardan maaşını seç & # 39;
VERİTABANI KULLANICI: (3) 'SYS' # 39;
ÖZEL: (6) 'SYSDBA' # #;
MÜŞTERİ KULLANICI: (11) 'mustafatepe'
MÜŞTERİ TERMİNALİ: (7) 'bilinmiyor' & # 39;
DURUM: (1) & # 39; 0 & # 39;
DBID: (10) '1479257114' # 10;

SYSLOGS Servisi ile Denetim İzleri Oluşturma

Sistem günlüğü; Unix ve Linux işletim sistemlerinde standart olarak kullanılan bir mesaj kayıt sistemidir. Genellikle standart arkaplanda çalışan syslog programına ağ, yazıcı gibi araçlardan gönderilen mesajlardan oluşur. Bu mesajlar belirli kaynaklardan gönderilir. Yetkilendirme, authpriv, arka plan programı, cron, ftp, lpr, çekirdek, posta, haberler, syslog, kullanıcı, uucp, local0… local07

Bu kaynaklardan gönderilen mesaj türleri; uyarı, bilgi, hata ayıklama, uyarı, hata, ölçüt, uyarı, ortaya çıktı.

torpil syslog'a denetim izleri gönderirken; audit_syslog_level'e değerler atayarak kaynak adını ve mesaj tipini belirleriz.

Örneğimizde, denetim izinin syslog'a yerel1'den gönderildiğini ve mesajın uyarı düzeyinde olduğunu varsayalım. Audit_syslog_level parametresine aşağıdaki gibi değer. Audit_trail parametresi OS olmalıdır.




sistem kümesini değiştir audit_syslog_level = & # 39; local1.warning & # 39; kapsamı = spfile;
derhal kes
Başlamak

Veri tabanı tanımlarımızı tamamladık. İşletim sistemi Oracle denetim izlerinin syslog programına nasıl gönderileceğini ve erişileceğini ayarlamalıyız. Bunun için, syslog yapılandırma dosyası /etc/rsyslog.conf& # 39; Dr. Veritabanında yaptığımız konfigürasyona uygun olarak bu dosyaya aşağıdaki satırları ekleriz.




local1.warning / var / log / audit.log

Syslog programı tekrar başlat Teşekkür ederim.




(root @ single1 ~) # /etc/init.d/rsyslog restart
Sistem günlüğünün kapatılması: (Tamam)
Sistem günlüğü başlatılıyor:                                    

/Var/log/audit.log dosyasına baktığımızda denetim izini görebiliriz.<img data-ek-id = "2817" data-permalink = "http://www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-audit-trail-4.png" veri- orig-file = "https://i1.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-audit-trail-4.png?fit=1255%2C236" verileri -orig-size = "1255,236" veri-yorumlar-açıldı = "1" veri-resim-meta = "{" açıklık ":" 0 "," kredi ":" "," kamera ":" "," "" ",", "create_timestamp": "0", "telif hakkı": "", "FOCAL_LENGTH": "0", "iso": "0", "shutter_speed": "0", "başlık": " "," oryantasyon ":" 0 "}" data-image-title = "Oracle Denetim denetim izi 4" data-image-Description = "

Oracle Audit denetim izi

"data-medium-file =" https://i1.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-audit-trail-4.png?fit=300% 2C56 "data-large-file =" https://i1.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-audit-trail-4.png?fit=1024 % 2C193 "class =" alignleft wp-image-2817 boyut ortası "src =" https://i1.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-audit -TRAIL-4.png? resize = 300% 2C56 "alt =" Oracle Denetim denetim izi "width =" 300 "height =" 56 "srcset =" https://i1.wp.com/www.mustafabektastepe.com/ wp-content / uploads / 2017 / 09 / Oracle-Denetim-denetim-iz-4.png? yeniden boyutlandırma =% 300 2C56 300w, https://i1.wp.com/www.mustafabektastepe.com/wp-content/uploads /2017/09/Oracle-Audit-audit-trail-4.png?resize=768%2C144 768w, https://i1.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/ Oracle-Audit-audit-trail-4.png? Yeniden Boyutlandırma = 1024% 2C193 1024w, https://i1.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-audit -trail-4.png? w = 1255 1255w "boyut =" (maks. genişlik: 300 piksel) 100vw, 300 piksel "data-recalc-dims =" 1 "/>

İşletim sistemi tarafından denetim izinlerini tutmak genellikle Oracle tarafından önerilmektedir. Özellikle, syslog'a denetim izi göndermek, Denetim izlerinin veritabanı tarafından değiştirilmesini önler. Ancak, denetim izini bir işletim sistemi dosyası (OS) olarak tutarsak, yürütülen SQL'ler denetim iznine yansıtılmaz. Nesne adı, eylem, zaman gibi bilgileri içerir. Ancak, hem işletim sistemine hem de SQL'lere sahip olmak istiyorsak, XML, EXTENDED yapmamız gerekir.

XML Dosyalarında Denetim İzlerini Tutma

Denetim izlerini dosyalarda XML formatında tutmak için audit_trail parametresi aşağıdaki gibi tanımlanır.




alter sistem seti audit_trail = XML kapsam = spfile;
derhal kes
Başlamak

Çalışanlar tablosunda SİSTEM kullanıcısı ile bazı deneyler yapalım. Denemeyi bir deney yapma fikriyle denetimi açtık.




hr.employees set güncelleme SALARY = SALARY + SALARY * 0.1;
107 satır güncellendi.
işlemek;
Tamamlandı.

Denetim iznini, audit_file_dest tarafından belirtilen dizinde bulunan XML biçiminde kontrol edebiliriz.<img veri eki-id = "2820" data-permalink = "http://www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-xml-5.png" veri kaynağı file = "https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-xml-5.png?fit=1652%2C213" veri boyutu-boyutu = "1652,213" veri-yorum-açık = "1" veri-resim-meta = "{" diyafram ":" 0 "," kredi ":" "," kamera ":" "," resim yazısı ":" "" created_timestamp ":" 0 "," telif hakkı ":" "," FOCAL_LENGTH ":" 0 "," iso ":" 0 "," shutter_speed ":" 0 "," başlık ":" "," yönlendirme " : "0"} "veri-resim-başlığı =" Oracle Denetim xml 5 "veri-resim-açıklaması ="

Oracle Denetimi xml

"data-medium-file =" https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-xml-5.png?fit=300%2C39 " data-large-file = "https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-xml-5.png?fit=1024%2C132" sınıfı = "alignleft wp-image-2820 boyut ortası" src = "https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-xml-5.png Yeniden boyutlandır =% 300 2C39 "alt =" Oracle Denetimi xml "genişlik =" 300 "yükseklik =" 39 "srcset =" https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017 / 09 / Oracle-Audit-xml-5.png? Yeniden boyutlandır =% 300 2C39 300w, https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit- xml -5.png? yeniden boyutlandır = 768% 2C99 768w, https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-xml-5.png?resize = 1024% 2C132 1024w " boyutlar = "(maksimum genişlik: 300px) 100vw, 300px" veri geri dönüşümü-dims = "1" />

Bu dosyaları incelemek çok zor. Oracle, bu dosyaların içeriğine V $ XML_AUDIT_TRAIL resimli erişmemizi sağlar.




V $ XML_AUDIT_TRAIL sırasına göre ext_timestamp, db_user, object_name, statementid, sql_text öğelerini seçin;

<img data-ek-id = "2832" data-permalink = "http://www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-Parameter-7.png" veri kaynağı file = "https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-Parameter-7.png?fit=1181%2C225" veri boyutu boyutu = "1181,225" veri-yorum-açık = "1" veri-resim-meta = "{" diyafram ":" 0 "," kredi ":" "," kamera ":" "," resim yazısı ":" "" created_timestamp ":" 0 "," telif hakkı ":" "," FOCAL_LENGTH ":" 0 "," iso ":" 0 "," shutter_speed ":" 0 "," başlık ":" "," yönlendirme " : "0"} "veri-resim-başlığı =" Oracle Denetim Parametresi 7 "veri-resim-açıklaması ="

Oracle Audit-Parametre

"data-medium-file =" https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-Parameter-7.png?fit=300%2C57 " data-large-file = "https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-Parameter-7.png?fit=1024%2C195" sınıfı = "alignleft wp-image-2832 boyut ortası" src = "https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-Parameter-7.png Yeniden Boyutlandır =% 300 2C57 "alt =" Oracle-Denetim-Parametresi "width =" 300 "height =" 57 "srcset =" https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads / 2017/09 / Oracle-Audit-Parameter-7.png? Resize = 300% 2C57 300w, https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle- Denetim -Ölçülen-7.png? Yeniden boyutlandır = 768% 2C146 768w, https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-Parameter-7.png? resize = 1024% 2C195 1024w, https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-Parameter-7.png?w=1181 1181w "boyutlar = "(maks. genişlik: 300 piksel) 100vw, 300 piksel" data-recalc-dims = "1" />

SYS dışındaki kullanıcılar tarafından yürütülen denetim komutlarını XML'de yapılan denetim izlerinde görmek istiyorsak, audit_trail parametresi XML, EXTENDED yapmamız gerekir.




SQL> sistem kümesini değiştirir audit_trail = XML, EXTENDED kapsam = spfile;
SQL> hemen kapat
SQL> başlangıç

Çalışanlar tablosunda SİSTEM kullanıcısı ile bazı deneyler yapalım. Denemeyi bir deney yapma fikriyle denetimi açtık.




SQL> hr.employees çalışan ayarlamak SALARY = SALARY + SALARY * 0.1;
107 satır güncellendi.
SQL> taahhüt;
Tamamlandı.

Gördüğünüz gibi, SYSTEM kullanıcısı tarafından yürütülen UPDATE komutunu görebiliriz.

<img data-ek-id = "2818" data-permalink = "http://www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-disk-6.png" veri kaynağı file = "https://i1.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-disk-6.png?fit=1109%2C316" ​​veri kaynağı -size = "1109,316" veri-yorumlar-açıldı = "1" veri-resim-meta = "{" diyafram ":" 0 "," kredi ":" "," kamera ":" "," resim yazısı " : "" "created_timestamp": "0", "telif hakkı": "", "FOCAL_LENGTH": "0", "iso": "0", "shutter_speed": "0", "başlık": "", " yönlendirme ":" 0 "}" data-image-title = "Oracle Denetim diski 6" data-image-Description = "

Oracle Denetim diski

"data-medium-file =" https://i1.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-disk-6.png?fit=300%2C85 " data-large-file = "https://i1.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-disk-6.png?fit=1024%2C292" sınıfı = "alignleft wp-image-2818 boyut ortası" src = "https://i1.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-disk-6.png ? resize = 300% 2C85 "alt =" Oracle Denetim diski "genişlik =" 300 "yükseklik =" 85 "srcset =" https://i1.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017 / 09 / Oracle-Audit-disk-6.png? Yeniden boyutlandır =% 300 2C85 300w, https://i1.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit- disk -6.png? yeniden boyutlandırma = 768% 2C219 768w, https://i1.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-disk-6.png?resize = 1024% 2C292 1024w, https://i1.wp.com/www.mustafabektastepe.com/wp-content/uploads/2017/09/Oracle-Audit-disk-6.png?w=1109 1109w "boyut =" (maksimum genişlik: 300 piksel ) 100vw, 300px "veri geri dönüşümü-dims =" 1 "/>

Anıl Akduygu Oracle Veritabanı Güvenliği
https://docs.oracle.com/cd/e11882_01/server.112/e10575/tdpsg_auditing.htm#tdpsg52529
http://www.kamilturkyilmaz.com/2011/01/21/oracle%e2%80%99-da-audit-mekanizmasi/

Yararlı Olmak İçin Yararlı Olsun
Yazar: Mustafa Bektaş Tepe

3,641 toplam görüntüleme, 9 görüntüleme bugün


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