Oracle PFILE/SPFILE 初始化参数文件

Oracle PFILE/SPFILE 初始化参数文件

初始化参数文件

要启动一个例程,Oracle 服务器必须读取初始化参数文件。

 

初始化参数文件

  • 文件中的条目专用于要启动的例程
  • 有两种类型的参数:

显式:文件中有一个条目

隐式:文件中没有条目,但假定取 Oracle 缺省值

  • 可存在多个初始化参数文件
  • 对文件中条目的更改的生效时间,取决于使用的初始化参数文件类型

静态参数文件 PFILE

永久参数文件 SPFILE

Oracle 服务器在启动例程时读取初始化参数文件。共有两种类型的初始化参数文件:

  • 静态参数文件 PFILE,一般名为 initSID.ora。
  • 永久参数文件 SPFILE,一般名为 spfileSID.ora。

初始化参数文件内容:

  • 例程参数列表
  • 与该例程相关联的数据库的名称
  • 系统全局区 (SGA) 的内存结构的分配
  • 如何处理已满的联机重做日志文件
  • 控制文件的名称和位置
  • 有关撤消段的信息

为在各种不同情况下优化性能,一个例程可有多个初始化参数文件。

初始化参数文件

使用 Oracle Enterprise Manager 查看初始化参数

从“OEM 控制台”(OEM Console):

  1. 导航到“数据库”(Databases) >“例程”(Instance) >“配置” (Configuration)。

2.从“常规”(General) 页选择“全部初始化参数”( All Initialization Parameters)。

 

 

PFILE initSID.ora

  • 文本文件
  • 使用操作系统编辑器进行修改
  • 手动进行修改
  • 所作更改在下次启动时生效
  • 仅在例程启动过程中打开
  • 缺省位置为 $ORACLE_HOME/dbs

PFILE

PFILE 是可使用标准的操作系统编辑器进行维护的文本文件。PFILE 在例程启动过程
中是只读的。如果文件发生修改,则必须关闭然后重新启动例程以使新的参数值生效。

缺省情况下,该文件位于 $ORACLE_HOME/dbs 目录中,文件名是 initSID.ora。

 

创建 PFILE  

cp init.ora $ORACLE_HOME/dbs/initdba01.ora

使用样本 init.ora 文件创

  • 样本文件由 Oracle Universal Installer 安装
  • 使用操作系统复制命令复制样本
  • 由数据库 SID 唯一标识

修改 initSID.ora
编辑参数
针对数据库要求

 

样本 init.ora 文件由 Universal Installer 在安装过程中创建。该样本 init.ora 文件可用于创建特定于某一例程的 initSID.ora。可使用文本编辑器修改 initSID.ora 文件中的参数。

 

PFILE 示例

 

# Initialization Parameter File: initdba01.ora
db_name              = dba01
instance_name        = dba01
control_files        = ( 		home/dba01/ORADATA/u01/control01dba01.ctl,
	home/dba01/ORADATA/u02/control01dba02.ctl)
db_block_size        = 4096
db_cache_size        = 4M
shared_pool_size     = 50000000
java_pool_size       = 50000000 			
max_dump_file_size   = 10240
background_dump_dest = /home/dba01/ADMIN/BDUMP
user_dump_dest       = /home/dba01/ADMIN/UDUMP
core_dump_dest       = /home/dba01/ADMIN/CDUMP
undo_management      = AUTO
undo_tablespace      = UNDOTBS
. . .


以这样的格式指定值:keyword=value(关键字 = 值)。
服务器为每个参数都设置了缺省值。根据参数的不同,缺省值可能与操作系统相关。
可以按任意顺序指定参数,但也存在例外。
注释行以 # 符号开头。
参数中如果包括字符文字,可将参数用双引号括起。
可以使用关键字 IFILE 使参数中包括其它文件。
如果使用的操作系统区分大小写,那么文件名也区分大小写。
如果有多个值,应该用圆括号将它们括起来,用逗号隔开。
注:请为参数的列出顺序指定一个标准:按字母顺序列出或按功能进行分组。PFILE 根据例程的不同而变化,不一定与上例相同。

 

PFILE 与SPFILE的差异

SPFILE spfileSID.ora

SPFILE

