探索ORACLE之RMAN_07 参数文件丢失恢复

简介: 探索ORACLE之RMAN_07 参数文件丢失恢复 作者:吴伟龙   Name:Prodence Woo QQ:286507175  msn:hapy-wuweilong@hotmail.com   Oracle数据库的参数文件有两种一种是pfile(初始化参数文件),还有一种是spfile(服务器初始化参数文件);实际上spfile是pfile衍生过来的一新参数文件,应用9i以后的版本,在9i之前的版本都不支持,只支持pfile;而且pfile是不能通过oracle命令来进行备份的,只有spfile才支持备份。

探索ORACLERMAN_07 参数文件丢失恢复

作者:吴伟龙   NameProdence Woo

QQ286507175  msn:hapy-wuweilong@hotmail.com

 

Oracle数据库的参数文件有两种一种是pfile(初始化参数文件),还有一种是spfile(服务器初始化参数文件);实际上spfilepfile衍生过来的一新参数文件,应用9i以后的版本,在9i之前的版本都不支持,只支持pfile;而且pfile是不能通过oracle命令来进行备份的,只有spfile才支持备份。

 

通过RMAN的备份来实现参数文件的恢复,仅适用于9i以后

1、通过rman备份参数文件:

RMAN> backupspfile;

 

Starting backupat 05-JUL-12

using channelORA_DISK_1

channelORA_DISK_1: starting full datafile backupset

channelORA_DISK_1: specifying datafile(s) in backupset

including currentSPFILE in backupset

channelORA_DISK_1: starting piece 1 at 05-JUL-12

channelORA_DISK_1: finished piece 1 at 05-JUL-12

piecehandle=/DBBak/bak_WWL_07_05_03nfbi5c_1_1 tag=TAG20120705T175348 comment=NONE

channelORA_DISK_1: backup set complete, elapsed time: 00:00:02

Finished backupat 05-JUL-12

 

Starting ControlFile and SPFILE Autobackup at 05-JUL-12

piecehandle=/DBSoft/product/10.2.0/db_1/dbs/c-5520179-20120705-01 comment=NONE

Finished ControlFile and SPFILE Autobackup at 05-JUL-12

 

RMAN>

 

2、备份完之后,我们可以看到如下备份信息:

BS Key  Type LV Size       Device Type Elapsed Time Completion Time

------- ---- ------------ ----------- ------------ ---------------

3       Full   80.00K     DISK        00:00:01     05-JUL-12     

        BP Key: 3   Status: AVAILABLE  Compressed: NO  Tag: TAG20120705T175348

        Piece Name:/DBBak/bak_WWL_07_05_03nfbi5c_1_1

  SPFILE Included: Modification time: 05-JUL-12

 

3、模拟参数文件丢失:

SQL> showparameter spfile;

 

NAME                                 TYPE        VALUE

----------------------------------------------- ------------------------------

spfile                               string      /DBSoft/product/10.2.0/db_1/db

                                                s/spfileWWL.ora

SQL>

 

删除参数文件:

[oracle@wwldb ~]$ rm /DBSoft/product/10.2.0/db_1/dbs/spfileWWL.ora

[oracle@wwldb ~]$ ls /DBSoft/product/10.2.0/db_1/dbs/spfileWWL.ora

ls: /DBSoft/product/10.2.0/db_1/dbs/spfileWWL.ora: No such file ordirectory

 

[oracle@wwldb dbs]$ ll 

total 7240

drwxr-xr-x 2 oracle oinstall   4096 Jul  5 18:25 bak

-rw-rw---- 1 oracle oinstall   1544 May 16 16:44 hc_WWL.dat

-rw-rw---- 1 oracle oinstall      24 May 23 15:52 lkDUMMY

-rw-rw---- 1 oracle oinstall     24 May 16 16:47 lkWWL

-rw-r----- 1 oracle oinstall   1536 May 21 15:05 orapwWWL

drwxr-xr-x 2 oracle oinstall   4096 Jul  5 18:25 pfilebak

-rw-r----- 1 oracle oinstall 7389184 Jul  5 17:53 snapcf_WWL.f

[oracle@wwldb dbs]$    

我们可以看到这里面pfilespfile都没有了,那么数据库肯定是起不来的,这个时候需要数据库起来肯定需要恢复spfile或手工写一个pfile来供数据库的启动。

 

4、重启数据库

SQL> startup

ORA-01078:failure in processing system parameters

