注意:!!!!
因为:
在rac环境中,尽量不要用:create pfile from spfile
在RAC环境,SPFILE默认情况下会存放在共享存储上(裸设备或ASM磁盘组上)
RAC的每个节点都是使用PFILE指向SPFILE的方法来完成SPFILE的定位的。
即pfile文件中存放的是spfile的路径。
pfile:init实例名1.ora
cat init实例名1.ora内容:
spfile=+DATA/xxx/spfile实例名.ora
所以:
使用create pfile from spfile后,
新的pfile文件生成,替换掉旧的pfile
然后新的pfile文件内容就变成参数文件,而不是单纯的记录一条路径了。
此后数据库实例启动时读取的将不再是共享存储上的SPFILE,转而读取本地的PFILE文件的内容
解决办法:
修改pfile文件,重新指向spfile的路径即可,spfile=+DATA/xxx/spfile实例名.ora
#———————————————————————————
1、如何判断数据库使用的是:pfile还是spfile文件。
show parameter pfile;
#oracle实例使用的是pfile文件则查询不到任何的结果,如果使用的是spfile文件,则显示的都是spfile文件的路径;
#———————————————————————————
2、pfile和spfile可以互相创建
create spfile from pfile
create pfile from spfile(约等于将spfile文件备份)
#当然在spfile和pfile的后面可以跟具体的路径
create pfile='' from spfile
create pfile='/xxx.ora' from spfile='+DATA/xxx/spfile实例名.ora';
#———————————————————————————
3、简介
Oracle中的参数文件是一个包含一系列参数以及参数对应值的操作系统文件。它们是在数据库实例启动时候加载的,
决定了数据库的物理结构、内存、数据库的限制及系统大量的默认值、数据库的各种物理属性、指定数据库控制文件名
和路径等信息,是进行数据库设计和性能调优的重要文件。可以分为两种类型:
(1)pfile:
初始化参数文件,Oracle9i之前,ORACLE一直采用pfile方式存储初始化参数,
pfile默认的名称为"init+例程名.ora"
文件路径为"/db/11.2.0.4/dbs/",
这是一个文本文件,可以用任何文本编辑工具打开;
(2)spfile:
服务器参数文件,从Oracle9i开始,Oracle引入了Spfile文件,
spfile默认的名称为"spfile+例程名.ora",
文件路径为"/db/11.2.0.4/dbs/",(可以先在库里show,gkl为:"+data/gkl")
!!!!以二进制文本形式存在,不能用vi编辑器对其中参数进行修改,
!!!!只能通过SQL命令在线修改
#———————————————————————————
3、spfile好处:
spfile改正了pfile管理混乱的问题,
在多节点的环境里,pfile会有多个image,启动时候需要跟踪最新的image。这是个烦琐的过程。
用spfile以后,所有参数改变都写到spfile里面(只要定义scope=spfile或both),参数配置有个权威的来源;
9i以前一般都是要备份pfile后再来做参数的修改,而且pfile的修改必须重启实例才能生效。非常的不方便;
在9i以后的spfile就可以同通过命令修改指定的参数了,而且有很多参数都不用重启数据库,能够在线生效,
这个在线生效的参数会随着数据库的版本增高而增加。
如果参数修改有问题数据库起不来了可以在 nomount状态下创建成pfile再修改回来即可
#———————————————————————————
4、启动优先级
startup 启动次序 spfile优先于pfile。
查找文件的顺序是
spfileSID.ora-〉spfile.ora-〉initSID.ora-〉init.ora(spfile优先于pfile)。
如果在数据库的$ORACLE_HOME/dbs/目录下既有spfile又有pfile,
使用spfile启动数据库,不需要指定参数文件路径(因为数据库会优先选择spfile启动),
如果参数文件不在$ORACLE_HOME/dbs/目录下,
无论是通过spfile或pfile启动均需要指定完整路径
#———————————————————————————
5、spfile参数的三种scope:
(1)scope=spfile:
对参数的修改记录在服务器初始化参数文件中,
修改后的参数在下次启动DB时生效,
适用于动态和静态初始化参数;
(2)scope=memory:
对参数的修改记录在內存中,
对于动态初始化参数的修改立即生效,
在重启DB后会丟失,会复原为修改前的参数值;
(3)scope=both:
对参数的修改会同时记录在服务器参数文件和內存中,
对于动态参数立即生效,
对静态参数不能用这个选项,如果使用了服务器参数文件,
则在执行alter system语句时,scope=both是default的选项
(4)如果沒有使用服务器参数文件,
而在执行alter system语句时指定scope=spfile|both都会出错
总结:修改时
参数类型spfilememoryboth
静态参数可以,重启生效不可以不可以
动态参数可以,重启生效可以,立即生效,重启后失效可以立即生效,重启后失效
(5)
从另一个维度分类参数:(没见过)
有statics和dynamic两种,dynamic设置后立即生效,static重启实例后生效。
dynamic参数scope可选3种,static参数scope只能选spfile。
#———————————————————————————
6、修改参数报错后回退方案,举例:(修改连接数报错后改回)
动态修改参数
alter system set parameter=Value scope=spfile|both|memory
①
SQL> show parameter processes;
#查询当前数据库实例允许的最大连接数;
②
SQL> show parameter spfile;
#判断当前所用的是spfile还是pfile文件;
③
SQL> create pfile from spfile;
#将当前的spfile文件备份;(可以指定路径)
④
SQL> alter system set processes=3000 scope=spfile;
#修改当前数据库实例的(spfile文件)最大连接数;
⑤
SQL> shutdown immediate;
#关闭当前数据库实例;
SQL> startup;
#由于修改数据库允许被连接的最大数太大,导致当前数据库实例无法启动;
⑥
SQL> startup pfile=/application/oracle/product/11.2.0/db_1/dbs/initorcl.ora;
#指定以pfile文件启动;
⑦
SQL> create spfile from pfile;
#将备份的spfile进行还原;
⑧
SQL> shutdown immediate;
#关闭数据库实例
SQL> startup;
#启动数据库实例;
⑨
SQL> alter system set processes=3000 scope=spfile;
#重新指定spfile的processes参数;
SQL> shutdown immediate;
#关闭数据库实例;
SQL> startup
#启动数据库
#———————————————————————————
7、备份:
RMAN不能备份pfile,可备份spfile。
(1)spfile、pfile相互备份:
create spfile from pfile
create pfile from spfile(约等于将spfile文件备份)
#当然在spfile和pfile的后面可以跟具体的路径
create pfile='' from spfile
(2)内存中读取
create pfile = '/xxxxx/initorcl.ora' from memory;
or
create spfile = '/xxxxx/initorcl.ora' from memory;
查看:
SQL> host ls -l /home/oracle/initorcl.ora
如果spfile有老旧文件,则必须指定新的xxx.ora名字,然后mv xxx.ora spfile实例名.ora
关闭、启动:
SQL> shut immediate
SQL> startup pfile = '/home/oracle/initorcl.ora'
(3)待用
#———————————————————————————
8、报错时判断启动方式:
(1)如果看到数据库启动时报以下错误,则可以知道是spfile启动的
SQL> startup
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
ORA-00132: syntax error or unresolved network name 'LISTENERS_FSYYK1'
(2)如果看到数据库启动时报以下错误,则可以知道是pfile启动的,
!!!即多了ORA-01078错误
SQL> startup
ORA-01078: failure in processing system parameters
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
ORA-00132: syntax error or unresolved network name 'LISTENERS_FSYYK1'
#———————————————————————————