Oracle Architecture Processes: 2nd part of Oracle Architecture

Oracle Architecture Processes: Oracle को जिन Memory Structures की जरूरत होती है, उन्हें समझने के बाद अब हमें उन Processes को समझना है, जिनकी जरूरत इन विभिन्न Memories को Manage करने के लिए Oracle को होती है। ये Processes Memory Structures के साथ मिलकर Oracle के मुख्‍य Concept यानी Oracle Instance को परिभाषित करते हैं।

एक Oracle Instance के साथ बहुत सारे Background Processes Associated होते हैं और ये सभी Database में अलग-अलग तरीके से अपना Role Play करते हैं। मुख्‍य रूप से चार Processes Mandatory होते हैं, जो कि निम्नानुसार हैं:

  • The Database Writer (DBWR),
  • The Log Writer (LGWR),
  • The Process Monitor (PMON),
  • The System Monitor (SMON),

इन चारों Processes के बारे में हम आगे विस्तार से जानकारी प्राप्त करेंगे। इन चार Processes के अलावा हम एक और Process यानी Archive Process (ARCH) के बारे में भी जानकारी प्राप्त करेंगे, क्‍योंकि इसकी जानकारी के बिना हम Disk Failure की स्थिति में Database को पूरी तरह से Recover नहीं कर सकते हैं और अन्त में हम Listener Processes के बारे में जानेंगे, जो कि किसी Network User जैसे कि Visual Basic जैसे किसी Client Program को Database से Connect होने की सुविधा प्रदान करता है। किसी भी Oracle Instance में मुख्‍य रूप से निम्न Processes Involved होते हैं:

Process Name: ARCH
Description: ये Process Redo Logs को Archive करने के लिए Disk पर या किसी अन्‍य External Device पर Copy कर देता है।

Process Name: CKPT
Description: ये Process Checkpoint Event के समय Data File के Header को Synchronization Number के साथ Update करता है। ये Process Optional होता है। यदि हम इस Process को Use ना करें] तो LGWR Process इस काम को पूरा करता है।

Process Name: Dnnn
Description: ये Dispatcher Process एक या एक से अधिक User Processes के लिए Database के Shared Access को Control करता है। ये Process तब Enabled हो जाता है, जब Multithreaded Server Option को Use किया जाता है। ये उस Server Processes को Replace कर देता है, जो User Processes के आधार पर SQL Request को Handle करता है।

Process Name: DBWR
Description: ये Process उस Data को File में Write करता है, जिसे Database Cache में Change किया गया होता है, ताकि Request किए गए नए Data को SGA में Hold करने के लिए Room Create किया जा सके। इसका प्रयोग Transaction को Commit करने के लिए नहीं किया जाता है।

Process Name: LCKn
Description: ये Process केवल Parallel Server Option के लिए Enabled किया जाता है।

Process Name: PMON
Description: जब Server Process Failure की स्थिति होती है, तब Process Monitor Transaction को Rollback करने का काम करता है। ये Process इस बात को निश्चित करता है कि जिस Transaction के लिए Database के Resources को Lock किया गया था, वे Transaction के Fail होने की स्थिति में Released हो जाएंगे।

Process Name: RECO
Description: ये Recover Process Networking Failure के बाद Distributed Transaction को Clean कर देता है।

Process Name: Snnn
Description: ये Shared Server Process केवल Multithreaded Server Option में Use होता है। ये Dispatcher Processes द्वारा Request किए गए SQL को Process करने का काम करता है।

Process Name: SMON
Description: Crash Recovery की स्थिति में SMON Database Changes को Last Checkpoint Event तक Replay कर देता है। ये Changes Online Redo Log Files में Store हो जाते हैं।

Process Name: SNPn
Description: ये Automatic Snapshot Refresh Process, Distributed Database Configuration में Master Database व अन्‍य Databases के Changes को Propagates करने के लिए Use होता है। हम इन्हें हमारे स्वयं के कामों के लिए भी Use कर सकते हैं।

Oracle Instances की सबसे ज्‍यादा Important Processes DBWR, LGWR, PMON व SMON हैं। यदि इनमें से कोई भी Service Fail हो जाए,तो Oracle Instance Fail हो जाता है। हालांकि ARCH एक Optional Process है, लेकिन फिर भी इस Process के बिना Data Archive नहीं किया जा सकता है और Failure के बाद Recovery का Chance बहुत ही कम होता है।

Windows NT पर Oracle के उपरोक्त सभी Processes एक Single Service द्वारा Active होते हैं। Service एक Executable Process होता है, जो कि Windows NT वाले Computer पर Install होता है और उस स्थिति में भी Run होता रहता है, जब कोई भी User Logged On नहीं होता है।

