Oracle Study之案例--重建数据库控制文件

简介:

系统环境:

操作系统: Linux RH6

数据库:   Oracle 11gR2

   案例分析:

          数据库中所有的控制文件被意外破坏,非归档的库,在有trace备份的情况下,重建控制文件。

1、控制文件trace脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[oracle@rh6 ~]$ cat crctr.sql 
CREATE CONTROLFILE REUSE DATABASE  "TEST3"  NORESETLOGS  NOARCHIVELOG
     MAXLOGFILES 10
     MAXLOGMEMBERS 5
     MAXDATAFILES 300
     MAXINSTANCES 1
     MAXLOGHISTORY 292
LOGFILE
   GROUP 1  '/u01/app/oracle/oradata/test3/redo01a.log'   SIZE 100M BLOCKSIZE 512,
   GROUP 2  '/u01/app/oracle/oradata/test3/redo02a.log'   SIZE 100M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
   '/u01/app/oracle/oradata/test3/system01.dbf' ,
   '/u01/app/oracle/oradata/test3/sysaux01.dbf' ,
   '/u01/app/oracle/oradata/test3/undotbs01.dbf' ,
   '/u01/app/oracle/oradata/test3/users01.dbf'
CHARACTER SET ZHS16GBK;

2、启动Instance到nomount,重建controlfile

1
2
3
4
5
6
7
8
9
10
10:59:05 SYS@ test3 >startup nomount;
ORACLE instance started.
Total System Global Area  313860096 bytes
Fixed Size                  1336232 bytes
Variable Size             213912664 bytes
Database Buffers           92274688 bytes
Redo Buffers                6336512 bytes
 
10:59:41 SYS@ test3 >@/home/oracle/crctr.sql
Control file created.

3、告警日志

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
......
CREATE CONTROLFILE REUSE DATABASE  "TEST3"  NORESETLOGS  NOARCHIVELOG
     MAXLOGFILES 10
     MAXLOGMEMBERS 5
     MAXDATAFILES 300
     MAXINSTANCES 1
     MAXLOGHISTORY 292
LOGFILE
   GROUP 1  '/u01/app/oracle/oradata/test3/redo01a.log'   SIZE 100M BLOCKSIZE 512,
   GROUP 2  '/u01/app/oracle/oradata/test3/redo02a.log'   SIZE 100M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
   '/u01/app/oracle/oradata/test3/system01.dbf' ,
   '/u01/app/oracle/oradata/test3/sysaux01.dbf' ,
   '/u01/app/oracle/oradata/test3/undotbs01.dbf' ,
   '/u01/app/oracle/oradata/test3/users01.dbf'
CHARACTER SET ZHS16GBK
WARNING: Default Temporary Tablespace not specified  in  CREATE DATABASE command
Default Temporary Tablespace will be necessary  for  a locally managed database  in  future release
Wed Jan 07 11:00:02 2015
Successful mount of redo thread 1, with mount id 991126251
 
Completed: CREATE CONTROLFILE REUSE DATABASE  "TEST3"  NORESETLOGS  NOARCHIVELOG
     MAXLOGFILES 10
     MAXLOGMEMBERS 5
     MAXDATAFILES 300
     MAXINSTANCES 1
     MAXLOGHISTORY 292
LOGFILE
   GROUP 1  '/u01/app/oracle/oradata/test3/redo01a.log'   SIZE 100M BLOCKSIZE 512,
   GROUP 2  '/u01/app/oracle/oradata/test3/redo02a.log'   SIZE 100M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
   '/u01/app/oracle/oradata/test3/system01.dbf' ,
   '/u01/app/oracle/oradata/test3/sysaux01.dbf' ,
   '/u01/app/oracle/oradata/test3/undotbs01.dbf' ,
   '/u01/app/oracle/oradata/test3/users01.dbf'
CHARACTER SET ZHS16GBK
Wed Jan 07 11:00:59 2015
......

3、查看数据库状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
11:00:03 SYS@ test3 >select status from v$instance;
STATUS
------------
MOUNTED
 
11:00:27 SYS@ test3 >select file#,name ,checkpoint_change# from v$datafile;
      FILE # NAME                                               CHECKPOINT_CHANGE#
---------- -------------------------------------------------- ------------------
          1 /u01/app/oracle/oradata/test3/system01.dbf                     333365
          2 /u01/app/oracle/oradata/test3/sysaux01.dbf                     333365
          3 /u01/app/oracle/oradata/test3/undotbs01.dbf                    333365
          4 /u01/app/oracle/oradata/test3/users01.dbf                      333365
 
11:00:46 SYS@ test3 >select file#,name ,checkpoint_change# from v$datafile_header;
      FILE # NAME                                               CHECKPOINT_CHANGE#