SPFILE 是 Oracle9i 中新增的二进制文件。该文件不能手动修改,且必须始终驻留在服务器端。创建该文件后,即由 Oracle 服务器进行维护。如果进行手动修改,SPFILE 将无效。SPFILE 具有对数据库进行永久更改的功能,不受关闭和启动操作的影响,它还提供自动调节记录在文件中的参数值的功能。使用 SPFILE,RMAN 可以支持初始化参数文件的备份,因为 SPFILE 驻留在服务器端。缺省情况下,它位于 $ORACLE_HOME/dbs 目录中,缺省名称为 spfileSID.ora。

 

  • 二进制文件
  • Oracle 服务器进行维护
  • 始终驻留在服务器端
  • 所做更改永久有效,不受关闭和启动的影响
  • 可以自行调节参数值
  • 使恢复管理器能够备份初始化参数文件

创建 SPFILE

SPFILE 是使用 CREATE SPFILE 命令从 PFILE 文件创建的。该命令需要具有 SYSDBA 权限才能执行。该命令可在例程启动之前或之后执行。

SQL> CREATE SPFILE [=’SPFILE-NAME’]

2 FROM PFILE[=’PFILE-NAME’]

其中:

  • SPFILE-NAME:要创建的 SPFILE 的名称
  • PFILE-NAME:用于创建 SPFILE 的 PFILE 的名称。PFILE 必须在服务器端可用

如果在语法中未包括 SPFILE-NAME 和 PFILE-NAME,Oracle 将使用缺省 PFILE 来生成 SPFILE(其名称由系统生成)。

SQL> CREATE SPFILE FROM PFILE;

 

从 PFILE 文件创建

CREATE SPFILE = $ORACLE_HOME/dbs/spfileDBA01.ora’ FROM PFILE = $ORACLE_HOME/dbs/initDBA01.ora;

 

其中
SPFILE-NAME:要创建的 SPFILE
PFILE-NAME:用于创建 SPFILE 的 PFILE
可在例程启动之前或之后执行

导出 SPFILE  

可将 SPFILE 的内容导出到 PFILE 中。

SQL> CREATE PFILE FROM SPFILE;

以上命令在服务器端创建了一个文本文件格式的 PFILE 。该命令可在例程启动之前或
之后执行。这样就提供了一种查看 SPFILE 并进行修改的简单方法:

  • 将 SPFILE 导出到 PFILE
  • 编辑 PFILE
  • 从编辑过的 PFILE 重新创建 SPFILE

将 SPFILE 导出到 PFILE 还可用作创建永久参数文件的备份的备用方法。

注:使用 Oracle9i,RMAN 还可备份永久参数文件。

V$SPPARAMETER

如上所述,查看 SPFILE 内的参数设置时有几个选项。V$SPPARAMETER 是显示和查看 SPFILE 的内容的另一种方法。

 

 

创建 SPFILE

使用 Oracle Enterprise Manager 创建 SPFILE

从 OEM 控制台:

  1. 从主菜单选择“对象”(Object) >“创建 spfile”(Create spfile)。

使用 Oracle Enterprise Manager 导出 SPFILE

从 OEM 控制台:

1.从主菜单选择“对象”(Object)>“创建 pfile”(Create pfile)。

 

SPFILE 示例

 

*.background_dump_dest=‘/home/dba01/ADMIN/BDUMP’
*.compatible='9.0.0'
*.control_files='/home/dba01/ORADATA/u01/ctrl01.ctl’ *.core_dump_dest=‘/home/dba01/ADMIN/CDUMP’
*.db_block_size=4096
*.db_name='dba01‘
*.db_domain=‘world’
*.global_names=TRUE
*.instance_name='dba01'
*.remote_login_passwordfile='exclusive‘
*.java_pool_size=50000000’
*.shared_pool_size=50000000
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS'
. . .

SPFILE 示例

PFILE 中的参数设置行上指定的注释保留在 SPFILE 中。所有其它注释都被忽略。

尽管 SPFILE 中的文本在 UNIX 中易于查看,但 SPFILE 是一个二进制文件,对
SPFILE 进行手动修改将使之无效。如果需要查看 SPFILE 的特定内容或进行一些
更改,可将 SPFILE 导出到 PFILE。

 

STARTUP 命令行为

