在执行恢复后,应该检查数据库的alert文件,看是否出现控制文件中的数据文件名称和数据字典中数据文件名称无法一一对应的现象。

这篇文章描述通过RESETLOGS方式打开数据库时,如果发现不一致情况及解决方法。

如果是利用备份的控制文件,除了数据文件的新增和删除以外,不会出现不一致的情况。这种不一致的情况更多的是出现在手工重建控制文件过程中。

SQL> CONN /@TEST AS SYSDBA

已连接。

SQL> ALTER TABLESPACE INDX READ ONLY;

表空间已更改。

SQL> ALTER TABLESPACE TOOLS OFFLINE;

表空间已更改。

SQL> SELECT 'ALTER TABLESPACE ' || TABLESPACE_NAME || ' BEGIN BACKUP;'

2 FROM DBA_TABLESPACES WHERE CONTENTS != 'TEMPORARY' AND STATUS = 'ONLINE';

'ALTERTABLESPACE'||TABLESPACE_NAME||'BEGINBACKUP;'

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

ALTER TABLESPACE SYSTEM BEGIN BACKUP;

ALTER TABLESPACE UNDOTBS1 BEGIN BACKUP;

ALTER TABLESPACE USERS BEGIN BACKUP;

ALTER TABLESPACE YANGTK BEGIN BACKUP;

SQL> ALTER TABLESPACE SYSTEM BEGIN BACKUP;

表空间已更改。

SQL> ALTER TABLESPACE UNDOTBS1 BEGIN BACKUP;

表空间已更改。

SQL> ALTER TABLESPACE USERS BEGIN BACKUP;

表空间已更改。

SQL> ALTER TABLESPACE YANGTK BEGIN BACKUP;

表空间已更改。

SQL> HOST COPY F:ORACLEORADATATEST*.DBF F:ORACLEBACKUPTEST20060307

SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE RESETLOGS;

数据库已更改。

SQL> SELECT 'ALTER TABLESPACE ' || TABLESPACE_NAME || ' END BACKUP;'

2 FROM DBA_TABLESPACES WHERE CONTENTS != 'TEMPORARY' AND STATUS = 'ONLINE';

'ALTERTABLESPACE'||TABLESPACE_NAME||'ENDBACKUP;'

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

ALTER TABLESPACE SYSTEM END BACKUP;

ALTER TABLESPACE UNDOTBS1 END BACKUP;

ALTER TABLESPACE USERS END BACKUP;

ALTER TABLESPACE YANGTK END BACKUP;

SQL> ALTER TABLESPACE SYSTEM END BACKUP;

表空间已更改。

SQL> ALTER TABLESPACE UNDOTBS1 END BACKUP;

表空间已更改。

SQL> ALTER TABLESPACE USERS END BACKUP;

表空间已更改。

SQL> ALTER TABLESPACE YANGTK END BACKUP;

表空间已更改。

假设在恢复过程中,发现丢失了所有控制文件和备份的控制文件。那么需要手工重建控制文件,而这时候手工重建控制文件可能会遗漏部分数据文件。

创建控制文件的脚本应该如下:

CREATE CONTROLFILE REUSE DATABASE "TEST" RESETLOGSARCHIVELOG

MAXLOGFILES 50

MAXLOGMEMBERS 5

MAXDATAFILES 100

MAXINSTANCES 1

MAXLOGHISTORY 680

LOGFILE

GROUP 1 'F:ORACLEORADATATESTREDO01.LOG'SIZE 100M,

GROUP 2 'F:ORACLEORADATATESTREDO02.LOG'SIZE 100M,

GROUP 3 'F:ORACLEORADATATESTREDO03.LOG'SIZE 100M

DATAFILE

'F:ORACLEORADATATESTSYSTEM01.DBF',

'F:ORACLEORADATATESTUNDOTBS01.DBF',

'F:ORACLEORADATATESTUSERS01.DBF',

'F:ORACLEORADATATESTYANGTK01.DBF'

CHARACTER SET ZHS16GBK