---------- -------------------------------------------------- ------------------
          1 /u01/app/oracle/oradata/test3/system01.dbf                     333365
          2 /u01/app/oracle/oradata/test3/sysaux01.dbf                     333365
          3 /u01/app/oracle/oradata/test3/undotbs01.dbf                    333365
          4 /u01/app/oracle/oradata/test3/users01.dbf                      333365

4、打开数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
11:00:54 SYS@ test3 >alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1:  '/u01/app/oracle/oradata/test3/system01.dbf'
 
---打开数据库报错,需要做“media recovery”
 
执行介质恢复:
由于本库为非归档模式,只能通过current redolog来恢复
 
查看当前日志组:
[oracle@rh6 ~]$ sqlplus  '/as sysdba'
SQL*Plus: Release 11.2.0.1.0 Production on Wed Jan 7 11:02:12 2015
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
 
11:02:12 SYS@ test3 >select member from v$logfile;
 
MEMBER
------------------------------------------------------------------------------------------------------------------------
/u01/app/oracle/oradata/test3/redo01a. log
/u01/app/oracle/oradata/test3/redo02a. log
 
11:02:22 SYS@ test3 >select group#,sequence#,status from v$ log ;
 
     GROUP#  SEQUENCE# STATUS
---------- ---------- ----------------
          2         12 INACTIVE
          1         13 CURRENT
 
 
11:00:59 SYS@ test3 >recover database until cancel;
ORA-00279: change 333365 generated at 01/07/2015 10:30:26 needed  for  thread  1
ORA-00289: suggestion : /u01/app/oracle/product/11.2.0/db_1/dbs/arch1_13_868275293.dbf
ORA-00280: change 333365  for  thread  1 is in sequence #13
11:01:42 Specify  log : {<RET>=suggested | filename | AUTO | CANCEL}
/u01/app/oracle/oradata/test3/redo01a. log
Log applied.
Media recovery complete.
---恢复完成!
 
11:02:46 SYS@ test3 >alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option  for  database open
Elapsed: 00:00:00.01
 
11:02:52 SYS@ test3 >alter database open resetlogs;
Database altered.
 
---Database open成功!

查看告警日志:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
alter database open
Errors in file /u01/app/oracle/diag/rdbms/test3/test3/trace/test3_ora_3294.trc:
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1:  '/u01/app/oracle/oradata/test3/system01.dbf'
ORA-1113 signalled during: alter database open...
Wed Jan 07 11:01:40 2015
ALTER DATABASE RECOVER  database until cancel  
Media Recovery Start
Serial Media Recovery started
ORA-279 signalled during: ALTER DATABASE RECOVER  database until cancel  ...
Wed Jan 07 11:02:44 2015
ALTER DATABASE RECOVER    LOGFILE  '/u01/app/oracle/oradata/test3/redo01a.log'  
Media Recovery Log /u01/app/oracle/oradata/test3/redo01a. log
Incomplete recovery applied all redo ever generated.
Recovery completed through change 334001  time  01/07/2015 10:51:13
Media Recovery Complete (test3)
Completed: ALTER DATABASE RECOVER    LOGFILE  '/u01/app/oracle/oradata/test3/redo01a.log'  
alter database open
Errors in file /u01/app/oracle/diag/rdbms/test3/test3/trace/test3_ora_3294.trc:
ORA-01589: must use RESETLOGS or NORESETLOGS option  for  database open
ORA-1589 signalled during: alter database open...
Wed Jan 07 11:03:04 2015
alter database open resetlogs
RESETLOGS after complete recovery through change 334001
Resetting resetlogs activation ID 990996637 (0x3b11689d)
Errors in file /u01/app/oracle/diag/rdbms/test3/test3/trace/test3_ora_3294.trc:
ORA-00367: checksum error in  log  file header
ORA-00322:  log  1 of  thread  1 is not current copy
ORA-00312: online  log  thread  1:  '/u01/app/oracle/oradata/test3/redo01a.log'
Wed Jan 07 11:03:05 2015
Errors in file /u01/app/oracle/diag/rdbms/test3/test3/trace/test3_m000_3336.trc:
ORA-00316:  log  1 of  thread  1, type 0 in header is not  log  file
ORA-00312: online  log  thread  1:  '/u01/app/oracle/oradata/test3/redo01a.log'
Errors in file /u01/app/oracle/diag/rdbms/test3/test3/trace/test3_ora_3294.trc:
ORA-00367: checksum error in  log  file header
ORA-00322:  log  2 of  thread  1 is not current copy
ORA-00312: online  log  thread  1:  '/u01/app/oracle/oradata/test3/redo02a.log'
Errors in file /u01/app/oracle/diag/rdbms/test3/test3/trace/test3_m000_3336.trc:
ORA-00316:  log  2 of  thread  1, type 0 in header is not  log  file
ORA-00312: online  log  thread  1:  '/u01/app/oracle/oradata/test3/redo02a.log'
Wed Jan 07 11:03:18 2015
Setting recovery target incarnation to 2
Wed Jan 07 11:03:20 2015
Checker run found 4  new  persistent data failures
Wed Jan 07 11:03:21 2015
Assigning activation ID 991126251 (0x3b1362eb)
Thread 1 opened at  log  sequence 1
   Current  log # 1 seq# 1 mem# 0: /u01/app/oracle/oradata/test3/redo01a. log
