1、查看参数文件
首先查看参数文件的位置:
SQL> show parameter spfile
NAME TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
spfile string
+ASM_DG/orarac/spfileorarac.ora
两个实例都是用这个共享参数文件启动。
为了查看参数文件的内容,首先创建pfile:
SQL> create pfile='/home/oracle/pfile.ora' from spfile;
File created.
然后就可以查看其内容了(pfile为文本文件),内容及说明如下:
orarac1.__db_cache_size=520093696
orarac2.__db_cache_size=385875968
orarac1.__java_pool_size=16777216
orarac2.__java_pool_size=16777216
orarac1.__large_pool_size=16777216
orarac2.__large_pool_size=16777216
orarac1.__oracle_base='/u01/app/grid'#ORACLE_BASE set from environment
orarac2.__oracle_base='/u01/app/grid'#ORACLE_BASE set from environment
orarac1.__pga_aggregate_target=654311424
orarac2.__pga_aggregate_target=654311424
orarac1.__sga_target=956301312
orarac2.__sga_target=956301312
orarac1.__shared_io_pool_size=0
orarac2.__shared_io_pool_size=0
orarac1.__shared_pool_size=385875968
orarac2.__shared_pool_size=520093696
orarac1.__streams_pool_size=0
orarac2.__streams_pool_size=0
*.audit_file_dest='/u01/oracle/admin/orarac/adump'#当audit_trail这个参数设置为非db时,审计记录存放的目录
*.audit_trail='db'#审计记录放置处,此处值db表示审计记录放在SYS.AUD$表中
*.cluster_database=true#是否为RAC数据库
*.compatible='11.2.0.0.0'#实例兼容的版本
*.control_files='+ASM_DG/orarac/controlfile/current.256.863369275','+ASM_DG/orarac/controlfile/current.257.863369275'#控制文件位置
*.db_block_size=8192#默认数据块大小
*.db_create_file_dest='+ASM_DG'#数据文件的默认位置
*.db_domain=''#可添加到db_name末尾来生成全局唯一名称的域名
*.db_name='orarac'#全局数据库名称(而非实例名称)
*.db_recovery_file_dest='+ASM_DG'#闪回恢复区路径
*.db_recovery_file_dest_size=5218762752#闪回恢复区的可使用大小
*.diagnostic_dest='/u01/oracle'#用作诊断的相关文件的目录,例如日志文件则在<diagnostic_dest>/diag/rdbms/<dbname>/<instname>/trace这个目录下
*.dispatchers='(PROTOCOL=TCP) (SERVICE=oraracXDB)'#配置共享服务器模式的dispatcher进程
orarac1.instance_number=1#实例1的实例编号
orarac2.instance_number=2#实例2的实例编号
*.memory_target=1606418432#SGA和PGA之和可用的最大值
*.open_cursors=300#一个会话一次可以打开游标(用来操作private SQL areas)的最大数量
*.processes=150#可以连接实例的最大进程数
*.remote_listener='cluster-scan:1521'#实例远程注册监听器
*.remote_login_passwordfile='exclusive'#是否使用口令文件,该值表示口令文件为该数据库独有
orarac2.thread=2#实例使用的redo线程。线程号与实例号没有直接关联
orarac1.thread=1
orarac1.undo_tablespace='UNDOTBS1'#实例1的撤销表空间
orarac2.undo_tablespace='UNDOTBS2'
2、参数文件与RAC实例的启动
除了ASM中的共享spfile,另外还存在一个pfile,它在操作系统目录中:
[root@node1 oracle]# find / -name initorarac1.ora
/u01/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/initorarac1.ora
pfile为文本文件,spfile为二进制文件。
在单实例环境中,实例启动时首先找的是spfile<sid>.ora,如果该文件不存在尝试使用spfile.ora,如果这些参数文件都不存在,将使用init<sid>.ora。那么在RAC环境中,情况如何呢?
在RAC环境中,init<sid>.ora的内容仅为一个指向spfile的指针:
查看initorarac1.ora的内容:
[root@node1 oracle]# less initorarac1.ora
SPFILE='+ASM_DG/orarac/spfileorarac.ora'
创建pfile:
SQL> create pfile from spfile;
File created.
再次查看initorarac1.ora:
[root@node1 dbs]# less initorarac1.ora
orarac1.__db_cache_size=520093696
orarac2.__db_cache_size=385875968
......
此时initorarac1.ora的内容已经变了。
重新启动实例,查看参数文件:
SQL> show parameter pfile
NAME TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
spfile string
此时实例使用pfile启动了。
将initorarac1.ora的内容改回去:
[root@node1 dbs]# vi initorarac1.ora
SPFILE='+ASM_DG/orarac/spfileorarac.ora'
重新启动实例,查看spfile:
SQL> show parameter spfile
NAME TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
spfile string
+ASM_DG/orarac/spfileorarac.ora
此时又开始使用ASM中的共享spfile了。
由此可以推断11gR2 RAC环境中实例启动的过程:
11gR2RAC环境中,每一个节点实例启动时,先看pfile($ORACLE_HOME/dbs/init<sid>.ora),默认情况下,该文件指向ASM中共享SPFILE,随后通过ASM中的共享SPFILE启动实例;但是如果pfile
的内容为实际的参数,那么实例将直接从本地的pfile启动。
3、RAC环境中修改参数
使用ALTER SYSTEM SET命令可以改变使用SPFILE的Oracle实例的初始化参数,基本语法为:
alter system set <parameter>=<value>
scope=<memory/spfile/both>
comment=<'comments'>
deferred
sid=<sid,*>
scope=memory 表示仅对当前实例改变这一参数,这些改变会在重新启动时丢失。
scope=spfile 表示只在文件中进行这些修改,修改后的新参数值在实例重新启动后有效。
scope=both 表示改动对当前实例有效,并且实例重新启动后仍然有效。
comment 允许指定与参数变化相关的注释。
deferred 表明所作的修改仅对发出该命令之后生成的会话有效。已经处于活动状态的会话不受影响。
sid 允许指定一些实例名称,这些实例将会受参数变化的影响。如果使用*号,表示对所有实例有效,这也是默认值。如 sid='orarac1'。
4、小结
RAC环境中,参数文件可以为ASM上的共享参数文件,也可以是每个实例本地的参数文件。
参数文件中一些参数是为每个实例分别定义的,一些参数是为所有实例定义的。
实例启动过程是先找init<sid>.ora,在由该文件所指向的ASM中的spfile。
使用alter system修改参数时可能需要增加sid选项,默认为sid=*。
测试环境如下:
版本 11.2.0.1
节点一实例名 orarac1
节点二实例名 orarac2