;

但是由于没有将脚本保存到trace文件中,而完全通过手工创建。因此,在创建的时候丢失了USERS01.DBF。

SQL> SHUTDOWN IMMEDIATE

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> HOST DEL F:ORACLEORADATATEST*.CTL

SQL> HOST COPY F:ORACLEBACKUPTEST20060307* F:ORACLEORADATATEST

SQL> STARTUP NOMOUNT

ORACLE 例程已经启动。

Total System Global Area 76619308 bytes

Fixed Size 454188 bytes

Variable Size 50331648 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

SQL> CREATE CONTROLFILE REUSE DATABASE "TEST" RESETLOGS ARCHIVELOG

2 MAXLOGFILES 50

3 MAXLOGMEMBERS 5

4 MAXDATAFILES 100

5 MAXINSTANCES 1

6 MAXLOGHISTORY 680

7 LOGFILE

8 GROUP 1 'F:ORACLEORADATATESTREDO01.LOG' SIZE 100M,

9 GROUP 2 'F:ORACLEORADATATESTREDO02.LOG' SIZE 100M,

10 GROUP 3 'F:ORACLEORADATATESTREDO03.LOG' SIZE 100M

11 DATAFILE

12 'F:ORACLEORADATATESTSYSTEM01.DBF',

13 'F:ORACLEORADATATESTUNDOTBS01.DBF',

14 'F:ORACLEORADATATESTYANGTK01.DBF'

15 CHARACTER SET ZHS16GBK

16 ;

控制文件已创建

SQL> RECOVER DATABASE USING BACKUP CONTROLFILE

ORA-00279: ?? 46320665 (? 03/08/2006 02:49:29 ??) ???? 1 ????

ORA-00289: ??: F:ORACLEORADATATESTARCHIVEARC00001.001

ORA-00280: ?? 46320665 ???? 1 ???? # 1 ???

指定日志: {=suggested | filename | AUTO | CANCEL}

F:ORACLEORADATATESTREDO03.LOG

已应用的日志。

完成介质恢复。

SQL> ALTER DATABASE OPEN RESETLOGS;

数据库已更改。

SQL> SELECT NAME FROM V$DATAFILE;

NAME

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

F:ORACLEORADATATESTSYSTEM01.DBF

F:ORACLEORADATATESTUNDOTBS01.DBF

F:ORACLEORACLE920DATABASEMISSING00003

F:ORACLEORACLE920DATABASEMISSING00004

F:ORACLEORACLE920DATABASEMISSING00005

F:ORACLEORADATATESTYANGTK01.DBF

已选择6行。

SQL> COL FILE_NAME FORMAT A50

SQL> SELECT FILE_NAME, TABLESPACE_NAME FROM DBA_DATA_FILES;

FILE_NAME TABLESPACE_NAME

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

F:ORACLEORADATATESTSYSTEM01.DBF SYSTEM

F:ORACLEORADATATESTUNDOTBS01.DBF UNDOTBS1

F:ORACLEORACLE920DATABASEMISSING00003 INDX

F:ORACLEORACLE920DATABASEMISSING00004 TOOLS

F:ORACLEORACLE920DATABASEMISSING00005 USERS

F:ORACLEORADATATESTYANGTK01.DBF YANGTK

已选择6行。

从上面的数据字典可以看到,存在不正常的表空间和数据文件。也可以从alert日志中得到相应的信息。

Dictionary check beginning

Tablespace 'TEMP' #2 found in data dictionary,

but not in the controlfile. Adding to controlfile.

Tablespace 'INDX' #3 found in data dictionary,

but not in the controlfile. Adding to controlfile.

Tablespace 'TOOLS' #4 found in data dictionary,

but not in the controlfile. Adding to controlfile.

Tablespace 'USERS' #5 found in data dictionary,

but not in the controlfile. Adding to controlfile.

File #3 found in data dictionary but not in controlfile.

Creating OFFLINE file 'MISSING00003' in the controlfile.

