Oracle的pfile和spfile的一点理解和笔记

具体是遇到什么问题的不太记得了。

当时查了些资料,做了些笔记,今天刚好翻回去的时候看到,写到这边分享下,下次遇到类似问题也能参考下。

参考过的博客也贴一下:

1、创建pfile和spfile

2、使用“create spfile from pfile”命令注意问题

3、create pfile or spfile from memory

4、spfile参数文件丢失及恢复方案

一、关于pfile

1、pfile是啥呢,pfile的全名就是parameter file,参数文件。

2、pfile是一个可编辑的文本文件,主要内容就是数据库的配置参数,包括内存配置、数据库名、sessions、processes等。

3、Oracle Database 9i之前,Oracle数据库就是通过pfile的配置来启动和初始化数据库的。

4、pfile默认路径(windows):{oracle_home}/database/initSID.ora

5、另外,windows系统的话,在安装目录下的app/admin/{sid}/pfile/init.ora.12345678,这个位置一般会有一个pfile文件。

二、关于spfile

1、spfile是Oracle Database 9i才开始出现的。

2、spfile是一个二进制文件,不可直接编辑。

3、spfile的默认路径(windows):{oracle_home}/database/spfileSID.ora

4、spfile之后,数据库默认就是读取spfile的配置启动和初始化参数 ,加载参数到内存中。

5、扩展:我们有时候修改数据库配置参数时,语法一般是:alter system set xxx=abc scope={spfile|memory|both}。如果是spfile的话,就是说参数修改到spfile,那么下次启动数据库就会以修改后的参数初始化实例;如果是memory的话,就是说仅次改内存中的参数,立即生效,但重启数据库就会失效;如果是both,即同时修改两处。

三、关于读取配置文件启动数据库

1、Oracle 9i之前,Oracle是通过pfile启动和初始化数据库。在9i之后,默认通过加载spfile来启动和初始化数据库。

2、关于启动的加载配置文件顺序(例如启动orcl数据库):

(1)读取默认spfile:{oracle_home}/database/spfileORCL.ora

(2)默认spfile读取不到,会读取同目录下的spfile.ora文件(有坑)

(3)如果上面2个都读不到,读同目录下pfile:{oracle_home}/database/initORCL.ora

(4)如果上面仨都没有,就报错。

3、如果默认读的spfile和pfile都读不到,可以通过指定pfile的方法启动,如指定D:\app\admin\orcl\pfile\init.ora.10152018183435来启动orcl数据库,命令为startup pfile=pfile文件路径,演示如下:

C:\Users\lihy>set oracle_sid=orcl

C:\Users\lihy>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期一 7月 1 00:36:29 2019

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

已连接到空闲例程。

SQL> startup pfile=D:\app\admin\orcl\pfile\init.ora.10152018183435
ORACLE 例程已经启动。

Total System Global Area 1068937216 bytes
Fixed Size                  2182592 bytes
Variable Size             616563264 bytes
Database Buffers          444596224 bytes
Redo Buffers                5595136 bytes
数据库装载完毕。
数据库已经打开。

4、如果找不到能直接用的pfile,可以通过别的数据库,生成一个pfile(生成pfile的方法后面介绍),然后拿过来修改一下db_name、control_files等几个跟数据库名有关的信息信息,用来启动数据库。

5、怎么查看数据库是通过spfile启动的还是pfile:在SQL命令窗口,输入show parameter spfile,如果结果显示spfile的文件路径,即为通过spfile启动的,如果没有,就是pfile。如下:

四、pfile和spfile间的相互倒腾

1、只要数据库能启动起来,那么就能生成pfile或者spfile

2、通过spfile的配置生成pfile:

(1)默认路径和文件:SQL> create pfile from spfile;

(2)指定路径和文件:SQL> create pfile=文件全路径 from spfile 文件全路径;

3、通过pfile的配置生成spfile:

(1)默认路径和文件:SQL> create spfile from pfile;

(2)指定路径和文件:SQL> create spfile=文件全路径 from pfile 文件全路径;

4、根据已启动的数据库(配置信息已经加载到内存)直接生成pfile和spfile:

(1)生成pfile:SQL> create pfile from memory;

(2)生成spfile:SQL> create spfile from memory;

5、生成spfile的时候,如果你是读取默认spfile启动的,执行create spfile from memory的时候就会报错“无法创建已由实例使用的 SPFILE”,因为数据库就是读这个文件启动的,所有不能再建一个同样名字的spfile。可以用create spfile=路径 from memory 的方式建一个不同名字的spfile。

 

好了,就到这里吧。7月来了,希望,小仙女一切顺利!

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值