当前位置: 首页 > news >正文

49-Oracle init.ora-PFILE-SPFILE-启动参数转换实操

一早出现EMCC挂了,之后发现EMCC依赖的instance 挂了,重启startup后发现spfile无法启动。还是和小伙伴把基础问题搞清。spfile是动态文件、动态文件、动态文件,linux下vi看起来部分乱码部分是可编辑的,vi即使可以编辑也需要转换成pfile这样的文本文件再使用,记得备份备份备份。

Oracle 数据库启动时依赖参数文件配置实例行为:

SPFILE(服务器参数文件)、PFILE(参数文件)和 init.ora 三者关系紧密但存在关键差异。

一、核心关系与区别

init.ora 与 PFILE

  • init.ora​ 是 Oracle 提供的参数模板文件,命名格式通常为 init.ora,用于指导用户创建自定义的 PFILE
  • ​**PFILE​(如 init.ora)是用户根据 init.ora 模板创建的文本格式参数文件**,需手动编辑,修改后必须重启数据库生效
  • 关系:init.ora 是模板,PFILE 是实际使用的配置文件。

SPFILE​(动态文件)

  • ​二进制文件​(如 spfile.ora),由 Oracle 自动维护,支持动态修改参数(无需重启)
  • - 优先级高于 PFILE:若两者共存,默认优先加载 SPFILE 

对比​ 

​特性​

PFILE(含init.ora)

SPFILEspfile.ora)

​文件类型​

文本文件(可直接编辑)

二进制文件(不可直接编辑)

​修改方式​

手动编辑文件

ALTER SYSTEM SET命令动态调整

​生效条件​

需重启数据库

部分参数可立即生效

​备份支持​

不支持 RMAN

支持 RMAN 备份

创建来源​

基于init.ora模板创建

从PFILE生成 (CREATE SPFILE...)

二、启动机制与加载顺序​

​1. 默认启动流程​
数据库实例启动(STARTUP NOMOUNT 阶段)时,按以下顺序搜索参数文件
  • 1.spfile(SID).ora(如 spfileORCL.ora)
  • 2.spfile.ora(通用二进制文件)
  • 3.init.ora(如 initORCL.ora)
​:若以上均不存在,启动失败。记得备份这个文件,极端的情况从老的备份里扒拉一个出来,编辑关键信息强行开
2. 指定文件启动
  • ​强制使用 PFILE​:
    STARTUP PFILE='$ORACLE_HOME/dbs/initORCL.ora';
  • 强制使用 SPFILE​:需创建临时 PFILE 指向 SPFILE,再通过该 PFILE 启动 
-- 创建临时 PFILE(内容:SPFILE='路径/spfile<SID>.ora')
STARTUP PFILE='临时文件路径';
3. 状态查询
  • 确认当前使用的文件类型​:
SHOW PARAMETER spfile;  
-- 若返回 `spfile` 路径 → 使用 SPFILE;若为 `VALUE=NULL` → 使用 PFILE

三、相互转换方法

  • PFILE → SPFILE
CREATE SPFILE='$ORACLE_HOME/dbs/spfileORCL.ora' 
FROM PFILE='$ORACLE_HOME/dbs/initORCL.ora';
用途:迁移至动态参数管理
  • ​SPFILE → PFILE
CREATE PFILE='$ORACLE_HOME/dbs/initORCL_new.ora' 
FROM SPFILE='$ORACLE_HOME/dbs/spfileORCL.ora';
用途:备份或手动调整参数
  • ​从内存生成 PFILE(Oracle 11g+)
CREATE PFILE FROM MEMORY;  -- 直接基于当前内存参数生成文本文件

四、实操记录

  • 修改了系统参数文件spfile,导致数据库启动不了。

报错:

ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
--内存参数错误的
ORA-00845: MEMORY_TARGET not supported on this system  
--db_recovery_area参数错误的
ORA-01261: Parameter db_recovery_file_dest destination string cannot be translated
ORA-01262: Stat failed on a file destination directory
  • 在修改参数前,应该先备份spfile文件。
[oracle@em24ai:/u01/app/oracle/product/19.3.0/db/dbs]$ 
cp spfileemcc.ora spfileemcc.ora.bak
  • 1、sqlplus / as sysdba
  • 2、使用初始化的文件启动数据库 启动数据库到 nomount 状态,要使用一个可用的pfile
SQL> startup pfile=$ORACLE_HOME/dbs/init1.ora nomount;
  • 3、备份初始化文件,然后修改初始化文件的参数配置与系统物理硬件匹配
