这里应该就可以解释我第一次重置log_archive_dest_2时为什么可以成功,而第二次没有成功的原因:我第一次删除了*.log_archive_dest_2='xxxx'这一条目,第一次再次删除时文件中没有了,所以报错。
这也能解释为什么重置时加上sid='orcl1'项后重启依然生效。
还有一个问题就是如果参数文件中,对于同一个参数同时有'*.'开头的和以'<sid>.'开头的参数设置时,Oracle会选哪个做为实例的参数设置的,我们来看一句官方文档中对SID的描述,就可以回答这个问题了:
SID The SID clause lets you specify the SID of the instance where the value will take effect.
Specify SID = '*' if you want Oracle Database to change the value of the parameter for all instances that do not already have an explicit setting for this parameter.
Specify SID = 'sid' if you want Oracle Database to change the value of the parameter only for the instance sid. This setting takes precedence over previous and subsequent ALTER SYSTEM SET statements that specify SID = '*'.
If you do not specify this clause, then:
If the instance was started up with a pfile (traditional plain-text initialization parameter file), then Oracle Database assumes the SID of the current instance.
If the instance was started up with an spfile (server parameter file), then Oracle Database assumes SID = '*'.
小提示:可以使用show spparameter <parameter_name>查看spfile中对于参数的设置
sys@ORA11G>show spparameter log_archive_dest_1
SID NAME TYPE VALUE
-------- ----------------------------- ----------- ----------------------------
ora11g log_archive_dest_1 string location=/home/oracle/dump
* log_archive_dest_1 string location=/u01/