oracle 中带双下划线的参数如(*.__shared_pool_size=)

 平台:AIX6.1,数据库版本:11.2.0.3(psu5)
在一次单机转RAC过程中,在修改原有参数文件,启动rac库时遇到了如下问题,由此问题引出了本篇的标题所要讲的问题。

1.备份原单实例库参数文件
create pfile='/data01/initegap.ora' from spfile;(在单实例数据库上执行)
pfile文件如下:
--注意:发现参数文件中有两处配置了pga和sga参数,开始以为带双下划线的参数同不带双下划线一样,所以在rac的参数文件中就
只保留了带双下划线部分,也正是这个改动,导致了后面数据库无法启动

2.根据原库参数文件修改后生成rac参数文件
--修改后的rac的参数文件如下
--所有参数值都未作修改,只是添加了rac所需的参数

 

egap.__db_cache_size=27648851968
egap.__java_pool_size=67108864
egap.__large_pool_size=67108864
egap.__oracle_base='/apps/oracle'#ORACLE_BASE set from environment
egap.__pga_aggregate_target=10334765056
egap.__sga_target=30937186304
egap.__shared_io_pool_size=0
egap.__shared_pool_size=2952790016
egap.__streams_pool_size=0
*.audit_file_dest='/apps/oracle/admin/egap/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/data01/egap/control01.ctl','/data01/egap/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_file_name_convert='/data01/egapdb','/data01/egap'
*.db_name='egap'
*.diagnostic_dest='/apps/oracle'
*.fal_client='primary'
*.fal_server='standby1','standby2'
*.log_archive_config='DG_CONFIG=(egap,egapdb)'
*.log_archive_dest_1='location=/archlog/egap'
*.log_archive_dest_2='SERVICE=standby1 LGWR ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=egapdb'
*.log_archive_format='egap_%t_%s_%r.arch'
*.log_file_name_convert='/data01/egapdb','/data01/egap'
*.open_cursors=300
*.pga_aggregate_target=10307502080
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=30922506240
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'

2.根据原库参数文件修改后生成rac参数文件
--修改后的rac的参数文件如下
--所有参数值都未作修改,只是添加了rac所需的参数

 

egapdb2.__db_cache_size=27648851968
egapdb1.__db_cache_size=27648851968
egapdb2.__java_pool_size=67108864
egapdb1.__java_pool_size=67108864
egapdb2.__large_pool_size=67108864
egapdb1.__large_pool_size=67108864
*.__oracle_base='/apps/oracle'#ORACLE_BASE set from environment
egapdb2.__pga_aggregate_target=10334765056
egapdb1.__pga_aggregate_target=10334765056
egapdb2.__sga_target=30937186304
egapdb1.__sga_target=30937186304
egapdb2.__shared_io_pool_size=0
egapdb1.__shared_io_pool_size=0
egapdb2.__shared_pool_size=2952790016
egapdb1.__shared_pool_size=2952790016
egapdb2.__streams_pool_size=0
egapdb1.__streams_pool_size=0
*.audit_file_dest='/apps/oracle/admin/egapdb/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/data01/egapdb/control01.ctl','/data01/egapdb/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.DB_FILE_NAME_CONVERT='/data01/egap','/data01/egapdb'
*.db_name='egap'
*.DB_UNIQUE_NAME='egapdb'
*.diagnostic_dest='/apps/oracle'
egapdb1.FAL_CLIENT='standby1'
egapdb2.FAL_CLIENT='standby2'
*.FAL_SERVER='primary'
*.cluster_database=TRUE
*.cluster_database_instances=2
egapdb1.instance_name='egapdb1'
egapdb2.instance_name='egapdb2'
egapdb1.instance_number=1
egapdb2.instance_number=2
egapdb1.thread=1
egapdb2.thread=2
*.undo_management='AUTO'
egapdb1.undo_tablespace='UNDOTBS1'
egapdb2.undo_tablespace='UNDOTBS2'
egapdb1.local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.96.3)(PORT=1521))))'
egapdb2.local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.96.4)(PORT=1521))))'
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(egap,egapdb)'
egapdb1.log_archive_dest_1='location=/archlog/egapdb1'
egapdb2.log_archive_dest_1='location=/archlog/egapdb2'
*.log_archive_dest_2='SERVICE=primary LGWR ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=egap'
*.log_archive_format='egapdb_%t_%s_%r.arch'
*.LOG_FILE_NAME_CONVERT='/data01/egap','/data01/egapdb'
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.STANDBY_FILE_MANAGEMENT='AUTO'

3.用新的pfile启动数据库(然后进行添加redo,undo,实例等操作)
SQL> startup pfile='/data01/pfile';
ORA-00371: not enough shared pool memory, should be atleast 395251753 bytes
--用修改后的rac参数文件启动时报如下错误,修改时我对参数值进行改动,只是添加了rac所需要的一些参数,按理说是不应该会报参数值过小这类
错误的,因为原来的单实例库用的就是同样的参数。

 

4.问题发生的原因
后来发现是因为我在修改原参数文件时,去掉了*.pga_aggregate_target=和*.sga_target=
只保留了如下参数
egapdb2.__pga_aggregate_target=10334765056
egapdb1.__pga_aggregate_target=10334765056
egapdb2.__sga_target=30937186304
egapdb1.__sga_target=30937186304
--后来在参数文件中加上*.pga_aggregate_target=和*.sga_target=参数以后能够正常启动
 5.带双下划线的参数的意义

    这里我们来说一下参数文件中带双下划线的参数的意义(带单下划线的参数为隐含参数),带双下划线的参数在自动内存管理中才会出现(asmm)。如果使用了spfile的话,asmm会在实例shutdown之前将当前实际的内存组件大小(oracle认为最优的,实际上可能不是最优的)保存到spfile中,你用strings命令可以在spfile文件中查看到带双下划线的参数(asmm所涉及到的参数)。这些在spfile保存的组件大小会在下次启动时被沿用,已达到将已实践得出的“最佳值”记住的目的,这样下次就不用逐渐调整了。

 

 

你可能感兴趣的:(参数,带双下划线)