=====Overview===== The SQL processing like any other processing of code. It comes from a human and needs to go back to a human :) The problem is, through how many stops it will pass Below you can see a basic representation on the possible wait times for any query: {{ :sqlprocessing.jpg?500 |}} This picture, clearly displays why it isn't ALWAYS A DATABASE FAULT :) Often the database is intermediary point between the User and the data. =====Calls===== Before we start speaking of SQL processing, we should discuss something very important and that is how ORACLE communicate and operate in general. Oracle kernel is using requests called "calls". These "calls" represent request to certain structures and are generally devided into two groups: DB Calls: * Parse * Execute * Fetch Operation System (OS) Calls: * WAIT * STAT These calls are accomplished using different functions: {{ :sql_process_calls.gif?600 |}} =====SQL Processing ===== SQL Processing is one of the biggest problems with any database because it is the hearth of performance tuning. In that chapter I will try to summarize, how Oracle processes an SQL. Firstly the statement has to be processed and there are several steps which should be executed. Below you can check a brief picture of Cursor Processing: {{ :cursorparsing.jpg?600 |}} [[oracle_sql_processing_parse| Parsing]] * Open Cursor * Syntax Check * Semmantic Check * [[oracle_sql_processing_shared_pool_check| Shared Pool check]] * Binding * *Optimization * *Row source generation [[oracle_sql_processing_execute| Execute]] * Execution [[oracle_sql_processing_fetch| Fetching]] * Fetch results * Close Cursor *- Only when hard parse is needed