वह Oracle Service जो कि इन सभी Threads को NT पर Run करता है, OracleServicesid कहलाता है, जहां sid Run होने वाले Oracle Instance का नाम होता है। हम कई और Oracle Services को देख सकते हैं, जो कि उस स्थिति में स्वयं ही Automatically Start हो जाते हैं, जब Windows NT और OracleTNSListener को Restart किया जाता है।

OracleTNSListener एक ऐसा Service होता है जो Listener Process को Start करता है। ये Process Network पर स्थित विभिन्न Users को Database से Connect करता है। Server पर स्थित स्वयं SQL *Plus Session जैसे Native Connection के लिए Connection को पूरा करने के लिए किसी Listener Process की जरूरत नहीं होती है।

Database Writer (DBWR)

हम Database में जो भी Change करते हैं, वे सभी Changes Initially Memory में होते हैं। बाद में जरूरत होने पर Oracle स्वयं ही इन Changes को Data Files में Update करता है। Data File का Updation Oracle स्वयं ही Database Writer Process द्वारा Handle करता है। ये ही वह मुख्‍य Process होता है जो System Global Area के Data को Data Files में Write करता है। यदि User जिस Data के लिए Oracle से Request कर रहा है, वह Data Database Buffer Cache में ना हो, तो Oracle स्वयं ही उस Data को पहले Database Buffer Cache में Hold करता है और उसके बाद User की Request को पूरा करता है।

Database Writer Process Database Buffer Cache से Dirty Blocks को Database Files में Write करता है। जब ये Buffer INSERT, UPDATE या DELETE जैसे किसी SQL Statement के Execution के कारण Change होते हैं, इस Buffer को Dirty Block के रूप में Mark कर दिया जाता है।

जब Buffer में Dirty Blocks की संख्‍या Dirty List में एक मान तक पहुंच जाती है, तब Database Writer Least Recently Used List को Use करके ये पता लगाता है कि वह Most Suitable Buffer कौनसा है, जिसे Data Files में Write करके उस Buffer को Free किया जा सकता है। क्‍योंकि Oracle स्वयं का File Structure Use करता है, इसलिए Database Writer कई Data Blocks को एक ही समय में Data Files में Write कर सकता है, जिसे Multi-Block Write कहा जाता है।

फिर भी चूंकि Oracle सभी Data को Data Files में Continuously Write नहीं करता है, इसलिए उस स्थिति में कुछ Data Memory में ही रह सकता है, Crash की स्थिति में इस Memory का Data, Data File में Write नहीं हो पाता है। इस Problem को Log Writer द्वारा Solve किया जाता है।

Log Writer (LGWR)

हम हमारे Database के Data में जो भी Changes करते हैं, वह Change न केवल Database Buffer Cache में होता है, बल्कि उस Change की Entry Redo Log Buffer में भी होती है। यदि हमारा Oracle Instance Crash हो जाता है, तो Buffer की Entries Lost हो जाती हैं। Crash के बाद Recovery को Enable करने के लिए इन Entries को External-Disk Files में Store किया जाना जरूरी होता है।Log Writer Process इन Entries को Redo Log Buffer File से लेकर एक या एक से अधिक Online Redo Log Files में Write करने का काम करता है।

चूंकि जब भी हम हमारे Database में Change करते हैं, उस Change की Entry Redo Log Buffer में भी होती है, इसलिए Crash होने की स्थिति में Oracle इन Redo Log Buffer Files का प्रयोग करके Recovery का काम करता है। यदि हम Checkpoint Process (CKPT) को Enable नहीं करते हैं, तो Log Writer Data File के Header की Updating Checkpoint Event की स्थिति में स्वयं करता है। Log Writer Process निम्न स्थितियों में Redo Log Buffer के Contents को Write करता है:

  • जब Database Transaction Commit होता है।
  • जब Redo Log Buffer एक तिहाई भर जाता है।
  • Checkpoint Event की स्थिति में।

यदि उपरोक्त में से कोई भी स्थिति ना हो, तो Log Writer हर तीन सेकण्‍ड के अन्तराल पर Data को Disk Files में Write करता रहता है।

System Monitor (SMON)

SMON मुख्‍य रूप से निम्न कामों को पूरा करता है:

  • यदि Previous Database Shutdown में एक System-Wide Checkpoint Include ना हुआ हो, तो ये Process System Recovery का काम करता है।
  • Data File में Free Spaces के Adjacent Extents को Combine करता है। इस Action को Tablespace Level पर PCTINCREASE = 0 Setting द्वारा Turn Off किया जा सकता है, जो कि Tablespace के Default Storage Parameter में होता है।