File #4 found in data dictionary but not in controlfile.

Creating OFFLINE file 'MISSING00004' in the controlfile.

File #5 found in data dictionary but not in controlfile.

Creating OFFLINE file 'MISSING00005' in the controlfile.

This file can no longer be recovered so it must be dropped.

Dictionary check complete

由于TOOLS表空间在备份之前就正常脱机了。因此,TOOLS表空间不需要额外的恢复,将数据文件直接RENAME就可以了。

SQL> ALTER DATABASE RENAME FILE 'F:ORACLEORACLE920DATABASEMISSING00004'

2 TO 'F:ORACLEORADATATESTTOOLS01.DBF';

数据库已更改。

INDX表空间在备份之前就处于只读状态,因此不需要进行恢复,RENAME后ONLINE就可以了。

SQL> ALTER DATABASE RENAME FILE 'F:ORACLEORACLE920DATABASEMISSING00003'

2 TO 'F:ORACLEORADATATESTINDX01.DBF';

数据库已更改。

SQL> ALTER TABLESPACE INDX ONLINE;

表空间已更改。

SQL> SELECT STATUS FROM DBA_TABLESPACES WHERE TABLESPACE_NAME = 'INDX';

STATUS

---------

READ ONLY

对于临时表空间,直接增加临时文件就可以了。

SQL> ALTER TABLESPACE TEMP ADD TEMPFILE 'F:ORACLEORADATATESTTEMP01.DBF' SIZE 40M REUSE;

表空间已更改。

但是,对于表空间USERS,由于没有被添加到控制文件中,且数据库以RESETLOGS方式打开,用来恢复表空间的日志已经被重置,因此只能将表空间删除。

SQL> ALTER DATABASE RENAME FILE 'F:ORACLEORACLE920DATABASEMISSING00005'

2 TO 'F:ORACLEORADATATESTUSERS01.DBF';

数据库已更改。

SQL> ALTER TABLESPACE USERS ONLINE;

ALTER TABLESPACE USERS ONLINE

*

ERROR 位于第 1 行:

ORA-01190: ?????????5??????? RESETLOGS ??

ORA-01110: ???? 5: 'F:ORACLEORADATATESTUSERS01.DBF'

SQL> RECOVER TABLESPACE USERS;

ORA-00283: ??????????

ORA-01190: ?????????5??????? RESETLOGS ??

ORA-01110: ???? 5: 'F:ORACLEORADATATESTUSERS01.DBF'

SQL> DROP TABLESPACE USERS INCLUDING CONTENTS AND DATAFILES;

表空间已丢弃。

一旦重建控制文件中没有包含需要恢复的表空间,且以RESETLOGS方式打开了数据库,则被遗漏的表空间无法在正常联机,只能从数据库中删除。因此,控制文件的备份和重建操作一定要谨慎。

