2008-09-15 18 views
5

मुझे सभी डेटाबेस गतिविधि की ऑडिटिंग करने की आवश्यकता है, भले ही यह एप्लिकेशन से आया हो या कोई अन्य माध्यमों के माध्यम से कुछ एसक्यूएल जारी कर रहा हो। तो लेखा परीक्षा डेटाबेस स्तर पर किया जाना चाहिए। प्रश्न में डेटाबेस ओरेकल है। मैंने इसे ट्रिगर्स के माध्यम से और ओरेकल द्वारा प्रदान की गई फाइन ग्रेनेड ऑडिटिंग नामक किसी चीज़ के माध्यम से भी देखा। दोनों मामलों में, हमने विशिष्ट तालिकाओं और विशिष्ट कॉलम पर ऑडिटिंग चालू कर दी। हालांकि, हमने पाया कि जब हम इन तरीकों में से किसी एक का उपयोग करते हैं तो प्रदर्शन वास्तव में बेकार होता है।निष्पादन और स्केलेबिलिटी समस्याओं के बिना डेटाबेस गतिविधि को कैसे ऑडिट करें?

चूंकि डेटा गोपनीयता के आस-पास के नियमों के कारण लेखा परीक्षा पूरी तरह से जरूरी है, इसलिए मुझे आश्चर्य है कि महत्वपूर्ण प्रदर्शन में गिरावट के बिना ऐसा करने का सबसे अच्छा तरीका क्या है। अगर किसी के पास ओरेकल विशिष्ट अनुभव है, तो यह सहायक होगा लेकिन अगर डेटाबेस गतिविधि ऑडिटिंग के आसपास सामान्य अभ्यास भी ठीक नहीं होंगे।

उत्तर

1

मुझे यकीन है कि अगर यह एक उत्पादन प्रणाली के लिए एक परिपक्व पर्याप्त तरीका है नहीं कर रहा हूँ, लेकिन मैं एक नेटवर्क यातायात स्निफर का उपयोग कर निगरानी डेटाबेस यातायात के साथ सफलता का काफी एक बहुत कुछ था।

आवेदन और डेटाबेस के बीच कच्चे डेटा को मशीन पर भेज दें और इसे डीकोड करें और इसका विश्लेषण करें।

मैंने पोस्टग्रेएसक्यूएल का उपयोग किया, और यातायात को डीकोड किया और इसे में बदलकर डेटाबेस ऑपरेशंस की एक धारा को लॉग किया जा सकता है जो अपेक्षाकृत सीधा था। मुझे लगता है कि यह किसी भी डेटाबेस पर काम करेगा जहां पैकेट प्रारूप दस्तावेज है।

मुख्य बिंदु यह था कि यह डेटाबेस पर स्वयं को कोई अतिरिक्त लोड नहीं लगाता है।

इसके अलावा, यह निष्क्रिय निगरानी थी, यह सभी गतिविधियों को रिकॉर्ड किया गया था, लेकिन किसी भी परिचालन को अवरुद्ध नहीं कर सका, इसलिए शायद आप जो भी खोज रहे हैं वह शायद नहीं हो सकता है।

1

"अपना खुद का रोल" करने की कोई आवश्यकता नहीं है। बस ऑडिटिंग चालू करें:

  1. डेटाबेस पैरामीटर AUDIT_TRAIL = DB सेट करें।
  2. उदाहरण प्रारंभ करें।
  3. SQLPlus के साथ लॉगिन करें।
  4. कथन दर्ज करें
    audit all;
    यह कई महत्वपूर्ण डीडीएल संचालन के लिए लेखा परीक्षा चालू करता है, लेकिन डीएमएल और कुछ अन्य डीडीएल कथनों का अभी भी ऑडिट नहीं किया जाता है।
  5. इन अन्य गतिविधियों के बारे में परीक्षण किया जा सकेगा करने के लिए, इस तरह के बयानों का प्रयास करें:
    audit alter table; -- DDL audit 
    audit select table, update table, insert table, delete table; -- DML audit

नोट: सभी "sysdba के रूप में" गतिविधि हमेशा हे/एस के लिए जाँच की जाती है। विंडोज़ में, इसका मतलब विंडोज इवेंट लॉग है। यूनिक्स में, यह आमतौर पर $ ORACLE_HOME/rdbms/audit है।

डेटाबेस SQL ​​संदर्भ के Oracle 10g R2 Audit Chapter देखें।

