zoukankan      html  css  js  c++  java
  • 01-spfile和pfile的区别,生成,加载和修复

    oracle数据库的配置文件指的是系统在启动到“nomount”阶段需要加载的文件,也叫做pfile或者spfile,但是其实pfile和spfile是不同的文件。 
    不同的数据库配置文件是不同的,但是格式大体是近似的,默认地址是oracle安装目录下database 文件夹,例如:“c:appAdministratorproduct11.2.0dbhome_1database”。 
    前面提到,配置文件分两种,一种叫pfile,一种叫spfile,区别在于spfile是二进制文件,给机器看的,pfile是文本文件,给用户看的,但是oracle启动的时候只会加载其中一个文件,当然最好是加载二进制的spfile,速度更快。 
    虽然配置文件分两种,但是文件里的配置,或者说文件想表达的内容是一样的,所以这两个文件是可以相互转换的,以sysdba身份进入sqlplus(以下不做特殊申明,默认表示已经以sysdba身份登录了): 
    sqlplus / as sysdba; 
    1. 首先先看看系统加载的spfile信息 
    show parameter spfile(或者show parameter pfile,显示的结果是一样的) 
    结果1 
    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:APPADMINISTRATORPRODUCT11.2.0DBHOME_1DATABASEINITorcl.ORA 
    3. 让oracle加载pfile或者spfile 
    系统默认用二进制文件启动,但是有的朋友喜欢用文本文件启动,方便查看实时的参数。这里说明下,系统无法修改用哪种参数文件启动(个人猜测是因为参数文件是oracle启动时加载的第一个文件,如果这个文件可以随意配置,会导致无法启动等故障)。但是oracle对参数文件有一个加载顺序,优先查找加载spfile,找不到再去找pfile,所以我们可以生成了pfile后将spfile文件删除,这样系统就自动加载pfile了 ,这时候再去执行spfile命令,查到的结果就是空(加载的一定是pfile文件 ,如果没有加载任何文件的话,数据库无法启动) 
    结果2 
    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也会报错,无法启动。

    结果3 
    5. 修复配置文件 
    如果配置文件坏了怎么办,数据库无法启动怎么办?有很多种方法,这里介绍一个最简单的。 
    如果坏了,丢失了,彻底删除了,备份数据也不行了,各种绝望了,可以试试这样,随便找一个pfile(一定要是文本文件,方便修改),将文件里相关地址或者数据文件的信息,根据实际数据库的信息做修改,或者增加相应的文件夹,并把文件里的sid改成实际数据库的sid,例如这些参数: 
    *.control_files=’C:appAdministratororadataorclcontrol01.ctl’,’C:appAdministratorflash_recovery_areaorclcontrol02.ctl’ 
    改成自己项目里对应的controller文件,然后启动数据库,如果报错,就根据保存信息删除多余的参数,直到可以启动为止。。。 
    只要数据库启动了,万事好商量。 
    执行这条语句: 
    create pfile from memory; 
    从内存中生成一个spfile文件,这样下次启动就不需要再指定pfile了。 
    6. 替换文件的某个参数 
    假如因为一个spfile文件的某个参数的原因,数据库不能启动,没有备份,没有pfile,各种蛋疼的没有,怎么办?新建一个ora文件,文件内容如下: 
    spfile=C:appAdministratorproduct11.2.0dbhome_1database11SPFILEORCL.ORA 
    参数名=参数值 
    startup pfile=’’ 
    这表示用指定的pfile文件启动,这个pfile文件包含了C:appAdministratorproduct11.2.0dbhome_1database11SPFILEORCL.ORA文件的所有数据,并且还有后面的那些参数,后面的参数会将前面的参数覆盖掉,顺利启动后,生成一个新的spfile即可。

    摘自: http://my.oschina.net/tiandaochouqincai/blog https://blog.csdn.net/feiepuhuo001/article/details/51143478
  • 相关阅读:
    寒假Day31:CSU1508地图的四着色bfs+dfs
    寒假Day32:链式前向星
    寒假Day30:HDU4507吉哥系列故事恨7不成妻数位dp
    寒假Day35:HTML表格+图像+超链接
    寒假Day35:2018蓝桥杯 B组
    寒假Day33:HTML入门
    寒假Day30:二叉树的遍历相关题型(求先序或后序、搜索树的判断)
    POJ 1177 Picture (线段树+离散化+扫描线) 详解
    MFC对话框中文出现乱码的解决方法
    如何枚举系统COM串口
  • 原文地址:https://www.cnblogs.com/lei2017/p/9135525.html
Copyright © 2011-2022 走看看