传统上,Oracle数据库的初始化参数存储在文本初始化参数文件中。为了更好的可管理性,您可以选择在二进制服务器参数文件中维护初始化参数,该文件在数据库启动和关闭期间保持不变。本节介绍服务器参数文件,并介绍如何使用任何一种存储参数的方法来管理初始化参数。

  • 什么是服务器参数文件?
  • 迁移到服务器参数文件
  • 创建服务器参数文件
  • SPFILE初始化参数
  • 更改初始化参数值
  • 清除初始化参数值
  • 导出服务器参数文件
  • 备份服务器参数文件
  • 恢复丢失或损坏的服务器参数文件
  • 查看参数设置

什么是服务器参数文件?


服务器参数文件最初是使用CREATE SPFILE语句从文本初始化参数文件构建的。 (它也可以由数据库配置助手直接创建。)服务器参数文件是无法使用文本编辑器编辑的二进制文件。 Oracle数据库提供其他界面,用于查看和修改服务器参数文件中的参数设置。

虽然可以使用文本编辑器打开二进制服务器参数文件并查看其文本,但不要手动编辑它。这样做会损坏文件。将无法启动实例,如果实例正在运行,则可能会失败。

当发出没有PFILE子句的STARTUP命令时,Oracle实例将搜索操作系统特定的默认位置,以查找从中读取初始化参数设置的服务器参数文件。如果找不到服务器参数文件,则实例将搜索文本初始化参数文件。如果服务器参数文件存在但您想用文本初始化参数文件中的设置覆盖它,则必须在发出STARTUP命令时指定PFILE子句。

 迁移到服务器参数文件


如果当前正在使用文本初始化参数文件(PFILE),请使用以下步骤迁移到服务器参数文件(SPFILE)。

1、如果初始化参数文件位于客户端系统上,则将文件(例如FTP)从客户端系统传输到服务器系统。

2、使用CREATE SPFILE FROM PFILE语句在默认位置创建一个服务器参数文件。

3、启动或重新启动实例

  该实例在默认位置找到新的SPFILE并启动它

创建服务器参数文件


使用CREATE SPFILE语句来创建服务器参数文件。必须具有SYSDBA或SYSOPER系统特权才能执行此语句。

当使用数据库配置助手创建数据库时,它会自动创建一个服务器参数文件。

CREATE SPFILE语句可以在实例启动之前或之后执行。但是,如果实例已使用服务器参数文件启动,则如果尝试重新创建实例当前正在使用的服务器参数文件,则会引发错误。

可以从现有文本初始化参数文件或内存创建服务器参数文件(SPFILE)。从内存创建SPFILE意味着将正在运行的实例中的初始化参数的当前值复制到SPFILE。