डेटाबेस ऑडिट ट्रेल SYS.DBA_AUDIT_TRAIL व्यू में देखा जा सकता है।

यह इंगित किया जाना चाहिए कि आंतरिक ओरेकल ऑडिटिंग परिभाषा द्वारा उच्च प्रदर्शन होगा। यह बिल्कुल ठीक होने के लिए डिज़ाइन किया गया है, और प्रदर्शन के लिए इसे और प्रतिस्पर्धा करने की कल्पना करना बहुत मुश्किल है। इसके अलावा, ओरेकल ऑडिटिंग के "ठीक-ठीक" नियंत्रण की उच्च डिग्री है। आप जितना सटीक हो उतना सटीक प्राप्त कर सकते हैं। अंत में, एसवाईएस।सिस्टम इंडेक्स के साथ AUD $ तालिका को सिस्टम टेबलस्पेस को भरने से रोकने के लिए एक अलग टेबलस्पेस में स्थानांतरित किया जा सकता है।

सधन्यवाद, ओपस

1

आप एक लक्ष्य प्रणाली आप गोल्डन गेट सॉफ्टवेयर के साथ ऐसा कर सकते हैं और स्रोत पक्ष संसाधन नाली के रास्ते में ज्यादा नहीं उठाना पर बदली हुई रिकॉर्ड की प्रतियां रिकॉर्ड करने के लिए चाहते हैं। इस समाधान को लागू करने के लिए आपको स्रोत डेटाबेस में कोई भी परिवर्तन करने की आवश्यकता नहीं है।

गोल्डन गेट लेन-देन के लिए रेडो लॉग स्क्रैप करता है जिसमें आपकी रुचि रखने वाली तालिकाओं की एक सूची का जिक्र है। ये परिवर्तन एक 'ट्रेल फ़ाइल' पर लिखे गए हैं और उसी डेटाबेस पर एक अलग स्कीमा पर लागू किए जा सकते हैं, या किसी को भेज दिया जा सकता है लक्ष्य प्रणाली और वहां लागू (आपके स्रोत सिस्टम पर लोड को कम करने के लिए आदर्श)।

एक बार जब आप लक्ष्य प्रणाली के लिए निशान फ़ाइल प्राप्त वहाँ कुछ विन्यास में तोड़ मरोड़ आप लेखा परीक्षा प्रदर्शन करने के लिए एक विकल्प सेट कर सकते हैं कर रहे हैं और यदि आवश्यक हो तो आप 2 गोल्डन गेट कार्यों आह्वान लेन-देन के बारे में जानकारी पाने के लिए कर सकते हैं:

1) स्रोत तालिका में किए गए प्रत्येक परिवर्तन ऑपरेशन के लिए लक्ष्य तालिका में एक नया रिकॉर्ड डालने के लिए INSERTALLRECORDS प्रतिकृति पैरामीटर सेट करें। सावधान रहें, यह बहुत सारी जगह खा सकता है, लेकिन यदि आपको व्यापक ऑडिटिंग की आवश्यकता है तो शायद इसकी उम्मीद है।

2) यदि आपके पास पहले से ही आपके रिकॉर्ड से जुड़े CHANGED_BY_USERID और CHANGED_DATE नहीं हैं, तो आप वर्तमान लेनदेन के लिए यह जानकारी प्राप्त करने के लिए लक्षित पक्ष पर गोल्डन गेट फ़ंक्शंस का उपयोग कर सकते हैं। जीजी संदर्भ गाइड में निम्नलिखित कार्यों की जाँच करें: GGHEADER ("USERID") GGHEADER ("TIMESTAMP")

तो कोई अपनी नहीं मुक्त (Oracle के माध्यम से लाइसेंस की आवश्यकता है), और ऊपर स्पिन करने के लिए कुछ प्रयास की आवश्यकता होगी, लेकिन संभवतया एक कस्टम समाधान को लागू करने और बनाए रखने के मुकाबले बहुत कम प्रयास/लागत है, और आपके पास रिमोट सिस्टम में डेटा शिपिंग करने का अतिरिक्त लाभ है ताकि आप अपने स्रोत डेटाबेस पर न्यूनतम प्रभाव की गारंटी दे सकें।

0

यदि आप ऑरैकल का उपयोग कर रहे हैं तो सीडीसी (कैप्चर डेटा चेंज) नामक सुविधा है जो ऑडिट प्रकार की आवश्यकताओं के लिए अधिक प्रदर्शन कुशल समाधान है।