Oracle的sql語句執行過程

2021-06-12 12:29:40 字數 997 閱讀 2528

--sql語句的執行過程

1.連線方式

2.查詢語句的執行過程

1)語句解析

a)檢查庫快取,有無執行過相同的sql語句

沒有,進入b)

有,進入2)

b)檢查語法:關鍵字

c)檢查語義:表名,列名

d)獲得解析鎖

e)核對訪問許可權

f)確定執行計畫(explain plan)

g)儲存執行計畫到快取區

2)語句執行

a)檢查快取中有無資料塊;

沒有:進入b)

有:進入3)

b)查詢獲取目標資料檔案

3)返回結果到客戶端

3.dml的執行過程

1)語句解析

a)檢查庫快取,有無執行過相同的sql語句

沒有,進入b)

有,進入2)

b)檢查語法:關鍵字

c)檢查語義:表名,列名

d)獲得解析鎖

e)核對訪問許可權

f)確定執行計畫(explain plan)

g)儲存執行計畫到快取區

2)語句執行

a)檢查快取區有無要修改的資料

沒有:從資料檔案裝載到快取

b)在要修改的資料記錄上加鎖。防止在事務期間其他事務修改這些資料

c)把舊資料放到undo segment中,新資料放在資料塊對應的快取中

3)返回結果到客戶端,返回影響的記錄數

4.事務提交:commit

1)redo log buffer.    scn

2)lgwr啟動,redo log buffer 寫入到redo log files

3)通知客戶端事務已提交

4)oracle server標示這個事務已完成

其他:dbwr把髒資料寫入資料檔案,示範資料記錄上的鎖

5.事務回滾:rollback

1)把undo segment中的資料寫回

2)釋放undo segment中被占用的空間

oracle 查詢最近執行過的 SQL語句

select sql text,last load time from v sql order by last load time desc select sql text,last load time from v sql where last load time is not null and ...

oracle 查詢最近執行過的 SQL語句

select sql text,last load time from v sql order by last load time desc select sql text,last load time from v sql where last load time is not null and ...

oracle 查詢最近執行過的 SQL語句

select sql text,last load time from v sql order by last load time desc select sql text,last load time from v sql where last load time is not null and ...