Java池的概念
· 在Oracle中配置Java环境时有以下一些参数:
?nbsp; SHARED_POOL_SIZE JVM缓存在共享池中;
?nbsp; JAVA_POOL_SIZE 缓存与JAVA相关的会话数据,默认值20M,取值范围是1M到1G;(Oracle推荐,对于有JAVA的应用,将这个值设到50M或者更大)
?nbsp; JAVA_SOFT_SESSIONSPACE_LIMIT 当某个JAVA进程请求的内存超过这个限制时,会写一条消息到用户跟踪文件,默认值是0,最大值是4G;
?nbsp; JAVA_MAX_SESSIONSPACE_LIMIT 当JAVA进程请求的内存超过这个参数的限制时,返回ora-29554的错误,默认值是0,最大值是4G;
· 测量JAVA池的性能有下面两种方法:
?nbsp; Select * From V$sgastat Where Pool = 'java pool'; 观察这个查询,如果发现未使用内存很大或者不断增加,表示JAVA池可能分配了太多的内存,如果未使用内存很小或者不断减少,表示可能需要加大JAVA池的内存。
?nbsp; 观察Statspack中的SGA breakdown difference,里面有JAVA池free memory的起始值和终止值,如果终止值总是很小或者接近零,表示JAVA池可能太小了;
· 改进JAVA池的性能主要是增大JAVA_POOL_SIZE这个参数,这个参数不能动态调整。
第七章 调整日志机制 1. 理解Oracle的日志机制
理解Oracle的日志机制
· Oracle的日志是用来记录用户对数据库的改变,这样,当出现服务器硬件故障或者用户错误而丢失数据时,可以通过重做这些日志来恢复已提交的事务,Oracle日志机制包含以下组件:
?nbsp; 日志缓存 SGA的一部分,用于缓存服务器进程产生的日志,包括DML和DDL;
?nbsp; LGWR进程 这个后台进程负责将日志缓存的数据写到联机日志文件,每个实例只有一个;
?nbsp; 数据库检查点 检查点用于同步数据文件和日志文件,一个检查点事件的完成,代表在这个事件开始之前发生的所有对数据文件的改变都已实际记录到了数据文件,数据库在这个时间点是一致的,在实例恢复的时候,只有在最后一个检查点之后的日志才需要重做;
?nbsp; 联机日志文件 用于存放从日志缓存中写出的日志数据,每个数据库最少需要两个日志文件,当前日志文件填满以后,发生日志切换,然后才可以继续写下一个日志文件;
?nbsp; 日志归档 LGWR写满所有组的联机日志文件以后,会回头再写第一个组的日志文件,在非归档模式下,被重用的日志文件中的日志会被丢弃,在归档模式下,日志文件被重用前会被ARC0进程复制到归档日志文件;
· 一些可选的日志机制,如归档和Standby,因为附加的I/O会降低系统的性能,同时提供了可靠的灾难恢复能力,不建议因这些性能的下降而关闭生产系统的归档功能。