知识大全 Oracle中的pfile和spfile详解

Posted 数据库

篇首语:千金一刻莫空度,老大无成空自伤。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle中的pfile和spfile详解相关的知识,希望对你有一定的参考价值。

Oracle中的pfile和spfile详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在 i 以前 Oracle 使用pfile 存储初始化参数配置 这些参数在实例启动时被读取 任何

  修改需要重起实例才能生效 使用spfile 您能够使用ALTER SYSTEM 或ALTER SESSION

  来动态修改那些可动态修改的参数 任何更改能够立即生效 您能够选择使更改只应用于当前实

  例还是同时应用到spfile 这就使得任何对spfile 的修改都能够在命令行完成 我们能够完全

  告别手工修改初始化参数文档 这就大大减少了人为错误的发生

  SPFILE 是个二进制文档 能够使用RMAN 进行备份 这样实际上Oracle 把参数文档也

  纳入了备份恢复管理

  除了第一次启动数据库需要PFILE(然后能够根据PFILE 创建SPFILE) 我们能够不再需

  要PFILE ORACLE 强烈推荐使用spfile 应用其新特性来存储和维护初始化参数配置

  一 创建SPFILE

  缺省的 ORACLE 使用PFILE 启动数据库 SPFILE 必须由PFILE 创建 新创建的SPFILE

  在下一次启动数据库时生效 CREATE SPFILE 需要SYSDBA 或SYSOPER 的权限

  语法如下

  CREATE SPFILE[= SPFILE NAME ] FROM PFILE[= PFILE NAME ]

  例

  SQL> create spfile from pfile;

  缺省的 spfile 创建到系统缺省目录

  (Unix: $ORACLE_HOME/dbs; NT: $ORACLE_HOME\\database)

  假如SPFILE 已存在 那么创建会返回以下错误

  SQL> create spfile from pfile;

  create spfile from pfile

  *

  ERROR 位于第 行:

  ORA : 无法创建已由例程使用的SPFILE

  这也能够用来判断当前是否使用了SPFILE 文档

  然而意外的时 Oracle 并没有向其他文档相同 在运行期间保持锁定 让我们作以下试验

  SQL> host rename SPFILEEYGLEN ORA SPFILEEYGLEN ORA BAK

  SQL> alter system set db_cache_size= M scope=both;

  系统已更改

  SQL> host dir * ora

  驱动器E 中的卷是Doc

  卷的序列号是 C EFF

  E:\\Oracle\\Ora iR \\database 的目录

   : PWDeyglen ORA

   个文档 字节

   个目录 可用字节

  SQL> alter system set db_cache_size= M scope=spfile;

  alter system set db_cache_size= M scope=spfile

  *

  ERROR 位于第 行:

  ORA : 无法打开文档

  OSD : 无法打开文档

  O/S Error: (OS ) 系统很难找到指定的文档

  SQL> host rename SPFILEEYGLEN ORA BAK SPFILEEYGLEN ORA

  SQL> alter system set db_cache_size= M scope=spfile;

  系统已更改

  SQL>

  估计Oracle 以后会想办法来锁定这个文档

  二 使用SPFILE

  重新启动数据库 使用startup 命令 Oralce 将会按照以下顺序在缺省目录中搜索参

  数文档

  a spfile$ORACLE_SID ora

  缺省目录UNIX: $ORACLE_HOME/dbs/

  NT: $ORACLE_HOME\\database

  b spfile ora

  缺省目录UNIX: $ORACLE_HOME/dbs/

  NT: $ORACLE_HOME\\database

  c init$ORACLESID ora

  缺省目录UNIX: $ORACLE_HOME/dbs/

  NT: $ORACLE_HOME\\database or

  $ORACLE_HOME\\admin\\db_name\\pfile\\

  创建了spfile 重新启动数据库 Oracle 会按顺序搜索以上目录 spfile 就会自动生效

  三 使用pfile/spfile 启动数据库

  假如您想使用pfile 启动数据库 您能够在启动时指定pfile 或删除spfile

  SQL> startup pfile= E:\\Oracle\\admin\\eyglen\\pfile\\init ora ;

  您不能以同样的方式指定spfile 但是能够创建一个包含spfile 参数的pfile 文档 指向

  spfile

  SPFILE 是个自Oracle i 引入的初始化参数 类似于IFILE 参数 SPFILE 参数用于定

  义非缺省路径的spfile 文档

  您能够在PFILE 链接到SPFILE 文档 同时在PFILE 中定义其他参数 假如参数重复配置

  后读取的参数将取代先前的配置

  PFILE 参数的使用 例如:

  这是我们使用SPFILE 启动的情况

  SQL> startup

  ORACLE 例程已启动

  Total System Global Area bytes

  Fixed Size bytes

  Variable Size bytes

  Database Buffers bytes

  Redo Buffers bytes

  数据库装载完毕

  数据库已打开

  SQL> show parameter log_archive_start

  NAME TYPE

  

  VALUE

  

  log_archive_start boolean

  TRUE

  SQL> show parameter spfile

  NAME TYPE

  

  VALUE

  

  spfile string

  %ORACLE_HOME%\\DATABASE\\SPFILE%

  ORACLE_SID% ORA

  SQL>

  我们修改PFILE 文档内容如下

  #Pfile link to SPFILE

  SPFILE= E:\\Oracle\\Ora iR \\database\\SPFILEEYGLEN ORA

  log_archive_start = false

  能够预见这个log_archive_start 参数配置将会代替SPFILE 中的配置

  SQL> startup pfile= e:\\initeyglen ora

  ORACLE 例程已启动

  Total System Global Area bytes

  Fixed Size bytes

  Variable Size bytes

  Database Buffers bytes

  Redo Buffers bytes

  数据库装载完毕

  数据库已打开

  SQL> show parameter spfile

  NAME TYPE

  

  VALUE

  

  spfile string

  E:\\Oracle\\Ora iR \\database\\SPF

  ILEEYGLEN ORA

  SQL> show parameter log_archive_start

  NAME TYPE

  

  VALUE

  

  log_archive_start boolean

  FALSE

  然后我们能够使用ALTER SYSTEM 方式将修改固定到SPFILE

  SQL> alter system set log_archive_start=false scope=spfile;

  系统已更改

  所以您也能够通过如上方式在启动时修改初始化参数 比我们在本文最后介绍的导入导

  出方法要简便的多

  四 修改参数

  能够通过ALTER SYSTEM 或导入导出来更改SPFILE 的内容

  ALTER SYSTEM 增加了一个新选项 SCOPE SCOPE 参数有三个可选值

  MEMORY SPFILE BOTH

  MEMORY:只改变当前实例运行

  SPFILE:只改变SPFILE 的配置

  BOTH:改变实例及SPFILE

   SCOPE=MEMORY

  SQL> show parameter timed_statistics

  NAME TYPE

  

  VALUE

  

  timed_statistics boolean

  TRUE

  SQL> ALTER SYSTEM SET timed_statistics=FALSE SCOPE=MEMORY;

  系统已更改

  SQL> show parameter timed_statistics

  NAME TYPE

  

  VALUE

  

  timed_statistics boolean

  FALSE

  SQL> shutdown immediate

  数据库已关闭

  已卸载数据库

  ORACLE 例程已关闭

  SQL> startup

  ORACLE 例程已启动

  Total System Global Area bytes

  Fixed Size bytes

  Variable Size bytes

  Database Buffers bytes

  Redo Buffers bytes

  数据库装载完毕

  数据库已打开

  SQL> show parameter timed_statistics

  NAME TYPE

  

  VALUE

  

  timed_statistics boolean

  TRUE

   SCOPE=SPFILE

  SQL> show parameter timed_statistics

  NAME TYPE

  

  VALUE

  

  timed_statistics boolean

  TRUE

  SQL> ALTER SYSTEM SET timed_statistics=FALSE SCOPE=SPFILE;

  系统已更改

  SQL> show parameter timed_statistics

  NAME TYPE

  

  VALUE

  

  timed_statistics boolean

  TRUE

  SQL> shutdown immediate

  数据库已关闭

  已卸载数据库

  ORACLE 例程已关闭

  SQL> startup

  ORACLE 例程已启动

  Total System Global Area bytes

  Fixed Size bytes

  Variable Size bytes

  Database Buffers bytes

  Redo Buffers bytes

  数据库装载完毕

  数据库已打开

  SQL> show parameter timed_statistics

  NAME TYPE

  

  VALUE

  

  timed_statistics boolean

  FALSE

  SQL>

   . SCOPE = BOTH

  使用BOTH 选项实际上等同于不带参数的ALTER SYSTEM 语句

  注意 假如修改静态参数 那么需要指定SPFILE 参数 否则将会报错

  SQL> show parameter timed_statistics

  NAME TYPE

  

  VALUE

  

  timed_statistics boolean

  FALSE

  SQL> ALTER SYSTEM SET timed_statistics=TRUE SCOPE=BOTH;

  系统已更改

  SQL> show parameter timed_statistics

  NAME TYPE

  

  VALUE

  

  timed_statistics boolean

  TRUE

  SQL> shutdown immediate

  数据库已关闭

  已卸载数据库

  ORACLE 例程已关闭

  SQL> startup

  ORACLE 例程已启动

  Total System Global Area bytes

  Fixed Size bytes

  Variable Size bytes

  Database Buffers bytes

  Redo Buffers bytes

  数据库装载完毕

  数据库已打开

  SQL> show parameter timed_statistics

  NAME TYPE

  

  VALUE

  

  timed_statistics boolean

  TRUE

  SQL> ALTER SYSTEM SET sql_trace=FALSE SCOPE=BOTH;

  ALTER SYSTEM SET sql_trace=FALSE SCOPE=BOTH

  *

  ERROR 位于第 行:

  ORA : 无法修改指定的初始化参数

  SQL> ALTER SYSTEM SET sql_trace=FALSE SCOPE=SPFILE;

  系统已更改

   .您也能够在数据库shutdown 时创建和修改spfile 例如

  SQL> show sga

  Total System Global Area bytes

  Fixed Size bytes

  Variable Size bytes

  Database Buffers bytes

  Redo Buffers bytes

  SQL> shutdown immediate

  数据库已关闭

  已卸载数据库

  ORACLE 例程已关闭

  SQL> create pfile from spfile;

  文档已创建

  SQL> create spfile from pfile;

  文档已创建

  SQL>

  五 是否使用了spfile

  判断是否使用了SPFILE 能够使用以下方法

   .查询v$parameter 动态视图 假如以下查询返回空值 那么您在使用pfile

  SQL> SELECT name value FROM v$parameter WHERE name= spfile ;

  NAME

  

  VALUE

  

  spfile

  %ORACLE_HOME%\\DATABASE\\SPFILE%ORACLE_SID% ORA

   .或您能够使用SHOW 命令来显示参数配置 假如以下结果value 列返回空值 那

  么说明您在使用pfile:

  SQL> SHOW PARAMETER spfile

  NAME TYPE

  

  VALUE

  

  spfile string

  %ORACLE_HOME%\\DATABASE\\SPFILE%

  ORACLE_SID% ORA

   .查询v$spparameter 视图

  假如以下查询返回 值 表示您在使用pfile 否则表明您使用的是spfile:

  SQL> SELECT COUNT(*) FROM v$spparameter WHERE value IS NOT NULL;

cha138/Article/program/Oracle/201311/17305

相关参考

知识大全 在Oracle9i中建立SPFILE文件

在Oracle9i中建立SPFILE文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Orac

知识大全 oracle中的INTERVAL函数详解

oracle中的INTERVAL函数详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  orac

知识大全 Oracle10g中的hints调整机制详解

Oracle10g中的hints调整机制详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  以下

知识大全 Oracle数据库中的索引详解

Oracle数据库中的索引详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一ROWID的概念

知识大全 Oracle实例和Oracle数据库详解

Oracle实例和Oracle数据库详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一ORA

知识大全 ORACLE的索引和约束详解

ORACLE的索引和约束详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Oracle的约束*

知识大全 Oracle数据库数据操作和控制语言详解

Oracle数据库数据操作和控制语言详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  SQL语

知识大全 ORACLE10046事件详解

ORACLE10046事件详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Oracle的事件

知识大全 oraclestatspack详解

  oracleStatspack从Oracle被引入马上成为DBA和Oracle专家用来诊断数据库性能的强有力工具通过Statspack我们可以很容易的确定Oracle数据库的瓶颈所有记录数据库性能

知识大全 Oracle中创建和管理表详解

Oracle中创建和管理表详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!以下是对Oracle中