ITPub博客

首页 > 数据库 > Oracle > Oracle RAC 环境下参数文件(spfile)管理

Oracle RAC 环境下参数文件(spfile)管理

原创 Oracle 作者:Rman2017 时间:2017-05-19 12:30:48 0 删除 编辑
RAC环境下,初始化参数文件与但实例下参数文件有些异同,主要表现在初始化参数可以为多个实例公用,也可以单独设置各个实例的初始化参数。对于那些非共用的初始化参数则必须要单独设置,而共用的则可以单独设置,但一般不建议这么用。本文描述RAC 环境下参数文件(spfile)的相关管理工作。
        有关RAC环境下的重要参数描述,请参考:RAC 环境下重要参数
1. 1、参数文件的位置  
2.  
3.  SQL> show parameter instance_name  
4.    
5.  NAME                                 TYPE        VALUE  
6.  ------------------------------------ ----------- ------------------------------  
7.  instance_name                        string      ora10g1  
8.  SQL> show parameter spfile;  
9.    
10.  NAME                                 TYPE        VALUE  
11.  ------------------------------------ ----------- ------------------------------  
12.  spfile                               string      +DG1/ora10g/spfileora10g.ora  
13.    
14.  SQL> show parameter instance_name  
15.    
16.  NAME                                 TYPE        VALUE  
17.  ------------------------------------ ----------- ------------------------------  
18.  instance_name                        string      ora10g2  
19.  SQL> show parameter spfile   
20.    
21.  NAME                                 TYPE        VALUE  
22.  ------------------------------------ ----------- ------------------------------  
23.  spfile                               string      +DG1/ora10g/spfileora10g.ora  
24.    
25.  SQL> show parameter cluster  
26.    
27.  NAME                                 TYPE        VALUE  
28.  ------------------------------------ ----------- ------------------------------  
29.  cluster_database                     boolean     TRUE  
30.  cluster_database_instances           integer     2  
31.    
32.    
33.  oracle@bo2dbp:~> cd /u01/oracle/admin/ora10g  
34.  oracle@bo2dbp:/u01/oracle/admin/ora10g> ls  
35.  adump  bdump  cdump  dpdump  hdump  pfile  udump  
36.  oracle@bo2dbp:/u01/oracle/admin/ora10g> cd pfile  
37.  oracle@bo2dbp:/u01/oracle/admin/ora10g/pfile> ls -hltr  
38.  total 4.0K  
39.  -rw-r----- 1 oracle oinstall 2.7K 2012-09-27 12:12 init.ora.8272012121245  
40.  oracle@bo2dbp:/u01/oracle/admin/ora10g/pfile> cd $ORACLE_HOME/dbs  
41.  oracle@bo2dbp:/u01/oracle/db/dbs> ls *.ora  
42.  init+ASM1.ora  initdw.ora  initGOBO1A_tmp.ora  initGOBO4A.ora  init.ora  initora10g1.ora  
43.  oracle@bo2dbp:/u01/oracle/db/dbs> more initora10g1.ora  
44.  SPFILE='+DG1/ora10g/spfileora10g.ora'  
45.  oracle@bo2dbs:/u01/oracle/db/dbs> more initora10g2.ora  
46.  SPFILE='+DG1/ora10g/spfileora10g.ora'  
47.    
48.  #由上面的查询可知RAC环境下的参数文件通常都存放在RAW或者ASM中,缺省路径为$ORACLE_HOME/dbs/init{ORACLE_SID}.ora  
49.  #各个实例只是存放pfile文件,pfile文件的内容是指向spfile文件的位置,即告诉,兄弟,你去xx去找那个spfile吧,哈哈,,,  
50.  #注,Oracle数据库启动时会先找spfile${ORACLE_SID.ora},如果对应的spfile不存在则找spfile.ora  
51.  #如果spfile.ora找不到,则找相应的pfile(init{ORACLE_SID}.ora)  
52.  #那,要是都找不到呢,那就是用缺省的init.ora尝试启动实例  
53.  
54. 2、参数文件的备份  
55.  参数文件备份的方式有很多种,一般情况下当启用了RMAN自动备份控制文件时,会自动备份参数文件。  
56.  其次是手工备份参数文件,这种方式通常是将spfile内容转换为pfile,说简单点,转为文本文件保存,文件名任意。  
57.  建议在修改参数文件之前先手工备份参数文件,使用命令: create pfile=['<dir>'] from spfile;  
58.  注,单实例情形下,如果使用spfile文件启动实例,可以通过上面的方式直接备份,RAC环境下这么干,那就把pfile文件给覆盖了  
59.  因此,RAC环境下建议为pfile文件指定不同的文件名。如当前为initora10g1.ora,则可以指定为initora10g1.ora.bak  
60.  SQL> create pfile='/u01/oracle/db/dbs/initora10g1.ora.bak' from spfile;  
61.  
62.  File created.  
63.  
64.  SQL> ho ls /u01/oracle/db/dbs/*ora10g*  
65.  /u01/oracle/db/dbs/hc_ora10g1.dat   /u01/oracle/db/dbs/initora10g1.ora.bak  
66.  /u01/oracle/db/dbs/initora10g1.ora  /u01/oracle/db/dbs/orapwora10g1  
67.    
68.  SQL> ho more /u01/oracle/db/dbs/initora10g1.ora.bak  
69.  ora10g2.__db_cache_size=142606336  
70.  ora10g1.__db_cache_size=163577856  
71.  ora10g1.__java_pool_size=4194304  
72.  ora10g2.__java_pool_size=4194304  
73.  ora10g1.__large_pool_size=4194304  
74.  ora10g2.__large_pool_size=4194304  
75.  ora10g2.__shared_pool_size=180355072  
76.  ora10g1.__shared_pool_size=159383552  
77.  ora10g1.__streams_pool_size=0  
78.  ora10g2.__streams_pool_size=0  
79.  *.audit_file_dest='/u01/oracle/admin/ora10g/adump'  
80.  *.background_dump_dest='/u01/oracle/admin/ora10g/bdump'  
81.  *.cluster_database_instances=2  
82.  *.cluster_database=true  
83.  *.compatible='10.2.0.3.0'  
84.  *.control_files='+DG2/ora10g/controlfile/current.286.795096347',  
85.    '+REV/ora10g/controlfile/current.295.795096347'  
86.  *.core_dump_dest='/u01/oracle/admin/ora10g/cdump'  
87.  *.db_block_size=8192  
88.  *.db_create_file_dest='+DG2'  
89.  *.db_domain=''  
90.  *.db_file_multiblock_read_count=16  
91.  *.db_name='ora10g'  
92.  *.db_recovery_file_dest='+REV'  
93.  *.db_recovery_file_dest_size=2147483648  
94.  *.dispatchers='(PROTOCOL=TCP) (SERVICE=ora10gXDB)'  
95.  ora10g2.instance_number=2  
96.  ora10g1.instance_number=1  
97.  *.job_queue_processes=10  
98.  ora10g1.local_listener='local_lsnr_ora10g1'  
99.  ora10g2.local_listener='local_lsnr_ora10g2'  
100.  *.open_cursors=300  
101.  *.pga_aggregate_target=112197632  
102.  *.processes=150  
103.  *.remote_listener='REMOTE_LSNR_ORA10G'  
104.  *.remote_login_passwordfile='exclusive'  
105.  *.sga_target=337641472  
106.  ora10g2.thread=2  
107.  ora10g1.thread=1  
108.  *.undo_management='AUTO'  
109.  ora10g2.undo_tablespace='UNDOTBS2'  
110.  ora10g1.undo_tablespace='UNDOTBS1'  
111.  *.user_dump_dest='/u01/oracle/admin/ora10g/udump'  
112.    
113.  对于上面的参数文件里列出的信息,如果参数前面带有星号,则表明当前的参数为共用参数,前面有实例名的则为实例参数  
114.    
115. 3、参数文件的修改  
116.  参数文件中参数修改方式如下:  
117.  alter system|session set parametername = values scope = memory | spfile |both sid = 'sid' | ‘*’;  
118.  
119.    scope   
120.       memory : 只对当前有效,下次启动则失效  
121.       spfile : 只对spfile 修改,必须经过下一次启动才生效,当前的实例没有修改  
122.       both :内存与参数文件都将修改,当不指定scope时,缺省为both.  
123.  system | session  
124.       system : system级别有效,影响整个系统及所有使用者  
125.    session : 仅当前session有效,一旦退出之后将实效  
126.  'sid' | ‘*’    
127.    这个在RAC环境下使用的较为频繁,指定sid_name则当前指定的实例生效,如果指定 '*',则所有实例生效  
128.    注,缺省情况下为sid='*',因此修改是不要忘了,如果没有指定sid,则RAC上的所有实例都会被修改  
129.  
130.  下面是修改示例      
131.  SQL> show parameter instance_name  
132.    
133.  NAME                                 TYPE        VALUE  
134.  ------------------------------------ ----------- -------------------  
135.  instance_name                        string      ora10g1  
136.    
137.  SQL> show parameter pga  
138.    
139.  NAME                                 TYPE        VALUE  
140.  ------------------------------------ ----------- -------------------  
141.  pga_aggregate_target                 big integer 107M  
142.    
143.  SQL> alter system set pga_aggregate_target=100m scope=both sid='ora10g1';  -->将ora10g1的pga改为100m  
144.    
145.  System altered.  
146.    
147.  SQL> alter system set pga_aggregate_target=90m sid='ora10g2';   -->将ora10g2的pga改为90m  
148.    
149.  System altered.  
150.    
151.  SQL> show parameter pga      -->当前的pga已经被改为100m  
152.    
153.  NAME                                 TYPE        VALUE  
154.  ------------------------------------ ----------- ------------------------------  
155.  pga_aggregate_target                 big integer 100M  
156.    
157.  SQL> conn system/oracle@ora10g2  -->连接到实例 ora10g2  
158.  Connected.  
159.  SQL> show parameter instance_name  
160.    
161.  NAME                                 TYPE        VALUE  
162.  ------------------------------------ ----------- ------------------------------  
163.  instance_name                        string      ora10g2  
164.  SQL> show parameter pga     -->此时pga的值显示为90m  
165.    
166.  NAME                                 TYPE        VALUE  
167.  ------------------------------------ ----------- ------------------------------  
168.  pga_aggregate_target                 big integer 90M  
169.    
170.  SQL> create pfile='/u01/oracle/db/dbs/initora10g1.ora.emp' from spfile;  
171.  create pfile='/u01/oracle/db/dbs/initora10g1.ora.emp' from spfile  
172.  *  
173.  ERROR at line 1:  
174.  ORA-01031: insufficient privileges    -->缺乏权限,因为当前连接的是instance ora10g2  
175.    
176.  SQL> conn system/oracle@ora10g1  
177.  Connected.  
178.    
179.  SQL> create pfile='/u01/oracle/db/dbs/initora10g1.ora.tmp' from spfile;                        
180.    
181.  File created.  
182.    
183.  SQL> ho cat /u01/oracle/db/dbs/initora10g1.ora.tmp |grep pga    
184.  *.pga_aggregate_target=112197632         #新的pfile文件中同时存在pga的值  
185.  ora10g1.pga_aggregate_target=104857600   #有两个指定了实例名,此时谁生效呢?我们前面已经查询出了结果  
186.  ora10g2.pga_aggregate_target=94371840    #同一参数,有实例名的值将优先有带*的参数值  
187.    
188.  SQL> alter system reset pga_aggregate_target sid='ora10g1';-->使用reset方式重置pga,或恢复缺省值  
189.                                                 -->如果需要保留两个新改的参数,建议reset之前的共用参数以避免混淆   
190.  System altered.                                -->在reset原来的参数时,不指定sid或sid='*'     
191.  SQL> show parameter pga  
192.    
193.  NAME                                 TYPE        VALUE  
194.  ------------------------------------ ----------- ------------------------------  
195.  pga_aggregate_target                 big integer 100M  
196.    
197.  SQL> conn system/oracle@ora10g2  
198.  Connected.  
199.  SQL> alter system reset pga_aggregate_target sid='ora10g2';  
200.    
201.  System altered.  
202.    
203.  #Author : Robinson  
204.  #Blog   : http://blog.csdn.net/robinson_0612  
205.    
206.  SQL> show parameter pga  
207.    
208.  NAME                                 TYPE        VALUE  
209.  ------------------------------------ ----------- ------------------------------  
210.  pga_aggregate_target                 big integer 90M  
211.  
212.  oracle@bo2dbp:~> srvctl stop instance -d ora10g -i ora10g1  
213.  oracle@bo2dbp:~> srvctl start instance -d ora10g -i ora10g1    
214.  SQL> show parameter instance_name  
215.    
216.  NAME                                 TYPE        VALUE  
217.  ------------------------------------ ----------- -------------------  
218.  instance_name                        string      ora10g1  
219.    
220.  SQL> show parameter pga  
221.    
222.  NAME                                 TYPE        VALUE  
223.  ------------------------------------ ----------- -------------------  
224.  pga_aggregate_target                 big integer 107M  
225.  
226. 4、spfile文件位置的修改   
227.  SQL> show parameter spfile;  
228.    
229.  NAME                                 TYPE        VALUE  
230.  ------------------------------------ ----------- ------------------------------  
231.  spfile                               string      +DG1/ora10g/spfileora10g.ora  
232.     
233.  SQL> create spfile='+REV/ORA10G/spfileora10g.ora'  
234.    2  from pfile='/u01/oracle/db/dbs/initora10g1.ora.bak';  
235.    
236.  File created.  
237.    
238.  SQL> ho echo "spfile='+REV/ORA10G/spfileora10g.ora'" >/u01/oracle/db/dbs/initora10g1.ora  
239.    
240.  SQL> ho more /u01/oracle/db/dbs/initora10g1.ora  
241.  spfile='+REV/ORA10G/spfileora10g.ora'  
242.    
243.  SQL> startup force;  
244.  SQL> show parameter spfile;  
245.    
246.  NAME                                 TYPE        VALUE  
247.  ------------------------------------ ----------- ------------------------------  
248.  spfile                               string      +REV/ora10g/spfileora10g.ora  
249.  SQL> shutdown immediate;  
250.  SQL> exit  
251.  oracle@bo2dbp:~> ssh bo2dbs  
252.  Last login: Fri Sep 28 15:42:59 2012 from 192.168.1.108  
253.  oracle@bo2dbs:~> echo "spfile='+REV/ORA10G/spfileora10g.ora'" >/u01/oracle/db/dbs/initora10g2.ora  
254.  oracle@bo2dbs:~> srvctl stop database -d ora10g  
255.  oracle@bo2dbs:~> srvctl start database -d ora10g  
256.  oracle@bo2dbs:~> export ORACLE_SID=ora10g2  
257.  oracle@bo2dbs:~> sqlplus / as sysdba  
258.  SQL> show parameter pfile;   -->查看时还是使用之前的spfile文件  
259.    
260.  NAME                                 TYPE        VALUE  
261.  ------------------------------------ ----------- ------------------------------  
262.  spfile                               string      +DG1/ora10g/spfileora10g.ora  
263.    
264.  oracle@bo2dbs:~> srvctl config database -d ora10g -a  
265.  bo2dbp ora10g1 /u01/oracle/db  
266.  bo2dbs ora10g2 /u01/oracle/db  
267.  DB_NAME: ora10g  
268.  ORACLE_HOME: /u01/oracle/db  
269.  SPFILE: +DG1/ora10g/spfileora10g.ora  
270.  DOMAIN: null  
271.  DB_ROLE: null  
272.  START_OPTIONS: null  
273.  POLICY:  AUTOMATIC  
274.  ENABLE FLAG: DB ENABLED  
275.  #下面将参数文件路径更新到ocr,此时数据库并未shutdown,生产环境建议先停止数据库然后再修改  
276.  oracle@bo2dbs:~> srvctl modify database -d ora10g -p '+REV/ORA10G/spfileora10g.ora'   
277.  oracle@bo2dbs:~> srvctl stop database -d ora10g  
278.  oracle@bo2dbs:~> srvctl config database -d ora10g -a  
279.  bo2dbp ora10g1 /u01/oracle/db  
280.  bo2dbs ora10g2 /u01/oracle/db  
281.  DB_NAME: ora10g  
282.  ORACLE_HOME: /u01/oracle/db  
283.  SPFILE: +REV/ORA10G/spfileora10g.ora  
284.  DOMAIN: null  
285.  DB_ROLE: null  
286.  START_OPTIONS: null  
287.  POLICY:  AUTOMATIC  
288.  ENABLE FLAG: DB ENABLED  
289.  oracle@bo2dbs:~> srvctl start database -d ora10g  
290.  oracle@bo2dbs:~> sqlplus / as sysdba  
291.  SQL> show parameter spfile;  
292.    
293.  NAME                                 TYPE        VALUE  
294.  ------------------------------------ ----------- ------------------------------  
295.  spfile                               string      +REV/ora10g/spfileora10g.ora  
296.  
297.  #使用srvctl start启动时,不会依赖类似于单实例环境或rac环境下的sqlplus启动数据库时按顺序寻找spfile文件,  
298.  #而是直接根据ocr中spfile文件位置启动数据库。  


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31448824/viewspace-2139500/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2017-03-30

  • 博文量
    352
  • 访问量
    132792