LRM-00109: couldnot open parameter file '/DBSoft/product/10.2.0/db_1/dbs/initWWL.ora'

 

报错:没有找到参数文件,数据库无法启动,甚至无法到达nomount状态,这个时候我们是不能使用rman的,那么我们必须手工写一个非常简单的pfile,将数据库启动到nomount状态下,这个时候就可以通过rman来进行对数据库的spfile进行恢复了。

 

5、开始恢复参数文件:

编辑一个pfile文件在/DBSoft/product/10.2.0/db_1/dbs/目录下,执行添加如下一行内容即可,文件名称为initWWL.ora

db_name=wwl

 

6、再次启动数据库,现在数据库已经能启动到nomount状态了:

SQL> conn / assysdba

Connected to anidle instance.

SQL> startup

ORACLE instancestarted.

 

Total SystemGlobal Area  117440512 bytes

Fixed Size                  1218004 bytes

VariableSize              58722860 bytes

Database Buffers           50331648 bytes

Redo Buffers                7168000 bytes

ORA-00205: errorin identifying control file, check alert log for more info

 

 

SQL> selectinstance_name,status from v$instance;

 

INSTANCE_NAME    STATUS

----------------------------

WWL              STARTED

 

SQL>

 

7、这个时候我们就能通过rman来对spfile服务器参数文件进行恢复了。

RMAN> restore spfile;

 

Starting restore at 05-JUL-12

using target database control file insteadof recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=36 devtype=DISK

 

RMAN-00571:===========================================================

RMAN-00569: =============== ERROR MESSAGESTACK FOLLOWS ===============

RMAN-00571:===========================================================

RMAN-03002: failure of restore command at07/05/2012 18:44:06

RMAN-06563: control file or SPFILE must berestored using FROM AUTOBACKUP

恢复的时候报错,说控制文件和spfile文件的恢复必须是来自于自动备份,但是我们没有做自动备份呀,怎么办,我们刚才是手工备份的参数文件。那么我们将用如下的指定备份路径来进行参数文件的恢复。

RMAN> restore spfile from'/DBBak/bak_WWL_07_05_03nfbi5c_1_1';

 

Starting restore at 05-JUL-12

using channel ORA_DISK_1

 

channel ORA_DISK_1: autobackup found:/DBBak/bak_WWL_07_05_03nfbi5c_1_1

channel ORA_DISK_1: SPFILE restore fromautobackup complete

Finished restore at 05-JUL-12

 

RMAN>

 

OK了,恢复成功。

 

8、查看spfile是否恢复成功;

[oracle@wwldb dbs]$ ll

total 7248

drwxr-xr-x 2 oracle oinstall    4096 Jul 5 18:25 bak

-rw-rw---- 1 oracle oinstall    1544 May 16 16:44 hc_WWL.dat

-rw-r--r-- 1 oracle oinstall      12 Jul 5 18:36 initWWL.ora

-rw-rw---- 1 oracle oinstall      24 May 23 15:52 lkDUMMY

-rw-rw---- 1 oracle oinstall      24 May 16 16:47 lkWWL

-rw-r----- 1 oracle oinstall    1536 May 21 15:05 orapwWWL

drwxr-xr-x 2 oracle oinstall    4096 Jul 5 18:25 pfilebak

-rw-r----- 1 oracle oinstall 7389184Jul  5 17:53 snapcf_WWL.f

-rw-r----- 1 oracleoinstall    2560 Jul  5 18:47 spfileWWL.ora

 

我们可以看到,现在spfile已经恢复成功了。

 

9、再次启动数据库:

  SQL> startup

ORACLE instance started.

 

Total System Global Area  285212672 bytes

Fixed Size                  1218968 bytes

Variable Size              79693416 bytes

Database Buffers          197132288 bytes

Redo Buffers                7168000 bytes

Database mounted.

Database opened.

SQL>

 

 我们可以看到,数据库现在是已经起来了。

 

 

通过手工重建来实现参数文件的恢复,适用于所有版本

 

1、我们可以参考建库后生成的init.ora文件来进行修改,只需保留以下即可

[oracle@wwldb dbs]$ cat init.ora |grep -v ^# |grep -v ^$ >initWWL.ora

[oracle@wwldb dbs]$ ls

bak hc_WWL.dat  init.ora  initWWL.ora lkDUMMY  lkWWL  orapwWWL pfilebak  snapcf_WWL.f

 

2、编辑initWWL.ora文件,修改db_namecontrol_files的值为实际值即可。

db_name=WWL