vi $ORACLE_HOME/dbs/init1.ora
SYS@emcc SQL> create pfile='/u01/app/oracle/product/19.3.0/db/dbs/init1.ora' from spfile;
File created.SYS@emcc SQL> startup pfile='/u01/app/oracle/product/19.3.0/db/dbs/init1.ora';                                                          ORACLE instance started.Total System Global Area 1.0737E+10 bytes
Fixed Size                 13683928 bytes
Variable Size            2382364672 bytes
Database Buffers         8321499136 bytes
Redo Buffers               19869696 bytes
Database mounted.
  • 4、创建新的 spfile
SQL> create spfile from pfile='$ORACLE_HOME/dbs/init1.ora';
  • 5、重新启动数据库
SQL> shutdown immediate;
SQL> startup;
  • 6、记得再生成一个可编辑的文本文件,pfile以备下次使用
SYS@emcc SQL> startup mount;
ORACLE instance started.Total System Global Area 1.0737E+10 bytes
Fixed Size                 13683928 bytes
Variable Size            2382364672 bytes
Database Buffers         8321499136 bytes
Redo Buffers               19869696 bytes
Database mounted.
SYS@emcc SQL> alter database open;Database altered.SYS@emcc SQL> create pfile='/u01/app/oracle/product/19.3.0/db/dbs/pfileemcc.ora' from spfile;File created.SYS@emcc SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@emcc SQL> startup
ORACLE instance started.Total System Global Area 1.0737E+10 bytes
Fixed Size                 13683928 bytes
Variable Size            2382364672 bytes
Database Buffers         8321499136 bytes
Redo Buffers               19869696 bytes
Database mounted.
Database opened.

五、运维实践与注意事项

  • 生产环境推荐​​优先使用 SPFILE:支持动态调整、RMAN 备份,避免重启中断服务
  • 故障恢复场景
  1. ​SPFILE 损坏时​:通过备份的 PFILE 启动,或从内存生成临时 PFILE 后再重建 SPFILE
  2. 参数误配置​:若因参数错误无法启动,可通过临时 PFILE 覆盖错误参数,再重建 SPFILE
  • 关键命令示例
  1. 动态修改参数​(使用 SPFILE 时):
    -- 需重启生效ALTER SYSTEM SET sga_max_size=4G SCOPE=SPFILE;

注意:SCOPE 的默认值依赖当前参数文件类型

(SPFILE 启动时默认为 BOTH,RAC环境记得是sid=‘*’;) 

  • init.ora → 参数模板,指导创建 PFILE。
  • PFILE​ → 可编辑的文本配置,需重启生效。
  • ​SPFILE​ → 二进制动态配置,支持实时调整,生产环境首选。
  • 启动优先级​:spfile.ora > spfile.ora > init.ora。
  • 灵活切换​:通过 CREATE SPFILE/PFILE 命令实现互转,适应不同运维需求。

 建议生产环境统一使用 SPFILE,结合定期备份(RMAN 或导出为 PFILE)确保参数安全

http://www.lryc.cn/news/572062.html

相关文章:

  • 129. 求根节点到叶节点数字之和 --- DFS +回溯(js)
  • 详解鸿蒙Next仓颉开发语言中的全屏模式
  • 【hadoop】搭建考试环境(单机)
  • LVS+Keepalived+nginx
  • Spring Boot + MyBatis + Vue:打造高效全栈应用的黄金组合
  • Vue 组件数据流与状态控制最佳实践规范
  • 博图SCL中CONTINUE语句详解:高效循环控制案例
  • RabbitMQ多角度可靠性分析/基于Java代码深度解析
  • android 象棋游戏开发
  • Android Studio Profiler使用
  • 数据差异的iOS性能调试:设备日志导出和iOS文件管理
  • Redis之分布式锁(3)
  • 【深度学习】条件随机场(CRF)深度解析:原理、应用与前沿
  • Ubuntu 安装Telnet服务
  • Cursor Pro取消500次请求限制,无限用的体验更好了吗?
  • YOLOv8改进:Neck篇——2024.1全新MFDS-DETR的HS-FPN特征融合层解析
  • 图像特征检测算法SIFT
  • 实现自动胡批量抓取唯品会商品详情数据的途径分享(官方API、网页爬虫)
  • python校园拼团系统
  • voronoi图,凸壳,和早已遗忘的定不定积分
  • LangChain中的向量数据库抽象基类-VectorStore
  • MySQL存储引擎深度解析:InnoDB、MyISAM、MEMORY 与 ARCHIVE 的全面对比与选型建议
  • Docker PowerJob
  • 今天我想清楚了
  • Conda 常用命令大全:从入门到高效使用
  • Vue添加图片作为水印
  • 最大公约数
  • Espresso + Java 详细示例
  • 【音视频】PJSIP库——pjsua命令使用详解
  • CANFD加速是什么?和CANFD有什么区别?