Delphi Kodu ile Database Log

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
guney_tosun
Üye
Mesajlar: 82
Kayıt: 19 Ağu 2005 09:34
Konum: Istanbul

Delphi Kodu ile Database Log

Mesaj gönderen guney_tosun »

Merhabalar;

8 tane tablo var ve bu tablolarda yapılar işlemlerin log'unu tutmak istiyorum (Update,Delete vs..)sizce nasıl bir yol izlemeliyim..
Oracle 10g kullanıyorum..Teşşekkür Ederim.. :?:
Celebrating the past , Creating the Future
faserka
Üye
Mesajlar: 14
Kayıt: 13 Ağu 2004 04:00

Mesaj gönderen faserka »

aklıma ilk gelen log tabloları oluşturup triggerlarla diğer tablolardaki değişikliklerde log tablolarına kayıt yapman
kolay gelsin
guney_tosun
Üye
Mesajlar: 82
Kayıt: 19 Ağu 2005 09:34
Konum: Istanbul

Mesaj gönderen guney_tosun »

Log Tabloları oluşturmayı biraz açıklarmısın bildiğimiz tablo ama biraz açıklarsanız sevinirim..


Arkadaşlar; eğer alternatif fikirleri olan arkadaşlarımız paylaşırlarsa çok memnun olucam..Konuyu forumda arattım ama genelde delphi veya veritabanı hatalarının loglarının tutulması ile ilgili ornekler verilmiş..

Benım yapmak istediğim veritabanındaki tabloların hangisine hangi sutununa hangi veri girildiğini kayıt altına almak..

Teşekkür Ederim..
Celebrating the past , Creating the Future
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Çok yoğun bir veri trafiği olacağı açık... Bunun için tablo içeriğinde alan ve veri sayısını en aza indirgemek lazım.

- Soru : Tablolarında yapısal güncelleme yapılıyor mu ? Yani yeni tablo alanı ekleniyor veya eksiltiliyor mu ? Bunu sormaktaki gayem, her tabloya bir IDNo ve alana da alana özel bir IDNo vermek veya alan için Alan Index nosunu kullanmak veri yoğunluğunu azaltacaktır.

- BENCE - LOG Tablosu ve LOG Güncelleme Tablosu olarak iki tablo oluşturursan minimal düzeyde veri girişi yapmışolursun.

Log Tablosu (Master)
LogKayNo (Detay tablo için MasterKey olacak)
KullaniciID
TabloID
AlanID
IslemID
TarihSaat


LogGuncelleme Tablosu (Detay)
GuncellemeKayNo
LogKayNo (Master'ın)
EskiDeger
YeniDeger

KullaniciID : oturum açan her kullanıcının ID'si (değişikliği kim yaptığını tespit açısından kullanıcılarına verdiğin ve oturum açtığında veritabanına bir yere şerh düşerek veritabanı tarafından bilinmesini sağlayacağın ID)

TabloId : Değişiklik yapılmış tabloya özel ID'si (8 tablo var demiştin ya, 1'den 8'e kadar tablonun sıranosu)

AlanId : Değişiklik yapılan alana özel ID'si (statik ise alan sıranosu olabilir. 0, 1, 2... gibi)

IslemId : Yapılan işleme özel ID'si ( Ekleme 1, Silme 2, Güncelleme 3 gibi)

Silme veya Güncelleme ise yani IslemID 2 veya 3 ise detay tabloda bu değişiklik işlenir. Kayıt silinmiş ise tüm kaydı istiyorsan bir üçüncü tabloya daha ihtiyacın olacaktır. Ama bu kadarına gerek yoktur herhalde... :oops:
Resim
Resim ....Resim
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

Oracle'in zaten böyle bir özelliği var. Fazla yorulmadan yapabilirsiniz. Hatta log serveri ayrı bir makinaya kurayabilirsiniz. İstediğiniz zamanda (gün/ay/yıl saat:dakika:saniye.salise) veri tabanını görebilirsiniz. Oracle dökümanlarına bakabilirsiniz.
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2247
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Oracle'da bu işler babası var. Size LOG'lar ne kadar süre ile lazım? Örneğin 10g'de FlashBack Query var ki süper, onu kurulum aşamasında set ediyorsunuz, şu kadar GB FlashBack için ayır diye, sonra lazımolduğunda FlashBack'ten sorgu çekebiliyorsunuz. Ancak FlashBack sınırlı bir süreyi kapsar, (aslında flashback için ayrılan alan ile alakalı)

Onu da kullanabilirsiniz. Ama ben 5 ay önce neymiş ne olmuş onu görmek istiyorum derseniz o zaman normal LOG'larını kullanabilirsiniz sanırım.

Onun dışında manuel kontrol edeceğim derseniz, birkaç değişik yöntemle halledebilirsiniz.

1. Her kayıt Insert edilir (UPDATE'ler dahil, Eskiler, aynı yapıda bir başka tabloya aktarılır.)

2. Kayıtlar olduğu gibi durur, kopyaları aynı yapıda başka bir tabloya transfer edilir (Bir tane de işaretçi koyarsınız LOG Tablosuna, Insert edildi, Update Edildi, Delete Edildi) gibi.

Yukarıdaki yöntemleri Trigger'larda yaparsınız. mrmarman'ın önerdiği yöntem de makul.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
guney_tosun
Üye
Mesajlar: 82
Kayıt: 19 Ağu 2005 09:34
Konum: Istanbul

Mesaj gönderen guney_tosun »

Tekrar Merhaba;

Aslında yapmak istediğim şu:

"Program Çalıştırıldı"
<saat> <tarih>

"00000GK1569785 nolu kayıt guncellendi guncelleyen kullanıcı :volkans
<saat> <tarih> "

"15689 nolu dokuman olusturuldu.Oluşturan kullanıcı : guneyt
<saat> <tarih> "

vb. Şekilde log dosyasına kayıt yapması.. Yani işin başında daha detaylı dusunuyordum fakat baktım işin içinden çıkılabilecek gibi değil..

Yorumlarınızı bekliyorum..Şimdiden Teşekkürler.. :roll:
Celebrating the past , Creating the Future
Kullanıcı avatarı
Kacak
Üye
Mesajlar: 21
Kayıt: 05 Nis 2005 02:59
Konum: Ankara

Kardeş bulursan bana da yazar mısın..

Mesaj gönderen Kacak »

s.a. Kardeş, benim de böyle bir log işlemine ihtiyacım var, eğer cevap gelirse buradan görürüm. Ama cevap yazılmazsa ve sen bir yolunu bulmuşsan bana da yardım edersen sevinirim. Ben de Oracle 10 g kullanıyorum ve log tutmaya ihtiyacım var. Hatta bir kaydı kim değiştirdi, eski alan ne idi ve yenisi e oldu gibi detaylı olacak. Şimdiden teşekkürler..
Cevapla