在数据库使用asmm内存管理时show parameter 查看自动调整的内存组件都为0,如:
SQL> show parameter shared_pool_size NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ shared_pool_size big integer 0
那么我们如何查看asmm数据库的该部分内存组件实际使用量呢?我们可以通过如下语句查询:
col component format a30;
select component, current_size,min_size,max_size,user_specified_size from v$sga_dynamic_components;
如:
SQL> col component format a30; SQL> select component, current_size,min_size,max_size,user_specified_size from v$sga_dynamic_components; COMPONENT CURRENT_SIZE MIN_SIZE MAX_SIZE USER_SPECIFIED_SIZE ------------------------------ ------------ ---------- ---------- ------------------- shared pool 2952790016 2952790016 2952790016 0 large pool 67108864 67108864 67108864 0 java pool 67108864 67108864 67108864 0 streams pool 0 0 0 0 DEFAULT buffer cache 2.7649E+10 2.7649E+10 2.7649E+10 0 KEEP buffer cache 0 0 0 0 RECYCLE buffer cache 0 0 0 0 DEFAULT 2K buffer cache 0 0 0 0 DEFAULT 4K buffer cache 0 0 0 0 DEFAULT 8K buffer cache 0 0 0 0 DEFAULT 16K buffer cache 0 0 0 0 DEFAULT 32K buffer cache 0 0 0 0 Shared IO Pool 0 0 0 0 ASM Buffer Cache 0 0 0 0 14 rows selected.
--下面是关于SGA和ASMM的一些基本知识
1.SGA组成
Oracle的SGA基本内存组件从9i开始并没有非常大的变化,他们包括:
Buffer Cache 我们常说的数据库高速缓存,虽然我一直不明白要冠以高速之名
Default Pool 默认的缓冲池,大小由DB_CACHE_SIZE决定
Keep Pool 持久的缓冲池,大小由DB_KEEP_CACHE_SIZE决定
Non standard pool 非标准块标准池,大小由DB_nK_cache_size决定
Recycle pool 回收池,大小由db_recycle_cache_size决定
Shared Pool 共享池,大小由shared_pool_size决定
Library cache 俗称的库缓存
Row cache 行缓存,也叫字典缓存
Java Pool java池,大小由Java_pool_size决定
Large Pool 大池,大小由Large_pool_size决定
Fixed SGA 固定的SGA区域,包含了Oracle内部的数据结构,一般被存放在第一个granule中
2.ASMM影响的内存组件
ASMM下一部分参数是自动设置的(Automatically set),这些参数包括:
shared_pool_size、db_cache_size、java_pool_size、large_pool _size和streams_pool_siz
而另外一些是需要手动设置的静态参数,包括:
db_keep_cache_size、db_recycle_cache_size、db_nk_cache_size、log_buffer以及固定SGA内存结构
等,如果以上没有手动设置这些参数的话,除去log_buffer和fixed sga其他内存组件一般默认大小为零。