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.3142010101424、2D:\oracle\product\10.2.0\db_1\database\initorcl.ora、3D:\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
 重启数据库
至此问题解决。

如何生成SPFILE文件的更多相关文章

  1. Oracle pfile与spfile文件参数(转载)

    一.pfile与spfile Oracle中的参数文件是一个包含一系列参数以及参数对应值的操作系统文件.它们是在数据库实例启动时候加载的,决定了数据库的物理 结构.内存.数据库的限制及系统大量的默认值 ...

  2. Android 解析XML文件和生成XML文件

    解析XML文件 public static void initXML(Context context) { //can't create in /data/media/0 because permis ...

  3. SQL*Plus生成html文件

    最近使用SQL*Plus命令生成html文件,遇到一些有意思的知识点,顺便记录一下,方便以后需要的时候而这些知识点又忘记而捉急.好记性不如烂笔头吗! 为什么要用SQL*Plus生成html文件?   ...

  4. vim保存文件时,生成.un~文件

    在用vim保存文件时,文件夹下生成.un~文件 怎么删除这些文件呢 在网上搜索的答案: http://stackoverflow.com/questions/15660669/what-is-a-un ...

  5. WPF根据Oracle数据库的表,生成CS文件小工具

    开发小工具的原因: 1.我们公司的开发是客户端用C#,服务端用Java,前后台在通讯交互的时候,会用到Oracle数据库的字段,因为服务器端有公司总经理开发的一个根据Oracle数据库的表生成的cla ...

  6. 简单生成svg文件

    this.fileSaveSync = function (file, data) { var fs = require('fs-extra'); fs.writeFileSync(file, dat ...

  7. 使用Free Spire.Presentation生成PowerPoint文件

      使用Free Spire.Presentation生成PowerPoint文件 前言 之前有写过一篇使用Free Spire.XLS生成图表的文章,朋友圈内反应还不错,都希望我能继续写下去,把类似 ...

  8. caffe的python接口学习(5):生成deploy文件

    如果要把训练好的模型拿来测试新的图片,那必须得要一个deploy.prototxt文件,这个文件实际上和test.prototxt文件差不多,只是头尾不相同而也.deploy文件没有第一层数据输入层, ...

  9. 利用 autoconf 和 automake 生成 Makefile 文件

    一.相关概念的介绍 什么是 Makefile?怎么书写 Makefile?竟然有工具可以自动生成 Makefile?怎么生成啊?开始的时候,我有这么多疑问,所以,必须得先把基本的概念搞个清楚. 1.M ...

随机推荐

  1. Oracle性能诊断艺术-相关脚本说明

    第二章 bind_variables.sql     展示怎样绑定变量及何时绑定变量会导致游标共享 bind_variables_peeking.sql  展示绑定变量窥测的优缺点 selectivi ...

  2. 信号处理signal、sigaction、pause、信号嵌套处理、不可重入函数

    信号的捕捉和处理 主要由signal和sigaction函数来完成.还有一个函数pause,它可用来响应任何信号,不过不做任何处理. 1.signal函数 typedef void (*sighand ...

  3. forget word a out 1

      a 1★ a 不,非,无;在~ 的   2★ ab 相反,变坏,离去     3★ abs 相反,变坏,离去      

  4. POJ 2499 A*求第K短路

    DES就是给你一个图.然后给你起点和终点.问你从起点到终点的第K短路. 第一次接触A*算法. 题目链接:Remmarguts' Date 转载:http://blog.csdn.net/mbxc816 ...

  5. String比较相等的问题探索

    String比较相等的问题探索 工作上,有个同事犯了个低级错误,把字符串的计较用了==.由于代码已经交付客户,上了生产环境,给公司带了了损失.于是看了他的代码,自己根据以前学的知识,写了几个小demo ...

  6. Redis (一) 概念安装

    一.阿里云安装Redis 1.安装Redis yum -y install redis 2.启动Redis service redis start 或者(推荐使用) systemctl start  ...

  7. Java——File类成员方法

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  8. DevExpress v17.2新版亮点—WPF篇(七)

    用户界面套包DevExpress v17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WPF v17.2 新的Hamburger Menu.Sched ...

  9. 分析:新建短信,当我们接受人RecipientsEditor中输入+86的时候,系统会自动在+86后加入空格

    我们可以认为这是一个很人性的格式化操作,在ComposeMessageActivity中系统在调用initRecipientsEditor()方法对联系人进行初始化的时候调用了 PhoneNumber ...

  10. 用virtualbox虚拟机无法上网的解决方法

    用virtualbox虚拟机无法上网的解决方法   首先保证你的本机是可以正常上网的   启动虚拟机系统前,选择安装好的虚拟PC,点击"设置"按钮,然后切到"网络&quo ...