缺少初始化文件,数据库是无法启动的。如果通过RMAN备份了初始化参数,那么可以通过RMAN对初始化参数进行恢复。
RMAN备份恢复之SPFILE的恢复(一):http://yangtingkun.itpub.net/post/468/300061
基于UNION ALL的分页查询执行计划问题(二):http://yangtingkun.itpub.net/post/468/303523
这篇文章简单介绍NOCATALOG方式下另外一种恢复方法。
前面介绍对于不存在autobackup的情况,SPFILE的恢复问题比较复杂。
如果仅仅是SPFILE丢失,控制文件仍然存在的话,那么还有一种相对简单的恢复方法。首先手工编辑一个初始化参数文件,指明数据库名称和控制文件位置。相对于上一篇文章的DBID而言,这些信息是很容易得到的。
[oracle@demo2 oracle]$ vi init.ora
db_name=testdata
instance_name=testdata
control_files='/data/oradata/testdata/control01.ctl'
db_block_size=8192
注意,如果DB_BLOCK_SIZE的值可以通过alert文件中查到,如果alert文件丢失,可以尝试多次,当发现下面的错误时,关闭实例,重新修改INIT.ORA文件,再次启动。
RMAN> startup mount pfile=/home/oracle/init.ora
Oracle instance started
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of startup command at 07/05/2007 20:32:11
ORA-00209: control file blocksize mismatch, check alert log for more info
下面用RMAN将数据库启动到MOUNT状态,就可以利用控制文件中保存的备份信息去恢复SPFILE了。
[oracle@demo2 oracle]$ rman target /
Recovery Manager: Release 9.2.0.4.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
connected to target database (not started)
RMAN> startup mount pfile=/home/oracle/init.ora
Oracle instance started
database mounted
Total System Global Area 97588504 bytes
Fixed Size 451864 bytes
Variable Size 46137344 bytes
Database Buffers 50331648 bytes
Redo Buffers 667648 bytes
RMAN> list backup of spfile;
using target database controlfile instead of recovery catalog
List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
1154 Full 0 DISK 00:00:01 06-7月 -07
BP Key: 2042 Status: AVAILABLE Tag: TAG20070706T130211
Piece Name: /data1/backup/testdata/4dim5buh_1_1
SPFILE Included: Modification time: 27-2月 -07
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
1156 Full 0 DISK 00:05:09 06-7月 -07
BP Key: 2044 Status: AVAILABLE Tag: TAG20070706T130423
Piece Name: /data1/backup/testdata/4jim5c2n_1_1
SPFILE Included: Modification time: 27-2月 -07
RMAN> restore spfile;
Starting restore at 06-7月 -07
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=9 devtype=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: sid=10 devtype=DISK
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: restoring SPFILE
output filename=/opt/ora9/product/9.2/dbs/spfiletestdata.ora
channel ORA_DISK_1: restored backup piece 1
piece handle=/data1/backup/testdata/4jim5c2n_1_1 tag=TAG20070706T130423 params=NULL
channel ORA_DISK_1: restore complete
Finished restore at 06-7月 -07
RMAN> startup force;
Oracle instance started
database mounted
database opened
Total System Global Area 1175525576 bytes
Fixed Size 452808 bytes
Variable Size 335544320 bytes
Database Buffers 838860800 bytes
Redo Buffers 667648 bytes
使用这种方式,只需要指定DBNAME,控制文件的位置,并确保控制文件没有丢失就可以了。
不再需要控制文件的AUTOBACKUP,以及DBID的值,也不需要挨个备份集尝试去恢复SPFILE。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-69342/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/4227/viewspace-69342/