以下示例从文本初始化参数文件/u01/oracle/dbs/init.ora创建服务器参数文件,在这个例子中,没有指定SPFILE名称,所以文件是用特定于平台的默认名称和位置创建的(https://docs.oracle.com/cd/E11882_01/server.112/e25494/create.htm#CIAJEBBI):

CREATE SPFILE FROM PFILE='/u01/oracle/dbs/init.ora';

下一个示例说明了如何创建服务器参数文件并提供名称和位置:

CREATE SPFILE='/u01/oracle/dbs/test_spfile.ora'
FROM PFILE='/u01/oracle/dbs/test_init.ora';

下一个示例说明如何根据内存中初始化参数的当前值在默认位置创建服务器参数文件:

CREATE SPFILE FROM MEMORY;

无论使用默认的SPFILE名称和默认位置,还是指定SPFILE名称和位置,如果位置中已存在同名的SPFILE,它将被覆盖而不会显示警告消息

从文本初始化参数文件创建SPFILE时,与初始化参数文件中的参数设置在同一行中指定的注释将保留在SPFILE中。所有其他注释被忽略。

Oracle建议允许数据​​库为SPFILE指定默认名称并将其存储在默认位置。这简化了数据库的管理。例如,STARTUP命令假定这个默认位置读取SPFILE。

Table 2-3 PFILE and SPFILE Default Names and Locations on UNIX, LInux, and Windows

Platform PFILE Default Name SPFILE Default Name PFILE Default Location SPFILE Default Location
UNIX and Linux initORACLE_SID.ora spfileORACLE_SID.ora $ORACLE_HOME/dbs或与数据文件相同位置

没有使用ASM:

$ORACLE_HOME/dbs或与数据文件相同位置

使用ASM:

与数据文件在同一个磁盘组中

Windows initORACLE_SID.ora spfileORACLE_SID.ora $ORACLE_HOME/database

没有使用ASM:

$ORACLE_HOME/database

使用ASM:

与数据文件在同一个磁盘组中

启动时,实例首先搜索名为spfileORACLE_SID.ora的SPFILE,如果未找到,则搜索spfile.ora。使用spfile.ora可以使所有Real Application Cluster(Oracle RAC)实例使用相同的服务器参数文件。 如果两个SPFILE都未找到,则该实例将搜索文本初始化参数文件initORACLE_SID.ora

如果在默认位置以外的位置创建SPFILE,则必须在默认的PFILE位置创建一个指向服务器参数文件的“stub”PFILE。有关更多信息,请参阅“https://docs.oracle.com/cd/E11882_01/server.112/e25494/start.htm#i1006133”。

当存在Oracle ASM时使用DBCA创建数据库时,DBCA将SPFILE置于Oracle ASM磁盘组中,并且还会导致创建此stub PFILE。

SPFILE初始化参数


SPFILE初始化参数包含当前服务器参数文件的名称。当数据库使用默认的服务器参数文件时,即发出STARTUP命令并且不指定PFILE参数 - SPFILE的值由服务器在内部设置。 SQL * Plus命令SHOW PARAMETERS SPFILE(或任何其他查询参数值的方法)显示当前正在使用的服务器参数文件的名称

更改初始化参数值


两种初始化参数:

  • 动态初始化参数:可以针对当前的Oracle数据库实例进行更改。这些更改立即生效
  • 静态初始化参数:不能为当前实例更改。您必须在文本初始化文件或服务器参数文件中更改这些参数,然后在更改生效之前重新启动数据库。

设置或更改初始化参数值 

使用ALTER SYSTEM语句的SET子句来设置或更改初始化参数值。可选的SCOPE子句按照下表中的描述来指定更改的范围:

SCOPE Clause Description
SCOPE = SPFILE

该更改仅适用于服务器参数文件。效果如下:

  • 对当前实例没有改变
  • 对于动态和静态参数,更改在下次启动时有效并且是持久的

这是静态参数允许的唯一SCOPE规范。

SCOPE = MEMORY

该更改仅在内存中应用。效果如下:

  • 该更改是针对当前实例进行的,并立即生效。
  • 对于动态参数,效果是即时的,但它不是持久的,因为服务器参数文件未更新。

对于静态参数,该规范是不允许的。

SCOPE = BOTH

该更改将应用​​于服务器参数文件和内存中。效果如下:

  • 该更改是针对当前实例进行的,并立即生效。
  • 对于动态参数,由于服务器参数文件已更新,所以效果是持久的。

对于静态参数,这个规范是不允许的。

如果实例未启动服务器参数文件,则指定SCOPE = SPFILE或SCOPE = BOTH是错误的。如果使用服务器参数文件启动实例,则默认值为SCOPE = BOTH;如果使用文本初始化参数文件(PFILE)启动实例,则默认值为MEMORY。

对于动态参数,还可以指定DEFERRED关键字。指定时,更改仅对未来会话有效。

当将SCOPE指定为SPFILE或BOTH时,可选的COMMENT子句可让将文本字符串与参数更新相关联。注释被写入服务器参数文件。

以下语句更改连接被删除之前失败的登录尝试的最大次数。它包含注释,并明确指出只能在服务器参数文件中进行更改。

ALTER SYSTEM SET SEC_MAX_FAILED_LOGIN_ATTEMPTS=3
COMMENT='Reduce from 10 for tighter security.'
SCOPE=SPFILE;

下一个示例设置了一个复杂的初始化参数,其中包含属性列表。具体来说,被设置的参数值是LOG_ARCHIVE_DEST_n初始化参数。此声明可以更改此参数的现有设置或创建新的归档目标。

ALTER SYSTEM
SET LOG_ARCHIVE_DEST_4='LOCATION=/u02/oracle/rbdb1/',MANDATORY,'REOPEN=2'
COMMENT='Add new destination on Nov 29'
SCOPE=SPFILE;

当一个值由一系列参数组成时,您不能通过位置或序号编辑单个属性。每次更新参数时都必须指定完整的值列表,并且新列表完全替换旧列表。

清除初始化参数值


可以使用ALTER SYSTEM RESET命令清除(删除)用于启动实例的SPFILE中的任何初始化参数的设置。 SCOPE = MEMORY和SCOPE = BOTH都不允许。 SCOPE = SPFILE子句不是必需的,但可以包含。

可能需要清除SPFILE中的参数,以便在下次数据库启动时使用默认值。

导出服务器参数文件


可以使用CREATE PFILE语句将服务器参数文件(SPFILE)导出到文本初始化参数文件。这样做可能有以下几个原因:

  • 出于诊断目的,列出当前实例使用的所有参数值。这类似于SQL * Plus SHOW PARAMETERS命令或从V $ PARAMETER或V $ PARAMETER2视图中选择。
  • 要修改&spfile;服务器参数文件,首先要导出它,编辑生成的文本文件,然后使用CREATE SPFILE语句重新创建它

导出的文件也可以用来使用PFILE子句启动实例。

必须具有SYSDBA或SYSOPER系统特权才能执行CREATE PFILE语句。导出的文件在数据库服务器系统上创建。它包含与参数相关的任何注释,与参数设置位于同一行。

以下示例从SPFILE创建一个文本初始化参数文件:

CREATE PFILE FROM SPFILE;

由于没有为文件指定名称,因此数据库将创建一个具有平台特定名称的初始化参数文件,并且该文件是从特定于平台的默认服务器参数文件创建的。

以下示例从服务器参数文件创建一个文本初始化参数文件,但在本例中指定了这些文件的名称:

CREATE PFILE='/u01/oracle/dbs/test_init.ora'
FROM SPFILE='/u01/oracle/dbs/test_spfile.ora';

另一种方法是根据内存中初始化参数的当前值创建一个PFILE。以下是所需命令的示例:

CREATE PFILE='/u01/oracle/dbs/test_init.ora' FROM MEMORY;

备份服务器参数文件


可以通过导出服务器参数文件(SPFILE)来创建备份,如“导出服务器参数文件”中所述。如果数据库的备份和恢复策略是使用Recovery Manager(RMAN)实施的,那么可以使用RMAN创建SPFILE的备份。备份数据库时,SPFILE由RMAN自动备份,但RMAN还可以专门创建当前活动SPFILE的备份。

恢复丢失或损坏的服务器参数文件


如果您的服务器参数文件(SPFILE)丢失或损坏,则当前实例可能会失败,或者下次尝试启动数据库实例可能会失败。有几种方法可以恢复SPFILE:

1、如果实例正在运行,请发出以下命令以从内存中的初始化参数的当前值重新创建SPFILE

CREATE SPFILE FROM MEMORY;

该命令使用默认名称和默认位置创建SPFILE。您也可以用新名称或指定位置创建SPFILE。有关示例,请参阅“创建服务器参数文件”。

2、如果您有一个有效的文本初始化参数文件(PFILE),请使用以下命令从PFILE重新创建SPFILE

CREATE SPFILE FROM PFILE;

该命令假定PFILE处于默认位置并具有默认名称。当PFILE不在缺省位置或非默认名称时,请参阅“创建服务器参数文件”以获取要使用的命令语法。

3、从备份中恢复SPFILE

有关更多信息,请参阅“备份服务器参数文件”

4、如果以上的方法都不可行,请执行以下步骤:

  • 从警报日志中的参数值列表中创建一个文本初始化参数文件(PFILE):当实例启动时,用于启动的初始化参数将写入警报日志。您可以将警报日志的文本版本(不带XML标签)复制并粘贴到新的PFILE中。参阅:https://docs.oracle.com/cd/E11882_01/server.112/e25494/diag.htm#CHDGCEIH
  • 从PFILE创建SPFILE

在参数更新期间读取/写入错误

如果在参数更新期间读取或写入服务器参数文件时发生错误,则会在警报日志中报告错误,并忽略服务器参数文件的所有后续参数更新。此时,您可以执行以下操作之一:

  • 关闭实例,恢复服务器参数文件并在本节前面介绍,然后重新启动实例。
  • 如果不关心后续参数更新不会持久,则继续运行数据库。

查看参数设置


可以通过多种方式查看参数设置,如下表所示:

Method Description
SHOW PARAMETERS 此SQL * Plus命令显示当前会话有效的初始化参数的值。
SHOW SPPARAMETERS 此SQL * Plus命令在服务器参数文件(SPFILE)中显示初始化参数的值。
CREATE PFILE 此SQL语句根据SPFILE或当前的内存设置创建文本初始化参数文件(PFILE)。然后您可以使用任何文本编辑器查看PFILE。
V$PARAMETER 该视图显示当前会话有效的初始化参数的值。
V$PARAMETER2 该视图显示当前会话有效的初始化参数的值。在此视图中区分列表参数值更容易,因为每个列表参数值都显示在单独的行中。
V$SYSTEM_PARAMETER 该视图显示实例中有效的初始化参数的值。新会话从实例范围的值继承参数值。
V$SYSTEM_PARAMETER2 该视图显示实例中有效的初始化参数的值。新会话从实例范围的值继承参数值。在此视图中区分列表参数值更容易,因为每个列表参数值都显示在单独的行中。
V$SPPARAMETER 该视图显示SPFILE的当前内容。如果SPFILE未被实例使用,则该视图在ISSPECIFIED列中返回FALSE值。

参考资料


https://docs.oracle.com/cd/E11882_01/server.112/e25494/create.htm#ADMIN00202

使用服务器参数文件(SPFILE)管理初始化参数的更多相关文章

  1. RAC 环境下参数文件(spfile)管理

    RAC环境下,初始化参数文件与但实例下参数文件有些异同,主要表现在初始化参数可以为多个实例公用,也可以单独设置各个实例的初始化参数.对于那些非共用的初始化参数则必须要单独设置,而共用的则可以单独设置, ...

  2. oracle-7参数文件的管理

    参数文件的管理:1.参数文件的作用:记录数据库的配置的 (1)pfile  ---> 文本文件 (2)spfile --->服务器的参数文件(二进制的) 两个参数文件的区别: pfile ...

  3. oracle参数文件spfile和pfile

    一.参数文件说明 PFILE(Initialiazation Parameter Files)初始化参数文件,是文本文件,可直使用文本编辑器查看.如果数据库使用的是初始化参数文件PFILE,要想永久修 ...

  4. Oracle 参数文件spfile

    pfile和spfile 概念 ORACLE中的参数文件是一个包含一系列参数以及参数对应值的操作系统文件,可以分为两种类型.它们是在数据库实例启动时候加载的,决定了数据库的物理结构.内存.数据库的限制 ...

  5. Oracle参数文件修改

    初始化参数文件有两种,文本初始化参数文件 pfile 和二进制初始化参数文件 spfile.   动态参数文件spfile 这是Oracle推荐的初始化参数文件类型.这是一个可以写入和读取的二进制文件 ...

  6. pfile,spfile 初始化参数文件顺序【weber出品】

    一.初始化参数文件 启动实例时会读取初始化参数文件.参数文件有两种类型: 1.服务器参数文件:这是首选类型的初始化参数文件.这是一个由数据库服务器写入或读取的二进制文件,不得手动进行编辑.此文件驻留在 ...

  7. oracle中的初始化参数文件

    oracle初始化参数文件管理 oracle实例是指运行状态下的oracle软件,是由内存结构跟一些进程结构组成的,主要实现数据库的访问跟控制功能,是oracle的核心. 初始化参数文件是oracle ...

  8. oracle三个重要参数文件:pfile和spfile和init.ora

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

  9. oracle参数文件与启动过程

    oracle随系统启动而启动 cs65-64桌面版orcle-11.2.0.4 启动监听器,后台进程,OEM. 注意: 如果只做一和三,只能启动后台进程,监听器不启动,如果只做二和三,只能启动监听器, ...

随机推荐

  1. (基础 输入方法 栈)P1427 小鱼的数字游戏 洛谷

    题目描述 小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字(长度不一定,以0结束,最多不超过100个,数字不超过2^32-1),记住了然后反着念出来(表示结束的数字0就不要念出来了).这对小鱼的 ...

  2. RPC简介

    一:为什么会出现RPC呢? 当公司业务量还是很小的时候,所有的程序都放置在一台机器上,程序之间通过函数或者类来调用.1:当公司的业务发展越来越大,业务线越来越多,公司后端人员也越来越多,分布在不同的业 ...

  3. JavaEE之JDBC编程[详解]

    1.数据库简介 数据库(DB,Data Base ) 数据库管理系统(DBMS,Data Base Management System) 关系型数据库(RDB) 关系型数据库管理系统(RDBMS) S ...

  4. js中的blob,图片base64URL,file之间的关系

    js的base64编码和解码 英文是这样的:// atob() 将base64解码 // btoa() 将字符串转码为base64 var str = 'javascript'; window.bto ...

  5. 15. 迭代器模式(Iterator Pattern)

    动机(Motivate):     在软件构建过程中,集合对象内部结构常常变化各异.但对于这些集合对象,我们希望在不暴露其内部结构的同时,可以让外部客户代码透明地访问其中包含的元素;同时这种“透明遍历 ...

  6. 13个.Net开源的网络爬虫

    请点击此处输入图片描述 1:.Net开源的跨平台爬虫框架 DotnetSpider Star:430 DotnetSpider这是国人开源的一个跨平台.高性能.轻量级的爬虫软件,采用 C# 开发.目前 ...

  7. Doker安装日志,留个记录而已

    tianye@ubuntu:/usr/share$ wget -qO- https://get.docker.com/ | sh # Executing docker install script, ...

  8. java中的日志打印

    java中的日志打印: 日志工具类: #获取日志 INFO:表示获取日志的等级 A1:表示日志存器,可以自定义名称 #===DEBUG INFO log4j.rootLogger=DEBUG,A1,A ...

  9. MapReduce实现词频统计

    问题描述:现在有n个文本文件,使用MapReduce的方法实现词频统计. 附上统计词频的关键代码,首先是一个通用的MapReduce模块: class MapReduce: __doc__ = ''' ...

  10. 分布式中的 transaction log

    分布式中的 transaction log 在分布式系统中,有很多台node组成一个cluster,对于client 的一个写操作请求而言,在什么样的情况下,cluster告诉client此次写操作请 ...