Successful open of redo  thread  1
Wed Jan 07 11:03:22 2015
MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
Wed Jan 07 11:03:23 2015
SMON: enabling cache recovery
Successfully onlined Undo Tablespace 2.
Dictionary check beginning
Tablespace  'TEMPTS1'  #3 found in data dictionary,
but not in the controlfile. Adding to controlfile.
Dictionary check complete
Verifying file header compatibility  for  11g tablespace encryption..
Verifying 11g file header compatibility  for  tablespace encryption completed
SMON: enabling tx recovery
*********************************************************************
WARNING: The following temporary tablespaces contain no files.
          This condition can occur when a backup controlfile has
          been restored.  It may be necessary to add files to these
          tablespaces.  That can be done  using  the SQL statement:
  
          ALTER TABLESPACE <tablespace_name> ADD TEMPFILE
  
          Alternatively,  if  these temporary tablespaces are no longer
          needed, then they can be dropped.
            Empty temporary tablespace: TEMPTS1
*********************************************************************
Database Characterset is ZHS16GBK
No Resource Manager plan active
replication_dependency_tracking turned off (no async multimaster replication found)
Starting background process QMNC
Wed Jan 07 11:03:27 2015
QMNC started with pid=19, OS id=3341 
LOGSTDBY: Validating controlfile with logical metadata
LOGSTDBY: Validation complete
Completed: alter database open resetlogs
Wed Jan 07 11:13:27 2015
Starting background process SMCO
Wed Jan 07 11:13:27 2015
SMCO started with pid=22, OS id=3382

---至此,通过trace脚本,重建控制文件成功!











本文转自 客居天涯 51CTO博客,原文链接:http://blog.51cto.com/tiany/1600356,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
存储 SQL Java
数据存储使用文件还是数据库,哪个更合适?
数据库和文件系统各有优劣:数据库读写性能较低、结构 rigid,但具备计算能力和数据一致性保障;文件系统灵活易管理、读写高效,但缺乏计算能力且无法保证一致性。针对仅需高效存储与灵活管理的场景,文件系统更优,但其计算短板可通过开源工具 SPL(Structured Process Language)弥补。SPL 提供独立计算语法及高性能文件格式(如集文件、组表),支持复杂计算与多源混合查询,甚至可替代数据仓库。此外,SPL 易集成、支持热切换,大幅提升开发运维效率,是后数据库时代文件存储的理想补充方案。
|
7月前
|
存储 NoSQL MongoDB
数据库数据恢复—MongoDB数据库迁移过程中丢失文件的数据恢复案例
某单位一台MongoDB数据库由于业务需求进行了数据迁移,数据库迁移后提示:“Windows无法启动MongoDB服务(位于 本地计算机 上)错误1067:进程意外终止。”
|
10月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的控制文件与归档日志文件
本文介绍了Oracle数据库中的控制文件和归档日志文件。控制文件记录了数据库的物理结构信息,如数据库名、数据文件和联机日志文件的位置等。为了保护数据库,通常会进行控制文件的多路复用。归档日志文件是联机重做日志文件的副本,用于记录数据库的变更历史。文章还提供了相关SQL语句,帮助查看和设置数据库的日志模式。
238 1
【赵渝强老师】Oracle的控制文件与归档日志文件
|
9月前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
9月前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
10月前
|
SQL Oracle 关系型数据库
Oracle 从 DMP 文件中恢复指定表的步骤
Oracle 从 DMP 文件中恢复指定表的步骤
866 7
|
10月前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
10月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle的参数文件与告警日志文件
本文介绍了Oracle数据库的参数文件和告警日志文件。参数文件分为初始化参数文件(PFile)和服务器端参数文件(SPFile),在数据库启动时读取并分配资源。告警日志文件记录了数据库的重要活动、错误和警告信息,帮助诊断问题。文中还提供了相关视频讲解和示例代码。
222 1
|
2月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
2月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle RMAN的目录数据库
Oracle RMAN默认将备份元信息存储在控制文件中,但控制文件损坏或丢失会导致恢复失败,且备份增多会使控制文件无限增长。为解决这些问题,Oracle引入了RMAN目录数据库(Catalog Database),专门用于存储RMAN备份的元信息。使用目录数据库可提升备份管理效率,支持多数据库共享、长期备份历史记录存储,并可保存RMAN脚本。本文详细介绍了如何创建目录数据库、注册目标数据库及其操作步骤。

热门文章

最新文章

推荐镜像

更多