Oracle DBA 的個人復習筆記——一些簡單的Oracle內部簡介
2024-08-29 13:53:54
供稿:網友
做事要有始有終。前面看到了Oracle的查詢語句那里了。今天接著來。
1.Oracle執行查詢語句的步驟:
a。編譯:在編譯的時候,服務器進程會把sql語句的政務放入共享池,和庫高速緩存中,然后進行下面的:
1):首先在共享池里面搜索是不是有相同的sql語句。有的話,當然就將就拿來用了撒。沒有接下面。
2):檢查sql語句是不是正確的。
3):通過查看數據字典來檢查表和列的定義。
4):對所操作的對象加編譯鎖。--編譯時以防對象改變。
5):檢查所引用對象的用戶權限。
6):生成執行sql語句所需的優化的執行計劃。
7):將sql語句和執行計劃裝入共享的sql區。
b。執行sql語句。
c。提取數據。
附:update語句執行過程:
1):如果數據和回滾數據不在數據庫高速緩沖區(見下),服務器進程吧他們先從數據文件中讀到數據庫高速緩沖區中。
2):服務器在數據修改的行上加行鎖。
3):服務器進程把數據變化的信息和恢復數據所需要的信息記錄在重做日志文件(見下)中。
4):服務器進程把回滾所需的原始值和對數據所作的修改都寫入數據庫高速緩沖區。INSERT,DELECT 類似。
2.共享池(shared pool)
SGA的共享池由兩部分組成。庫高速緩存,數據字典高速緩存。
要想共享sql或PL/SQL,1,庫高速緩存要足夠大。不然語句很快就會被淘汰。2,語句要能被共享。
比較下面:
select * from emp where sql >=1200;
select * from emp where sql >=1201;
不同的語句哦。
select * from emp where sql >=&var;通用的哦。
在執行SQL語句時,服務器進程將把數據文件,表,索引,列,用戶和其它數據對象的定義和權限放在數據字典高速緩存中。
改變共享池大小的命令:
alter system set shared_pool_size = 100 m;
3.數據庫高速緩沖區(database buffer cache)
數據庫在提取數據的時候,首先在這里查找,如果沒有,才進行磁盤操作。
4.內存緩沖區顧問(v$db_cache_advice)
Oracle 9i以上的版本引入的一個工具。用來獲得調整數據庫高速緩沖區的統計信息。
狀態三種:ON , READY , OFF。
改變狀態,如:alter system set db_cache_advice =OFF;
5。重做日志緩沖區(redo log buffer)
用于在數據庫崩潰的時候恢復數據用的。在DDL,DML操作數據前都將恢復所需的信息,即在寫入數據庫高速緩沖區之前,先寫入這里。
6.大池(large pool)和java池(java pool)
large pool提高效率。java pool 能夠編譯java語言的命令。
7.內存緩沖區大小的設定。
DB_BLOCK_BUFFERS,LOG_BUFFER,SHARED_POOL_SIZE.SGA_MAX_SIZE 等等。
設置: ALTER SYSYTEM SET *******;
8.內存緩沖區信息的獲取。
show sga;
select * from v$parameter where name ='sga_max_size';
還有一些進程沒有看。明天看,跑步去了。