zoukankan      html  css  js  c++  java
  • 如何生成SPFILE文件

    1.spfile是Oracle9i之后引入的,目的是提高系统安全性。在Oracle8i下初始化参数文件为文本文件,可以使用文本编辑器进行编辑,当需要修改初始化参数时,需要在init.ora文件中修改,再重新启动数据库实例。在Oracle10g,引入了服务器参数文件(spfile),可以简化初始化参数的管理。spfile文件时一个二进制文件,不能使用文本编辑器(虽然文本编辑器打开后,能够看到参数内容),否则可能造成Oracle无法识别spfile文件。
      以下以我自己系统安装的Oracle与大叫讨论这二者的用法:
      D盘是Oracle10G的主安装目录,分别在1D:oracleproduct10.2.0adminorclpfileinit.ora.3142010101424、2D:oracleproduct10.2.0db_1databaseinitorcl.ora、3D:oracleproduct10.2.0db_1dbsSPFILEORCL.ORA3个位置可以找到pfile、spfile的位置和spfile,其中1就是那个文本文件pfile,2指的是3的位置(路径),3就是哪个二进制文件spfile,如果spfile被损坏了,那么重新启动数据库就会报找不到spfile的错误,这事需要通过pfile创建spfile:
     create spfile from pfile='D:oracleproduct10.2.0adminorclpfileinit.ora.3142010101424';
      并且重新启动数据库时用startup pfile='D:oracleproduct10.2.0adminorclpfileinit.ora.3142010101424'。
      如果2被修改了路径,那么3的位置要做相应的调整,不然数据库重启启动会暴同样的错误。
      如果1被损坏或删除,数据库可以照常启动,但为了保险,我们还是重新创建一个新的pfile:
      create pfile='
    D:oracleproduct10.2.0adminorclpfileinit.ora.3142010101424' from spfile;
      2.查看系统是以pfile还是spfile 启动:
      Select isspecified,count(*) from v$spparameter group by isspecified;
     如果 isspecified里有true,表明用spfile进行了指定配置
     如果全为false,则表明用pfile启动
      3.使用SPfile的好处:
     Spfile 改正了pfile管理混乱的问题,在多结点的环境里,pfile会有多个image
        启动时候需要跟踪最新的image。这是个烦琐的过程。
     用spfile以后,所有参数改变都写到spfile里面(只要定义 scope=spfile或both),参数配置有个权威的来源。

    4.从spfile获取pfile
     Create pfile='d:pfileSID.ora' from spfile;
     Create pfile='d:pfileSID.ora' from spfile='spfile_location';

    5.从pfile获取spfile
     Create spfile from pfile='Your_pfile_location'
     Create spfile='spfile_location' from pfile='Your_pfile_location'
     
    6.动态修改参数
     alter system set parameter=Value scope=spfile|both|memory
     
    7.Startup nomount的时候需要读去spfile或pfile,两者共存,spfile优先

    8.试验心得:

     环境:window2003  Oracle10g

     问题描述:一个数据库实例,包含二个数据库(test,orcl),因为设置错误的参数造成orcl数据库spfile文件损坏。通过create spfile生成文件后,一次一只能启动一个数据库。

    解决过程:

    C:Documents and Settingshsx>set oracle_sid=orcl

    C:Documents and Settingshsx>sqlplus/nolog

    SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 5月 15 17:37:34 2010

    Copyright (c) 1982, 2005, Oracle.  All rights reserved.

    SQL> conn sys/sys as sysdba
    已连接到空闲例程。
    SQL> create spfile from pfile='D:oracleproduct10.2.0adminorclpfileinit.or
    a.3142010101424';

    文件已创建。

    SQL> startup pfile='D:oracleproduct10.2.0adminorclpfileinit.ora.314201010
    1424'
    ORACLE 例程已经启动。

    Total System Global Area  612368384 bytes
    Fixed Size                  1250428 bytes
    Variable Size             167775108 bytes
    Database Buffers          436207616 bytes
    Redo Buffers                7135232 bytes
    数据库装载完毕。
    数据库已经打开。
    SQL> shutdown immediate
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL> startup
    ORACLE 例程已经启动。

    Total System Global Area  612368384 bytes
    Fixed Size                  1250428 bytes
    Variable Size             184552324 bytes
    Database Buffers          419430400 bytes
    Redo Buffers                7135232 bytes
    数据库装载完毕。
    数据库已经打开。
    SQL> Select isspecified,count(*) from v$spparameter group by isspecified;

    ISSPEC   COUNT(*)
    ------ ----------
    TRUE           23
    FALSE         236


    备注:假如有多个数据库的话,可以通过设置set oracle_sid, 然后pfile单独启动

     
    场景:当你因为修改系统参数的原因,造成数据库没有办法正常启动,可以利用一下方式,通过重建spfile,快速解决该故障。
    1.SQL>conn /as sysdba
       连接到空闲例程
    2.SQL> create spfile from pfile='D:oracleproduct10.2.0adminorclpfileinit.or
    a.052011184726';
      重建spfile
    3.SQL>shutdown abort
      关闭数据库
    4.SQL>startup
     重启数据库
    至此问题解决。
    文章可以转载,必须以链接形式标明出处。
  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 校门外的树
    Java实现 蓝桥杯VIP 算法训练 统计单词个数
    Java实现 蓝桥杯VIP 算法训练 统计单词个数
    Java实现 蓝桥杯VIP 算法训练 开心的金明
    Java实现 蓝桥杯VIP 算法训练 开心的金明
    Java实现 蓝桥杯 算法训练 纪念品分组
    Java实现 蓝桥杯 算法训练 纪念品分组
    Java实现 蓝桥杯VIP 算法训练 校门外的树
    Java实现 蓝桥杯VIP 算法训练 统计单词个数
    Java实现 蓝桥杯VIP 算法训练 开心的金明
  • 原文地址:https://www.cnblogs.com/andy6/p/5698895.html
Copyright © 2011-2022 走看看