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

      1.spfile是Oracle9i之后引入的,目的是提高系统安全性。在Oracle8i下初始化参数文件为文本文件,可以使用文本编辑器进行编辑,当需要修改初始化参数时,需要在init.ora文件中修改,再重新启动数据库实例。在Oracle10g,引入了服务器参数文件(spfile),可以简化初始化参数的管理。spfile文件时一个二进制文件,不能使用文本编辑器(虽然文本编辑器打开后,能够看到参数内容),否则可能造成Oracle无法识别spfile文件。
      以下以我自己系统安装的Oracle与大叫讨论这二者的用法:
      D盘是Oracle10G的主安装目录,分别在1D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.31420101014242D:\oracle\product\10.2.0\db_1\database\initorcl.ora3D:\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ORA3个位置可以找到pfile、spfile的位置和spfile,其中1就是那个文本文件pfile,2指的是3的位置(路径),3就是哪个二进制文件spfile,如果spfile被损坏了,那么重新启动数据库就会报找不到spfile的错误,这事需要通过pfile创建spfile:
     create spfile from pfile='D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.3142010101424';
      并且重新启动数据库时用startup pfile='D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.3142010101424'。
      如果2被修改了路径,那么3的位置要做相应的调整,不然数据库重启启动会暴同样的错误。
      如果1被损坏或删除,数据库可以照常启动,但为了保险,我们还是重新创建一个新的pfile:
      create pfile='
    D:\oracle\product\10.2.0\admin\orcl\pfile\init.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 Settings\hsx>set oracle_sid=orcl

    C:\Documents and Settings\hsx>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:\oracle\product\10.2.0\admin\orcl\pfile\init.or
    a.3142010101424';

    文件已创建。

    SQL> startup pfile='D:\oracle\product\10.2.0\admin\orcl\pfile\init.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:\oracle\product\10.2.0\admin\orcl\pfile\init.or
    a.052011184726';
      重建spfile
    3.SQL>shutdown abort
      关闭数据库
    4.SQL>startup
     重启数据库
    至此问题解决。
  • 相关阅读:
    地理学考 要结合地图记忆的知识点
    物理选修3-1学习笔记
    UOJ#506. 【JOISC2020】遗迹 动态规划
    UOJ#39. 【清华集训2014】简单回路 动态规划 插头DP
    UOJ#339. 【清华集训2017】小 Y 和二叉树 贪心
    Codeforces 1239E. Turtle 折半
    概率论学习笔记
    UOJ#469. 【ZJOI2019】开关 生成函数
    被鄙视
    UOJ#468. 【ZJOI2019】Minimax搜索 动态DP
  • 原文地址:https://www.cnblogs.com/HondaHsu/p/3096194.html
Copyright © 2011-2022 走看看