Process Monitor (PMON)

जब Server Process Fail होता है, तब Process Monitor SGA को Clean कर देता है। विशेष रूप से PMON Failed Session के Transaction को Roll Back कर देता है और Transaction से Associated किसी भी Resource को Lock कर देता है।

Archiever (ARCH)

ये Process हालांकि Mandatory नहीं होता है, फिर भी हम इसके बिना किसी Database को Media Failure जैसे कि Hard Disk के Damage होने की स्थिति में पूरी तरह से Recover नहीं कर सकते हैं। हालांकि LGWR Process Data को Redo Log Buffer से Disk पर Write करता है, लेकिन इन Disk Files की Size व संख्‍या Limited होती है। इन्हें Circular Resources की तरह Use किया जाता है, ताकि जब Memory पूरी तरह से Fill हो जाए, तब LGWR फिर से शुरू से Memory में Data Hold कर सके। जब ऐसा होता है, तो पिछला Data नए Data से Over Write हो जाता है और पुराना Data Lost हो जाता है। इस Setup को NOARCHIVELOG Mode कहा जाता है, जो कि Oracle का Default Mode होता है। Archive Process Data को Online Redo Logs File से Destination Directory में Write करता है।

Online Redo Log Files की Overwriting को Avoid करने के लिए हमें Archiver Process को Start करना पडता है। इसके बाद जितनी बार भी File Fills Up हो जाती है, ये Process Data को Archive Area में Copy कर देता है। हमें इस बात के लिए भी Ensure होना होता है कि Database ARCHIVELOG Mode में है।

Archiver Process कुछ हद तक Control Files को Up-To-Date रखने के लिए भी जिम्मेदार होता है, हालांकि ये काम कुछ अन्‍य Processes जैसे कि LGWR के साथ Shared होता है, जो कि Checkpoints व Log Sequence Information के साथ Control Files को Update करते हैं। इनके अलावा Server Processes भी उस स्थिति में Control Files को Update करते हैं, जब Table Space को ALTER DATABASE Command द्वारा Add या Alter किया जाता है। यदि Archive Destination भर जाता है और Archiving को Enabled किया गया होता है, तो Oracle Online Redo Logs को Overwrite नहीं करता है, बल्कि अक्सर Hang हो जाता है।

Server Processes

Server Processes को इस तरह के नाम इसलिए दिए गए हैं, क्‍योंकि Server पर स्थित ये ही वे Processes हैं, जो User Requests के साथ Deal करने के लिए Design किए गए हैं। फिर भी अक्सर इन्हें गलत तरीके से User Processes के रूप में Identify किया जाता है। जबकि वास्तव में Visual Basic जैसे Actual Applications ही User Processes होते हैं। हर User Application जैसे कि Visual Basic Program द्वारा कोई Session Create करने पर इस Client की Request को Handle करने के लिए Oracle में Server Processes Create किया जाता है। ये Setup ही Users के लिए सबसे Basic स्तर का Setup होता है। Oracle को ज्‍यादा Users के बीच Scale-able बनाने के लिए हम Multi-Threaded Server Option को Use कर सकते हैं, जो कि Dispatcher Process के साथ Shared Server Processes को Use करते हुए User की Request को पूरा करता है। एक Server Process के मुख्‍यत% निम्न काम होते हैं:

  • SQL Statements को Parse करना और उन्हें Execute करना।
  • Generate होने वाले Resultset को User के Client Program पर Return करना।
  • जब Data की जरूरत हो और Required Data, Data Buffers Cache में उपलब्ध ना हो, तब Data Buffer में Data Blocks को Read करना।
  • Data में किए गए Changes को Redo Log Entries के रूप में Redo Log Buffer में Write करना।

Listener Process

Listener Processes कोई Required Background Process नहीं होता है, लेकिन यदि कोई Database को Network द्वारा Access करना चाहता है, तो इस Process की जरूरत होती है। हम इस Process को Start करके Network से आने वाली Connection Requests को “Listen” करते हैं। ये Web Server के HTTP Listener की तरह ही काम करता है। Connection स्थापित करने के बाद Listener Process, User व Oracle के बीच Communication को Handle करने के लिए Server Processes Create करता है।

इस Post में हमने Oracle के Server Processes को समझने की कोशिश की, जबकि Memory Structure के बारे में हम पिछले Article में पढ चुके हैं और  Data Files के बारे में हम अगले Article में जानेंगे।

Oracle 8i/9i SQL/PLSQL in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Oracle 8i/9i SQL/PLSQL in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

Oracle 8i/9i SQL/PLSQL in Hindi | Page: 587 | Format: PDF

BUY NOW GET DEMO REVIEWS