今天整理一下oracle内存知识,如果oracle内存分配不到位则会非常影像性能,oracle有自动内存管理,但是我们在自己管理运维的时候,还是应该知道内存的原则。我们oracle都是运行在操作系统之上的,所以我们需要流出一部分给操作系统使用,我们一般操作系统留20%即可,其余的都留给数据库使用,而数据库内存又分为了sg和pga,今天我们就来分别说说,我们举例来说,加入我们的服务器内存是100GB,那么我们分给操作系统的就是80GB,而pga占用20%左右即可,这样我们分给sga就是60G。sga我们分配的主要是sga_target和sga_max_target,其中注意sga_target小于等于sga_max_target。以下是实际分配情况,留作备用。
- sql> show parameter spfile
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- spfile string package/orcl/spfileorcl.ora
- sql> show parameter pfile
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- spfile string package/orcl/spfileorcl.ora
- sql> show parameter target
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- archive_lag_target integer 0
- db_flashback_retention_target integer 1440
- fast_start_io_target integer 0
- fast_start_mttr_target integer 0
- memory_max_target big integer 0
- memory_target big integer 0
- parallel_servers_target integer 1280
- pga_aggregate_target big integer 19468M
- sga_target big integer 58496M
- sql> show parameter sga
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- lock_sga boolean FALSE
- pre_page_sga boolean FALSE
- sga_max_size big integer 58496M
- sga_target big integer 58496M
- sql> show parameter pga
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- pga_aggregate_target big integer 19468M
- sql> show parameter memory
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- hi_shared_memory_address integer 0
- memory_max_target big integer 0
- memory_target big integer 0
- shared_memory_address integer 0
- sql>