db_files = 80                                                         # SMALL

db_file_multiblock_read_count = 8                                     # SMALL

db_block_buffers = 100                                                # SMALL

shared_pool_size = 62198988                                            #SMALL

log_checkpoint_interval = 10000

processes = 50                                                       # SMALL

parallel_max_servers = 5                                              #SMALL

log_buffer = 32768                                                   # SMALL

max_dump_file_size = 10240      # limit trace file size to 5 Meg each

global_names = TRUE

control_files ='/DBSoft/oradata/WWL/control01.ctl','/DBData/oradata/WWL/control02.ctl','/DBData/oradata/WWL/control03.ctl'

 

3、启动数据库:

SQL> startup

ORACLE instance started.

 

Total System Global Area 100663296 bytes

Fixed Size                  1217884 bytes

Variable Size             88083108 bytes

Database Buffers            8388608 bytes

Redo Buffers                2973696 bytes

Database mounted.

Database opened.

SQL>

 

至此参数文件已经恢复成功。

 

目录
相关文章
|
1月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的控制文件与归档日志文件
本文介绍了Oracle数据库中的控制文件和归档日志文件。控制文件记录了数据库的物理结构信息,如数据库名、数据文件和联机日志文件的位置等。为了保护数据库,通常会进行控制文件的多路复用。归档日志文件是联机重做日志文件的副本,用于记录数据库的变更历史。文章还提供了相关SQL语句,帮助查看和设置数据库的日志模式。
【赵渝强老师】Oracle的控制文件与归档日志文件
|
27天前
|
SQL Oracle 关系型数据库
Oracle 从 DMP 文件中恢复指定表的步骤
Oracle 从 DMP 文件中恢复指定表的步骤
43 7
|
29天前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
1月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle的参数文件与告警日志文件
本文介绍了Oracle数据库的参数文件和告警日志文件。参数文件分为初始化参数文件(PFile)和服务器端参数文件(SPFile),在数据库启动时读取并分配资源。告警日志文件记录了数据库的重要活动、错误和警告信息,帮助诊断问题。文中还提供了相关视频讲解和示例代码。
|
1月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的数据文件
在Oracle数据库中,数据库由多个表空间组成,每个表空间包含多个数据文件。数据文件存储实际的数据库数据。查询时,如果内存中没有所需数据,Oracle会从数据文件中读取并加载到内存。可通过SQL语句查看和管理数据文件。附有视频讲解及示例。
|
3月前
|
Oracle 关系型数据库 数据库
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
打开oracle数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。 数据库没有备份,无法通过备份去恢复数据库。用户方联系北亚企安数据恢复中心并提供Oracle_Home目录中的所有文件,急需恢复zxfg用户下的数据。 出现“system01.dbf需要更多的恢复来保持一致性”这个报错的原因可能是控制文件损坏、数据文件损坏,数据文件与控制文件的SCN不一致等。数据库恢复工程师对数据库文件进一步检测、分析后,发现sysaux01.dbf文件损坏,有坏块。 修复并启动数据库后仍然有许多查询报错,export和data pump工具使用报错。从数据库层面无法修复数据库。
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
|
2月前
|
Oracle 关系型数据库 数据库
oracle数据恢复—Oracle数据库文件损坏导致数据库打不开的数据恢复案例
打开oracle数据库时报错,报错信息:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。急需恢复zxfg用户下的数据。 出现上述报错的原因有:控制文件损坏、数据文件损坏、数据文件与控制文件的SCN不一致等。数据恢复工程师对数据库文件做进一步检测分析后发现sysaux01.dbf文件有坏块。修复sysaux01.dbf文件,启动数据库依然有许多查询报错。export和data pump工具无法使用,查询告警日志并分析报错,确认发生上述错误的原因就是sysaux01.dbf文件损坏。由于该文件损坏,从数据库层面无法修复数据库。由于system和用户表空间的数据文件是正常的,
|
7月前
|
Oracle 关系型数据库 Java
Oracle 19c 查看隐含参数视图
Oracle 19c 查看隐含参数视图
107 7
|
6月前
|
SQL Oracle 关系型数据库
mysql和oracle 命令行执行sql文件 数据库执行sql文件 执行sql语句
mysql和oracle 命令行执行sql文件 数据库执行sql文件 执行sql语句
81 0
|
6月前
|
存储 SQL Oracle
oracle 存储过程导出sql语句 导出为文件
oracle 存储过程导出sql语句 导出为文件
190 0