ORACLE 参数文件损坏恢复实例

实例启动时会报如下错误:

SQL> startup

ORA-01078: failure in processing system parameters

LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/db_1/dbs/initorcl.ora'

利用控制文件自动备份生成的参数文件备份恢复。

步骤:

  1. 使用RMAN启动实例到nomount状态。RMAN能够在没有参数文件的特殊情况下将实例启动到nomount状态

RMAN> startup nomount;

startup failed: ORA-01078: failure in processing system parameters

LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/db_1/dbs/initorcl.ora'

starting Oracle instance without parameter file for retrieval of spfile

Oracle instance started

Total System Global Area 158662656 bytes

Fixed Size 2226456 bytes

Variable Size 92276456 bytes

Database Buffers 58720256 bytes

Redo Buffers 5439488 bytes

b、执行restore spfile 命令,根据备份类型区别使用 from autobackup或 from '备份集路径'子句。这里使用自动备份。

RMAN> set dbid 1328529185;

executing command: SET DBID

RMAN> restore spfile from autobackup;

Starting restore at 01-DEC-12

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=18 device type=DISK

channel ORA_DISK_1: looking for AUTOBACKUP on day: 20121201

channel ORA_DISK_1: AUTOBACKUP found: c-1328529185-20121201-00

channel ORA_DISK_1: restoring spfile from AUTOBACKUP c-1328529185-20121201-00

channel ORA_DISK_1: SPFILE restore from AUTOBACKUP complete

Finished restore at 01-DEC-12

注意:此命令要求先指定数据库的DBID,DBID可以从控制文件自动备份文件名中获得,控制文件自动备份默认保存在 $ORACLE_HOME/dbs 目录。

当控制文件自动备份没有在默认位置

Rman>RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/oracle/%F';

那么,数据库在nomount状态rman只能读取默认配置的,不能读取到更改后位置的

当回复的时候通过如下

Rman>set dbid 1328529185;

Rman>run

{

SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE disk to '/oracle/%F';

Restore controlfile from autobackup;

}

c、重启实例,恢复完成

RMAN> shutdown immediate;

Oracle instance shut down

RMAN> startup;

connected to target database (not started)

Oracle instance started

database mounted

database opened

Total System Global Area 1048059904 bytes

Fixed Size 2235000 bytes

Variable Size 608175496 bytes

Database Buffers 432013312 bytes

Redo Buffers 5636096 bytes

如果在实例运行中发现参数文件损坏,如下:

SQL> alter system set log_archive_dest_2='location=/u01/app/oracle/arch2' scope=spfile;

alter system set log_archive_dest_2='location=/u01/app/oracle/arch2' scope=spfile

*

ERROR at line 1:

ORA-01565: error in identifying file

'/u01/app/oracle/product/11.2.0/db_1/dbs/spfileorcl.ora'

ORA-27046: file size is not a multiple of logical block size

Additional information: 1

直接执行restore spfile恢复即可,不需关闭实例和设置DBID

RMAN> restore spfile to '/tmp/spfileorcl.ora' from autobackup;

注意:如果数据库是用spfile文件启动的,要恢复到其他位置,在copy到原位置即可。

cp /tmp/spfileorcl.ora $ORACLE_HOME/dbs

相关推荐
拂晓神剑zzz2 小时前
Neo4j图数据库
数据库·neo4j
鬼蛟2 小时前
Redis
数据库·redis·缓存
Ricky_Theseus2 小时前
SPOOLING 系统详解
linux·服务器·数据库
HUGu RGIN2 小时前
Redis 下载与安装 教程 windows版
数据库·windows·redis
卢光庆2 小时前
aardio - wsock.tcp.simpleHttpServer 访问数据库例程
数据库
木心术12 小时前
OpenClaw数据库自动化部署与网站接口调通全流程指南
运维·数据库·自动化
枕布响丸辣2 小时前
MySQL 主从复制与 MyCat 分库分表实战详解
数据库·mysql
eRTE XFUN2 小时前
Redis 设置密码(配置文件、docker容器、命令行3种场景)
数据库·redis·docker
Lhan.zzZ2 小时前
Qt开发踩坑:QList越界问题导致程序崩溃
数据库·c++·qt