优先顺序:

  • 使用命令 STARTUP 时,服务器端的 spfileSID.ora 用于启动例程。
  • 如果找不到 spfileSID.ora,则使用服务器端的缺省 SPFILE 来启动例程。
  • 如果找不到缺省 SPFILE,将使用服务器端的 initSID.ora 来启动例程。

指定的 PFILE 可覆盖缺省 SPFILE 来启动例程。

可在 PFILE 中包含一个定义以指示要使用 SPFILE。这是在非缺省位置使用 SPFILE
启动例程的唯一方法。要使用非缺省位置的 SPFILE 启动数据库,必须在 PFILE 中指
定 SPFILE=<完整路径和文件名>。

示例:SPFILE=$HOME/ADMIN/PFILE/$ORACLE_SID.ora。

 

 

优先顺序

  • spfileSID.ora
  • 缺省 SPFILE
  • initSID.ora
  • 缺省 PFILE
  • 指定的 PFILE 可覆盖优先顺序

STARTUP PFILE = $ORACLE_HOME/dbs/initDBA1.ora
PFILE 可指示要使用 SPFILE

SPFILE = /database/startup/spfileDBA1.ora

 

修改 SPFILE 中的参数

ALTER SYSTEM SET 命令用于更改例程参数的值。

ALTER SYSTEM SET parameter_name = parameter_value

[COMMENT ‘text’] [SCOPE = MEMORY|SPFILE|BOTH]

[SID= ‘sid’|’*’]

其中

parameter_name:要更改的参数的名称

parameter_value:要将参数更改为的值

COMMENT:添加在 SPFILE 中被更改的参数旁的注释

SCOPE:确定应在内存中、在 SPFILE 中还是同时在这两个位置进行更改

MEMORY:只能在当前运行的例程中更改参数值

SPFILE:只能在 SPFILE 中更改参数值

BOTH:在当前运行的例程和 SPFILE 中均可更改参数值

SID:标识要使用的 SPFILE 的 ORACLE_SID

‘sid’:更改 SPFILE 时使用的特定 SID

‘*’:使用缺省 SPFILE

 

  • 使用 ALTER SYSTEM 更改参数值
  • ALTER SYSTEM SET undo_tablespace = ‘UNDO2’;

  • 指定所做更改是临时的还是永久的
  • ALTER SYSTEM SET undo_tablespace = ‘UNDO2’ SCOPE=BOTH;

  • 删除或重置值
  • ALTER SYSTEM RESET undo_suppress_errors SCOPE=BOTH SID=’*’;

示例:

SQL>  SHOW PARAMETERS undo_suppress_errors

NAME                   TYPE        VALUE

———————- ———– ——-

undo_suppress_errors   boolean     FALSE

SQL> ALTER SYSTEM SET undo_suppress_errors = TRUE

2  COMMENT = ‘temporary testing’ SCOPE=BOTH

3  SID=‘DBA01’;

SQL> SHOW PARAMETERS undo_suppress_errors

NAME                   TYPE        VALUE

———————- ———– ——-

undo_suppress_errors   boolean     TRUE

ALTER SYSTEM RESET 命令用于删除或还原为缺省值。

SQL> ALTER SYSTEM RESET parameter_name [SCOPE = MEMORY|SPFILE|BOTH] [SID= ‘sid’|’*’]

示例:

SQL> ALTER SYSTEM RESET undo_suppress_errors

2  SCOPE=BOTH SID=‘dba01’;

从 SPFILE 中删除一个参数有以下几种方法:

  • 将参数重设为缺省值来模拟使用 ALTER SYSTEM SET 的删除操作。
  • 使用 CREATE SPFILE FROM PFILE 重新创建 SPFILE。
  • 使用 ALTER SYSTEM RESET 从 SPFILE 删除参数。

 

修改 SPFILE 中的参数(续

使用 Oracle Enterprise Manager 修改 SPFILE 配置

从 OEM 控制台:

1.导航到“数据库”(Databases) >“例程”(Instance)。

2.单击“配置”(Configuration)。

  1. 在“常规”(General) 页上,单击“全部初始化参数”( All Initialization Parameters)。
  2. 在参数值栏中修改参数 。
  3. 单击“确定”(OK)。

Comment

*

沪ICP备14014813号-2

沪公网安备 31010802001379号