您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關oracle中SGA區基礎知識與查看命令的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
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)
創建非標準內存塊大小(內存塊不為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區基礎知識與查看命令的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。