oracle数据库的配置文件指的是系统在启动到“nomount”阶段须要加载的文件,也叫作pfile或者spfile,可是其实pfile和spfile是不一样的文件。
不一样的数据库配置文件是不一样的,可是格式大致是近似的,默认地址是oracle安装目录下database 文件夹,例如:“c:\app\Administrator\product\11.2.0\dbhome_1\database”。
前面提到,配置文件分两种,一种叫pfile,一种叫spfile,区别在于spfile是二进制文件,给机器看的,pfile是文本文件,给用户看的,可是oracle启动的时候只会加载其中一个文件,固然最好是加载二进制的spfile,速度更快。
虽然配置文件分两种,可是文件里的配置,或者说文件想表达的内容是同样的,因此这两个文件是能够相互转换的,以sysdba身份进入sqlplus(如下不作特殊申明,默认表示已经以sysdba身份登陆了):
sqlplus / as sysdba;
1. 首先先看看系统加载的spfile信息
show parameter spfile(或者show parameter pfile,显示的结果是同样的)
name显示的是spfile,value是加载的spfile文件地址,即表示当前加载的是spfile文件。
spfile文件命名规则:” SPFILE” +sid. ora;例如SPFILEORCL.ORA
pfile文件命名规则:” INIT”+ sid. ora;例如INITorcl.ORA
2. pfile和spfile文件的相互转换
可能大多数朋友发现,在存放配置文件的文件夹里,只有spfile,没有pfile,本人电脑上的数据库是刚安装的64位oracle,也是没有,那么想要数据库用文本文件启动,或者想用文本文件查看下配置文件的参数,却又没有这个文件怎么办呢,命令oracle以spfile文件的配置生成一个pfile就能够了,输入如下命令:
create pfile from spfile;
提示文本文件已建立。
再次查看文件夹会发现已存在pfile文件
C:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\INITorcl.ORA
3. 让oracle加载pfile或者spfile
系统默认用二进制文件启动,可是有的朋友喜欢用文本文件启动,方便查看实时的参数。这里说明下,系统没法修改用哪一种参数文件启动(我的猜想是由于参数文件是oracle启动时加载的第一个文件,若是这个文件能够随意配置,会致使没法启动等故障)。可是oracle对参数文件有一个加载顺序,优先查找加载spfile,找不到再去找pfile,因此咱们能够生成了pfile后将spfile文件删除,这样系统就自动加载pfile了 ,这时候再去执行spfile命令,查到的结果就是空(加载的必定是pfile文件 ,若是没有加载任何文件的话,数据库没法启动)
4. spfile加载顺序
这里详细提一下配置文件的加载顺序
1) SPFILE.ORA
2) SPFILE.ORA
3) INIT.ora
4) startup pfile=’’
startup pfile=’’是以指定的pfile文件去启动数据库,按理说这个应该排在第一,可是oracle在加载的时候,即使指定了pfile文件,也依然会去查找有没有符合条件的pfile文件,若是有,就加载,若是都没有,才会去加载指定的pfile文件。
第一个找的是以PFILE开头,接sid的名称,以ora结尾的文件;若是没有,再找SPFILE.ORA这个文件;若是仍是没有再找以INIT开头,接sid名称,以ora结尾的文件;这三个都没有的状况下,再去加载指定的pfile文件;若是指定的文件也没有,那就没法启动数据库了。
若是有前三种文件中任意一个,再指定加载一个pfile,那么oracle也会报错,没法启动。sql
5. 修复配置文件
若是配置文件坏了怎么办,数据库没法启动怎么办?有不少种方法,这里介绍一个最简单的。
若是坏了,丢失了,完全删除了,备份数据也不行了,各类绝望了,能够试试这样,随便找一个pfile(必定要是文本文件,方便修改),将文件里相关地址或者数据文件的信息,根据实际数据库的信息作修改,或者增长相应的文件夹,并把文件里的sid改为实际数据库的sid,例如这些参数:
*.control_files=’C:\app\Administrator\oradata\orcl\control01.ctl’,’C:\app\Administrator\flash_recovery_area\orcl\control02.ctl’
改为本身项目里对应的controller文件,而后启动数据库,若是报错,就根据保存信息删除多余的参数,直到能够启动为止。。。
只要数据库启动了,万事好商量。
执行这条语句:
create pfile from memory;
从内存中生成一个spfile文件,这样下次启动就不须要再指定pfile了。
6. 替换文件的某个参数
假如由于一个spfile文件的某个参数的缘由,数据库不能启动,没有备份,没有pfile,各类蛋疼的没有,怎么办?新建一个ora文件,文件内容以下:
spfile=C:\app\Administrator\product\11.2.0\dbhome_1\database\11SPFILEORCL.ORA
参数名=参数值
startup pfile=’’
这表示用指定的pfile文件启动,这个pfile文件包含了C:\app\Administrator\product\11.2.0\dbhome_1\database\11SPFILEORCL.ORA文件的全部数据,而且还有后面的那些参数,后面的参数会将前面的参数覆盖掉,顺利启动后,生成一个新的spfile便可。数据库