Oracle SQL語句解析過程

2021-10-23 23:10:07 字數 1182 閱讀 5749

目錄

oracle sql語句解析過程

1 軟硬解析

2 sql解析過程

sql語句在到達oracle例項後,需要先進行解析,分析出最優的執行計畫後,再按照執行計畫,開始執行sql。根據能否復用執行計畫,解析過程可以分析以下兩大類:

【注意】:oracle中只有完全相同的語句,包大小寫、空格、換行都要求一樣時,才會重複使用以前的分析結果與執行計畫。

對於大量的、頻繁訪問的sql語句,盡量採用bind變數方式,走soft parse,減少hard parse,降低cpu和記憶體資源消耗。

oracle sql語句的具體處理過程,大致如下:

sql語句經過hash運算,得到乙個hash值;

在shared pool 的 library cache 中查詢是否有相同的hash值,如果存在,則無需硬解析,直接進行軟解析;

如果shared pool不存在此hash值,則進行語法檢查,檢視是否有語法錯誤 ;

如果沒有語法錯誤,就進行語義檢查,檢查該sql引用的物件是否存在,該使用者是否具有訪問該物件的許可權;

如果沒有語義錯誤,對該sql進行解析,生成解析樹和執行計畫;

生成oracle能執行的二進位制**,執行該**,並返回結果給使用者 ;

圖1- oracle sql解析過程:

下面是eygle《深入解析oracle》中關於sql執行過程的描述:

首先獲得library cache latch,根據sql的hash_value在library cache中查詢是否存在此hash_value,如果找到這個hash_value,稱之為軟解析,server獲得改sql執行計畫轉向第4步,如果找不到共享**就進行硬解析。

釋放library pool cache,獲得shared pool latch,查詢並鎖定自由空間(在bucket 中查詢chunk)。如果找不到,報ora-04031錯誤

釋放shared pool latch,重新獲得library cache latch,將sql執行計畫放入library cache中。

釋放library cache latch,保持null模式的library cache pin/lock.

開始執行。

oracle sql 解析過程

解析有兩種 硬解析和軟解析 parse 1 從共享池的庫緩衝區中搜尋,該語句是否曾經執行過,凡是執行過的sql語句,oracle會使用hash函式進行計算,產生乙個很小的文字記錄,如果是第一次執行,則進入第二步。2 檢查語句 許可權等等 許可權資訊是存放在oracle的資料字典中,oracle先從共...

Oracle SQL語句處理過程

07年開始,換了一家公司,資料庫使用的是oracle10g,以前一直使用的是informix和msserver,感覺oracle功能還真強大,比informi和msserver都好用多啦,體系結構和管理方式都有了許多變化,但使用兩個月下來,其實資料庫的基本原理是一樣的,現結合以前的工作經驗和學習的資...

常用oracle sql語句

建立表空間 alter tablespace nm offline drop tablespace nm including contents and datafiles drop user nmcascade create tablespace nm datafile 1 size 500m au...