Oracle 一次小优化
公司的系统上线已经一年半了,服务器内存是很充裕的,有72G。 刚上线那会对PGA和SGA进行过一次调整,性能好了点。 前段时间做AWR分析的时候发现PGA和SGA 需要调整了。 先对AWR做几个截图:
从上面3个截图可以看出如下信息:当SGA 调整为现在的1.5倍,即14136M, 逻辑读有明显的降低。 PGA增加900M, 磁盘读写也是降低的很明显。
根据上面的分析,写了个报告,周五晚上停机修改一下。 正好周六回家睡大觉。 系统是2个节点的Data Guard。很简单。
操作过程如下:
1. 在主备库上用spfile 创建pfile文件,然后做一个备份。 万一修改有问题,在还原回来。
SQL>create pfile from spfile;
2. shutdown 主库
3. shutdown 备库
Data Guard 环境对主备库停机顺序是有要求的:
停机:先停主库,在停备库
启动:先起备库,在起主库
4. 修改2个pfile参数
*.pga_aggregate_target=5153751040
*.sga_max_size=14822670336
*.sga_target=14822670336
5. 在主备库上用pfile 创建spfile文件
SQL>create spfile from pfile='/dba/oracle/product/10.2.0/db_1/dbs/initorcl.ora';
6. 一起准备就绪,启动备库。结果报了一个错:
ORA-27102: out of memory
Linux-x86_64 Error: 28: No space left on device
改个参数还能报个错,杯具了。 goole 一下,找到了原因。 因为/etc/sysctl.conf文件里的一个参数有错误。
kernel.shmall = 8388608 -- 为物理内存除以pagesize;
kernel.shmmax = 29968709120 -- 这个是物理内存大小一半。
我报错的原因就是shmall 设为2k的。 修改之后启动没有问题。
修改之后,用: $sysctl -p 命令生效一下。
关于这些参数的调整,可以参考Blog:
Linux 内核参数及Oracle相关参数调整
http://blog.csdn.net/tianlesoftware/archive/2009/10/15/4668741.aspx
先启动监听:
#lsnrctl start
启动数据库是mount:
SQL>startup nomount;
SQL>alter database mount standby database;
SQL>alter database recover managed standby database disconnect from session;
7. 启动主库的监听和实例
#lsnrctl start
SQL>startup
8. 检查一下同步情况
在主库切换下日志:
SQL>alter system switch lofile;
SQL>select max(sequence#) from v$archived_log;
到备库检查一下是否同步:
SQL>select sequence#,applied from v$archived_log;
主备一致, 一切正常。 等明天业务上线之后就可以观察下参数修改之后的影响了。
Data Guard 的知识,参考Blog:
Oracle Data Gurad Physical Standby 相关说明
http://blog.csdn.net/tianlesoftware/archive/2010/05/04/5557410.aspx
------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
DBA1 群:62697716(满); DBA2 群:62697977(满)
DBA3 群:63306533; 聊天 群:40132017
--加群需要在备注说明表空间和数据文件之间的关系,否则拒绝申请