01-spfile和pfile的区别,生成,加载和修复
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也会报错,无法启动。
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即可。
01-spfile和pfile的区别,生成,加载和修复的更多相关文章
- 反射01 Class类的使用、动态加载类、类类型说明、获取类的信息
0 Java反射机制 反射(Reflection)是 Java 的高级特性之一,是框架实现的基础. 0.1 定义 Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对 ...
- 前端自动生成/加载CSS
前言: 1.我很懒! 2.写样式时,很多时候需要单独设置长度.宽度.内间距.外间距等.于是,就会有很多CSS代码会出现很多类似以下的代码: .w20: { width: 20px; } .mt10: ...
- Lodop的JS模版代码、文档式模版 生成加载赋值博文索引
Lodop获取全部JS代码,传统JS模版的生成.LODOP设置打印设计返回JS代码是变量 LodopJS代码模版的加载和赋值 Lodop生成文档式模版 LodopJS文档式模版的加载和赋值 由于加载J ...
- iOS - viewDidLoad, viewWillDisappear, viewWillAppear区别及加载顺序
viewWillAppear: Called when the view is about to made visible. Default does nothing视图即将可见时调用.默认情况下不执 ...
- 01第一个批处理文件 window开机自动加载批处理文件
1 批处理文件用来加载python程序 批处理的文件名称为:Hello.bat @echo off C: cd C:\Users\\Desktop\python\HelloWorld\HelloWo ...
- oracle基础知识(六)----spfile与pfile
一, 认识参数文件 Oracle中的参数文件是一个包含一系列参数以及参数对应值的操作系统文件.它们是在数据库实例启动时候加载的,决定了数据库的物理 结构.内存.数据库的限制及系统大量的默认值 ...
- oracle spfile和pfile文件(转)
--======================== -->Oracle 参数文件 --======================== /* 参数文件(10g中的参数文件) 主要用来记录数据库 ...
- oracle spfile和pfile文件
pfile(Parameter File)从oracle8i开始使用,在oracle9i中也可以用.它以文本文件的形式存在,可以用vi等编辑器对 其中数据库参数进行修改.文件格式为initSID.or ...
- Oracle数据加载之sqlldr工具的介绍
环境: 服务端:RHEL6.4 + Oracle 11.2.0.4 客户端:WIN10 + Oracle 11.2.0.1 client 目录: sqlldr语法 sqlldr实验准备 sqlldr常 ...
- java类生命周期,类的“加载,连接,初始化,使用,卸载过程”详解
“ 如果说核心类库的 API 比做数学公式的话,那么 Java 虚拟机的知识就好比公式的推导过程” 每本Java入门书籍在介绍Java这门语言的时候都会提到Java跨平台,“一次解释,到处运行的特点“ ...
随机推荐
- 一文读懂什么是AIGC?
目录 AIGC概念 AIGC发展历史 在早期萌芽阶段(1950s~1990s) 在沉淀累积阶段(1990s~2010s) 在快速发展阶段(2010s~至今) ChatGPT AIGC能做什么? 电子商 ...
- 为什么从 MVC 到 DDD,架构的本质是什么?
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 本文来自于小傅哥新编写的<Java简明教程>系列内容,本教程意在于通过简单.明了. ...
- C++与Java的API对比(集合操作等方面)
转载请注明出处(- ̄▽ ̄)- 个人第一篇博客,觉得不错就点个"推荐"吧 φ(゜▽゜*)♪ 虽然自己是先学的C++,再学的Java,但是相对而言,自己写Java比写C++要相对多一些 ...
- Federated Learning002
联邦学习笔记--002 2022.11.26周六 今天学习了联邦学习中又一篇很经典的论文--Federated Machine Learning: Concept and Applications(联 ...
- 前端Vue自定义开屏启动广告组件,点击广告图跳转广告详情
随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身. 通过组件化开发,可以有 ...
- 自用 .net C# CSV文件写入读取工具类
using System.Data; using System.IO; using System.Linq; using System.Text; using System.Text.RegularE ...
- Robot Framework 自动化测试随笔(一)
一.安装Robot Framework步骤(安装目录避免中文和特殊字符,建议以管理员身份进行全部安装过程): 1.查看ride最新支持的python版本,据此下载对应python版本: https:/ ...
- Python 潮流周刊第 13 期(2023-07-29)
查看全文: https://pythoncat.top/posts/2023-07-29-weekly 文章&教程 1.Jupyter Notebook 7 隆重发布 (英) 2.Python ...
- Topic太多,RocketMQ炸了!
网上博客常说,kafka的topic数量过多会影响kafka,而RocketMQ不会受到topic数量影响. 但是,果真如此吗? 最近排查一个问题,发现RocketMQ稳定性同样受到topic数量影响 ...
- .Net Core 3.0 对 MongoDB 的多条件查询(两种)操作
前言 在日常开发中,偶尔会用到 MongoDB 的数据操作,也花费了一些时间调试,因此在此处记录一下,共同进步. 废话少说,出招吧! 正文 2.1 准备工作 首先需要引入 .Net 平台链接 Mo ...