Oracle的pfile、spfile介绍和spfile文件的修复

前言

对于使用oracle数据库的开发人员而言,oracle数据库的.ora文件想必不会陌生,但是对于这个文件具体的作用以及细节可能就不太了解了,本篇文章将对oracle的配置文件进行讲解,希望对各位读者有所帮助。

(一)什么是参数文件

在Oracle 9i之前,参数文件只有一种,它是文本格式的,称为pfile(Parameter File),在9i及以后的版本中,新 增了服务器参数文件,称为spfile(Server Parameter File),它是二进制格式的。这两种参数文件都是用来存储参 数配置以供oracle读取的。两种文件不仅是格式上存在差异,在功能上也存在着不同之处。
PFILE 是一个文本文件,通常以 .ora 为扩展名。它包含一系列的参数设置,每行一个参数,格式为 参数名=值。PFILE 可以直接用文本编辑器(如 Notepad、vi 等)编辑,但所有参数修改都需要重启数据库实例才能生效。
SPFILE是一个二进制文件,其格式由Oracle内部定义,包含参数的名称、值和元数据。直接编辑SPFILE可能会导致文件损坏,从而使数据库无法启动。因此,Oracle建议通过SQL*Plus或其他管理工具来修改SPFILE中的参数。

我们可以简单列个表格来写一下二者的不同点:

PFILE SPFILE
存储位置 $ORACLE_HOME/dbs/init.ora
or
$ORACLE_HOME/dbs/initorcl.ora
$ORACLE_HOME/dbs/spfile.ora
or
$ORACLE_HOME/dbs/spfileorcl.ora
是否支持动态生效 否,修改后必须重启 否,修改后需要重启。
如果scope为both的话,则不需要重启
持久性
<font style="color:rgba(0, 0, 0, 0.9);">默认行为</font> startup命令指定PFILE时,优先取PFILE startup命令未指定PFILE时,优先取SPFILE
是否支持直接修改 支持vi等编辑器直接修改 不支持直接修改,但可以通过SQL命令进行修改
文件格式 普通文本文件 二进制文件

(二)参数文件的加载顺序原理

oracle实例在启动时,会去读取参数文件中的配置,这个过程是这样的:数据库的startup命令中可以指定以哪个pfile来启动,但是请注意,只能指定pfile,不能指定spfile。当使用不带pfile子句的startup 命令时,Oracle 将从平台指定的默认位置上的服务器 参数文件(spfile) 中读取初始化参数。Oracle查找spfile或者创通的init.ora的顺序是:

  1. spfile$ORACLE_SID.ora的文件
  2. spfile.ora文件
  3. init$ORACLE_SID.ora文件。
  4. init.ora

(三)应该如何合理修改SPFILE文件的内容

SPFILE文件由于是二进制文件,无法直接用vi等编辑器进行修改,所以最好的修改方式是使用SQL进行修改:例如
alter system set job_queue_processed=50 scope=MEMORY

注意,scope=MEMORY表示应用范围,取值如下:

  • SPFILE:修改只对SPFILE有效,不影响当前实例,需要重启数据库才能生效;
  • MEMORY:修改只对内存有效,即只对当前实例有效,且立即生效,但不会保存到SPFILE, 数据库重启后此配置丢失;
  • BOTH:顾名思义,包含以上两种,立即生效,且永久生效。

(四)SPFILE和PFILE文件的转换(恢复受损的SPFILE文件)

如果误操作改动了SPFILE文件,导致文件再也无法被正常加载,数据库实例也无法正常启动。这种情况下我们可以使用ORACLE提供命令来重新生成一份文件。

步骤1:根据SPFILE文件生成PFILE文件(若本身存在PFILE文件最好先备份一下)

这里的文件目录可以手动指定,一般情况下我们会选择放到ORACLE_HOME/dbs目录下面,文件名的话可以自定义,需要注意要以.ora后缀结尾就行。

CREATE PFILE='/path/to/pfile/init.ora' FROM SPFILE;

步骤2:检查PFILE文件内容是否正常
步骤3:使用PFILE文件启动数据库实例

STARTUP PFILE='/path/to/pfile/init.ora';

步骤4:根据PFILE重新生成SPFILE文件

CREATE SPFILE FROM PFILE='/path/to/pfile/init.ora';

步骤5:根据SPFILE文件重启数据库实例

SHUTDOWN IMMEDIATE;
STARTUP;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容