今天整理一下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>