共計 3156 個字符,預計需要花費 8 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這篇文章將為大家詳細講解有關 oracle 中 SGA 區基礎知識與查看命令的示例分析,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
Instance:數據庫啟動后在內存中的映像,以及管理該內存區的后臺進程;
組成:(SGA+background process);
查看數據庫的實例名:
Sql show parameter instance name;
查看數據庫名:
Show parameter db_name;
數據庫的文件組成:參數文件(spfile,pfile..),控制文件 (controlfile),日志文件 (redofile..),口令文件 (v$pwfile_users),數據文件,跟蹤文件 (.trace),警告文件 (alert),歸檔文件 (achivlog);
實例與數據庫的關系:
一個實例對應一個數據庫:單點數據庫(通常情況)
多個實例對應一個數控庫:OPS 和 RAC(多個 SGA)
前期的并行服務器:Oracle Paraller Server
應用集群:Real Application Cluster
SGA(system global area)
SGA 是一組包含著一個 oracle 實例的數據和控制信息的共享內存結構
是為 oracle 系統分配的共享內存;
是實例的主要組成部分,最影響數據庫性能;
自動動態管理各種緩沖(ASMM,keep,recycle,redo_log_buffer 不參與動態分配)
SGA 的緩存類型:
1. db_buffer_cache(數據緩存)
(1) default_pool(普通進程訪問此緩沖區會將該緩存區移動到 LRU 列表的 MRU 端,但是執行 FTS(full table scan)和小表查詢時會放到 LRU 端)
(2) keep pool(數據先進先出,用來放熱點表,VIP 池)
(3) recycle pool(用來放冷點大表,不需要多大空間,吸引冷數據。相當于垃圾池)
(4) db_nk_cache_size(不同內存塊大小以適應不同塊大小表空間)
2. shared_pool(SGA 中最關鍵內存片段,太小降低性能,太大消耗大量 cpu 資源)
(1) library_cache(sql 語句緩存)
(2) data dictionary cache(數據字典緩存)
(3) other(600 多項部分)
3. large_pool(常用做備用池)
4. java_pool(java 開發支持)
5. redo_log_buffer(記載對數據庫的任何修改,寫入磁盤的 redolog 是實例恢復的依據)
SGA 部分重要查詢命令:
設置自動跟蹤統計:
Set autot on stat
Set autot off
Show sga
Select * from v$sga
Show parameter sga;(查看 sga max size,sga target size 大小,運行時是否將 SGAs 鎖定到物理內存(lock sga),啟動時是否都使用物理內存(pre page sga);
Show parametetr pre_page_sga;
Show parameter lock_sga;
Alter system set pre_page_sga=true scope=spfile
alter system set sga_max_size=512M scope=spfile (重啟生效)
show parameter sga_max_size;
show parameter sga_target;
alter system set sga_target_size=400m scope=both (memory –a- s pfile)
Granule_size: sga 內存的顆粒度大小,手工分配內存大小,會自動調整為顆粒度的整數倍。
若 SGA 小于 1G,granule_size=4m
若 SGA 大于 1G granule-size=8m (for windows) granule-size=16m(fro other)
SGA_TARGET (Automatic shared memory management)
查看各緩存下限值:
Show parameter db_cache_size;
Show parameter shared_pool_size;
Show parameter java_pool_size;
Show parameter large_pool_size;
查看實際大小:
Select name,current_size from v$buffer_pool;
Select pool,sum(bytes) from v$sgastat group by pool;(查看 java,shared,large pool size)
若需改小某緩沖區的分配下限值,需先關閉 ASMM, 修改完后需將所有緩存下限修改回 0 使 ASMM 能自動管理
查詢當前各池的分配大小:
Select component,current_size from v$sga_dynamic_components ;
指定對象全表掃描時數據仍放在 MRU 端
Create table aaa() cache;
Altert table aaa cache;
修改 keep,recycle 池大小并指定對象使用
Alter system set db_keep_cache_size=10m scope=both
Alter system set db_recycle_cache_size=10m scope=both
Create table aaa() storage (buffer_pool keep/recycle)
Alter table bbb storage(buffer_pool keep/recycle)
創建非標準內存塊大?。▋却鎵K不為 8k),以建非標準大小塊表空間
Show parameter db%cache_size;
Alter system set db_16k_cache_size=10m;
Create tablespace I datafile‘/u01/i.dat’size 50m blocksize 16k;
查看 library cache 大小
Select sum(sharable_mem) from v$db_object_cache
清空緩存區:
Alter system flush shared_pool
設置計時:
Set timing on;
查看保存在 library cache 中保存的已分析 sql 語句
Select * from v$sqltext where sql_text like‘%dba_object%’;
Select sql_text from v$sqlarea where sql_text like‘%dba_object%’;
數據字典:
Select * from dict; 查看數據字典
查看數據庫中有哪些用戶:
Select username from dba_users;
查看數據庫中有哪些數據文件;
Select file_name from dba_data_files;
Select name from v$datafile;
查看數據字典緩存的大小
Select sum(sharable) from v$sqlarea;
動態表:
查看系統中所有的動態表:
Select * from v$fixed_table;
Fixed SGA:shared pool 內的 dictionary cache 中的一部分與其他部分附加內存信息會被實例的后臺進程所訪問,在實例啟動后會被固定在 SGA 中,是 SGA 中固定組件;
關于“oracle 中 SGA 區基礎知識與查看命令的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
向 AI 問一下細節
丸趣 TV 網 – 提供最優質的資源集合!