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..
Delphi Kodu ile Database Log
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 82
- Kayıt: 19 Ağu 2005 09:34
- Konum: Istanbul
Delphi Kodu ile Database Log
Celebrating the past , Creating the Future
-
- Üye
- Mesajlar: 82
- Kayıt: 19 Ağu 2005 09:34
- Konum: Istanbul
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..
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
Ç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...
- 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...
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
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/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
-
- Üye
- Mesajlar: 82
- Kayıt: 19 Ağu 2005 09:34
- Konum: Istanbul
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..
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..
Celebrating the past , Creating the Future
Kardeş bulursan bana da yazar mısın..
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..