分享

RAC环境下如何将数据库内存由200G调整到500G

 1qxm19 2019-11-13
                                              版本:oracle 11.2.0.4 rac for solaris 
1.先备份spfile:
直接copy备份:
su - oragrid
-bash-4.1$ pwd
/dlmapp/oragrid/home
-bash-4.1$ id
uid=1003(oragrid) gid=103(oinstall)
-bash-4.1$ asmcmd
ASMCMD> ls
dlmDG1/
dlmDG2/
OCRVOTDG/
REDODG1/
ASMCMD> cd dlmdg1
ASMCMD> ls
ASM/
dlm/
snapcf_dlm.f
ASMCMD> cd dlm
ASMCMD> cp spfiledlm.ora /dlmapp/oragrid/home/
copying +dlmdg1/dlm/spfiledlm.ora -> /dlmapp/oragrid/home//spfiledlm.ora
建立pfile来备份spfile:
su - oradlm
sqlplus /nolog
conn /as sysdba
create pfile='/dlmapp/orapl/home/initdlm.ora' from spfile;
若更改参数后,导致无法启动实例,可以按以下方法还原参数:
方法一:
  在asmcmd中执行:cd /dlmapp/oragrid/home/spfiledlm.ora  +dlmdg1/dlm/,copy完后,查看到实际的spfile文件名,然后在更改每个实例对应的init参数文件的指向,如下:
-bash-4.1$ cat initdlm2.ora
SPFILE='+dlmDG1/dlm/spfiledlm.ora'  ---spfile文件名作相应修改
方法二:
  以备份的pfile文件启动实例,如下:
SQL>startup nomount pfile=/dlmapp/orapl/home/initdlm.ora
SQL>create spfile='+dlmDG1' from pfile;
查看到实际的spfile文件名,然后在更改每个实例对应的init参数文件的指向,如下:
-bash-4.1$ cat initdlm2.ora
SPFILE='+dlmDG1/dlm/spfiledlm.ora'  ---spfile文件名作相应修改

优先方法二,通过pfile来恢复

2.OS的内存参数修改(两节点)
su - root
projects -l
projmod -sK "project.max-shm-memory=(privileged,600G,deny)" user.oradlm
projmod -sK "project.max-shm-memory=(privileged,600G,deny)" user.oragrid
3.数据库参数修改
周五晚利用应用程序发版时间,先停掉应用,再一个一个实例来改sga参数:
节点一:
alter system reset sga_max_size scope=spfile;  #原来为150G
alter system set db_cache_size=120G scope=spfile; 
alter system set shared_pool_size=75G scope=spfile;  #原来为26G
alter system reset shared_pool_reserved_size scope=spfile; #原来为512M
alter system set db_keep_cache_size=270G scope=spfile; #原来为1G
alter system set "_lm_sync_timeout"=1200 scope=spfile; #(11.2.0.4 缺省为 163)
alter system set "_lm_tickets"=8000 scope=spfile;  #(11.2.0.4 缺省为 1000)
alter system set "_ksmg_granule_size"=134217728 scope=spfile; #原来为16777216
alter system set "_gc_policy_minimum"=15000 scope=spfile; #(11.2.0.4 缺省为 1500)
alter system set gcs_server_processes=20 scope=spfile; #原来为10
alter system set java_pool_size=3584M scope=spfile; #原来为2G
已有的其它内存参数设置,参考如下:
large_pool_size                      big integer 15808M
streams_pool_size                    big integer 1G
更改完后,同时停掉实例,然后一个一个节点地启动实例。

查看当前用户设置的shm设置是有更改:

prctl -n project.max-shm-memory -i process $$

4.重启

-bash-4.1$ srvctl start instance -d dlm -i dlm2
PRCR-1013 : Failed to start resource ora.dlm.db
PRCR-1064 : Failed to start resource ora.dlm.db on node abc208
CRS-5017: The resource action "ora.dlm.db start" encountered the following error: 
ORA-27102: out of memory
SVR4 Error: 22: Invalid argument
. For details refer to "(:CLSN00107:)" in "/dlmapp/oragrid/11.2.0/log/abc208/agent/crsd/oraagent_oradlm/oraagent_oradlm.log".
CRS-2674: Start of 'ora.dlm.db' on 'msuu208' failed
alert log中报错:
optimally. Creating a segment of size 0x0000007660000000
failed. Please change the shm parameters so that
a segment can be created for this size. While this is
not a fatal issue, creating one segment may improve performance
用srvctl启动实例报错
用sqlplus可以正常启动。
可能原因是因为oragrid下的project刚设置上,而rac很多组件是工作在oragrid下的,需要重启crs服务,可能才会生效,,所以先用sqlplus启动,以后再找时间重启crs后,再用srvctl启动.                                     

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多