数据字典恢复mysql数据_恢复之数据字典和控制文件不一致的恢复(一)相关推荐

  1. Oracle数据库断电致使控制文件不一致的恢复方法

    一. 数据库断电致使控制文件不一致的恢复方法 数据库服务器意外断电出现ORA-00600[kcratr_nab_less_than_odr],不能open数据库 1.open数据库报ORA-00600 ...

  2. innobackupex和Xtrabackup备份和恢复MySQL数据

    innobackupex备份和恢复MySQL数据 当MySQL数据量很小时,我们可以使用mysqldump来备份,无论是myisam引擎还是innodb引擎都是没有问题的. 但数据量很大,比如上百GB ...

  3. mysql is not empty_MySQL数据库之Xtrabackup恢复mysql数据时候报错:Original data directory is not empty!...

    本文主要向大家介绍了MySQL数据库之Xtrabackup恢复mysql数据时候报错:Original data directory is not empty! ,通过具体的内容向大家展现,希望对大家 ...

  4. 计算机清理垃圾文件丢失怎么恢复,清理电脑后怎样恢复丢失数据_电脑数据恢复_迷你兔...

    清理电脑后怎样恢复丢失数据_电脑数据恢复_迷你兔 分类:数据恢复常见问题|最后更新:2019年5月10日 许多人会有规划地对自己的电脑进行清理工作,这么做的原因有可能是电脑垃圾文件太多,也可能是电脑剩 ...

  5. oracle日志文件打开,oracle日志文件和控制文件损坏的恢复

    oracle日志文件和控制文件损坏的恢复 恢复步骤: 1.加入_allow_resetlogs_corruption=true,_corrupted_rollback_segments=true,_o ...

  6. mysql binlog 备份_偷偷的删表删库,跑路之前,尝试用binlog恢复MySQL数据

    一. Binlog二进制日志: MySQL的二进制日志binlog可以说是MySQL最重要的日志,它记录了所有的DDL和DML语句(所有的写入,除了(读)数据查询语句select),以事件形式记录,还 ...

  7. mysql拷贝恢复.frm_通过.frm .ibd文件恢复MySQL数据

    重新安装完mysql,当我初始化MySQL的时候,报错提示以前的数据目录还存在着,于是把之前的数据拷贝到其他目录,然后初始化成功.由于以前的数据还存在,我便想将以前的数据迁移的刚安装的MySQL中. ...

  8. mysqlbinlog 恢复mysql数据

    确保my.cnf启动了 log-bin (既log-bin=mysql-bin) mysql> show master status;   #查看使用的那个logbin文件 mysql> ...

  9. MYSQL专题-使用Binlog日志恢复MySQL数据

    大家有没有碰到过由于误操作把测试数据库的一张表给删除了,导致测试的数据都被删除了,然后手足无措,测试把你一定数落,顿时感觉自己要死了?今天就教你即使误删了也可以将删除的数据恢复,以后误删再也不用惊吓了 ...

最新文章

  1. Eclipse link方式安装反编译插件
  2. 正确理解python中二分查找
  3. 你对JVM三色标记的理解嘛?
  4. Cactoos中的面向对象的声明式输入/输出
  5. 基于LAMP的cacti安装和配置问题处理(一)
  6. txt文档转excel方法
  7. easyui datagrid deleteRow(删除行)的BUG!
  8. 扫地机器人的构造及核心技术详解
  9. Doris安装问题记录连续更新
  10. 符号“∑”和“Π”的用法。
  11. 求矩阵特征值和特征向量
  12. 英语八年级上册计算机的事实,人教版英语|八年级上册各单元必考知识点汇总,收藏!...
  13. 疫情专供8个网站,可攻可守不破防,让你工作、学习效率加倍
  14. 如何建设网上订货商城系统 订货系统建设流程分享
  15. 690. Employee Importance
  16. Maven的使用与配置,阿里P7亲自讲解
  17. corspost请求失败_记一次 CORS 跨域请求出现 OPTIONS 请求的问题及解决方法
  18. 春季 3 月 · CSM 认证周末班【提前报名特惠】“全球金牌课程”CST 导师亲授
  19. 计算机毕设Node.js+Vue智能导诊系统(程序+LW+部署)
  20. iMeta | 厦门大学马永慧组探究捐菌者对肠菌移植的伦理认知和态度

热门文章

  1. java类的运行顺序_Java语言类的基本运行顺序
  2. 备战2022秋季“金三银四”跳槽必备:软件测试面试题,贡献给需要的小伙伴,最后有惊喜哦
  3. html5控件组合,[Vue 3] 教程 – 可复用与组合 – 插件
  4. mysql棋牌管理_棋牌架构DB服务(Mysql+Redis)数据存储演进笔记
  5. matlab sperman相关,相关系数
  6. 4、kubernetes 集群管理工具 kubectl
  7. cni k8s 插件安装_第一次,如此清晰脱俗的直解K8S网络
  8. malloc开辟的空间在哪一个区间_C++进阶系列之STL(2)SGI版本空间配置器
  9. git钩子放服务器_服务器git钩子
  10. 路由与交换大作业pkt_干货 | 交换机“练功大法”——略有小成(一)