问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Oracle中的pfile和spfile详解

发布网友 发布时间:2023-03-05 23:10

我来回答

1个回答

热心网友 时间:2024-12-05 09:15

  在 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;

lishixin/Article/program/Oracle/201311/17305
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
在筋骨堂治疗腰椎间盘突出一个疗程后已有好转,隔了三、四天又疼上了... 美的3⃣️匹柜机空调为什么不制热是什么原因? 小票打印机不出字的原因及解决方法如何解决小票打印机无法打印字的问题... 电脑打单打印机出不了小票超市收银台电脑键盘怎么用 交易房屋如何分类 城市规划用途分类该怎么做 规划用途的分类 ...打火机散件设备公司 值得信赖么 ?是不是《骗子》皮包公司? 希望给予... 哈尔滨农垦太阳神打火机散件厂是否骗人 有没有人知道网上那些打火机加工的广告是不是真是可靠?做打火机反销... 兴业银行流水内“赎回”什么意思 模拟人生4生孩子性别 模拟人生4吃什么生男孩 模拟人生4怎么生孩子 生孩子方法介绍分享 模拟人生4怎么生男孩 模拟人生4怎么生多胞胎 阴阳师鸩御魂及阵容怎么搭配好 阴阳师怎么用好鸩 阴阳师鸩新版斗技御魂怎么搭配 鸩新版斗 阴阳师鸩御魂怎么搭配 新SR式神攻略全分享 win8 ie10不能播放 flash怎么办? IE10 flash禁用了怎么办 北京码农是不是最终都留在北京了 白银化矿工有13薪吗 白银903稀土公司待遇 搜不出附近的人了为什么 还孩子一个快乐的童年 阅读理解答案 童年的快乐的第二题 快乐的童年阅读以及以及答案 童年的快乐阅读答案 可复美类人胶原蛋白敷料用完洗脸吗?可复美类人胶原蛋白敷料成分_百度... 联想s2智能插座苹果怎么用 新物联设备离线怎么连接 粉皮鱼块煲的做法 粉皮辣鱼的做法是什么? 抖音新号喜欢跟收藏怎么设置 电视上抖音怎么点赞 2016年父亲节是几月几日,2016父亲节是哪天? xr锁屏手电筒怎么打开 如何设置word文字空心效果 被冻结了怎么解除 被冻结了怎么解除 苹果的保存方法可不可以放在冷库 ciscomeeting怎么创建会议链接 微信删除联系人后还能恢复吗 梦见重病人从病床上不见了什么意思 白色的窗纱上面有长毛的黑色印子,用什么办法能去除掉呢,求解 ...挡阳光怎么办一可以用喷水壶洗纱窗,用毛毛虫的毛往窗外吹吗?_百度... 海尔空气能热水器面板显示两道杠 被冻结了怎么解除 大话手游魔的配饰怎么洗炼