热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

非归档下oracle的备份和恢复

数据库处于非归档状态,其联机日志循环覆盖使用,这意味着如果数据库需要进行介质恢复应用相关归档,又由于非归档导致归档文件不存在,那么此时数据库只能执行..

数据库处于非归档状态,其联机日志循环覆盖使用,这意味着如果数据库需要进行介质恢复应用相关归档,又由于非归档导致归档文件不存在,那么此时数据库只能执行..

数据库处于非归档状态,其联机日志循环覆盖使用,这意味着如果数据库需要进行介质恢复应用相关归档,又由于非归档导致归档文件不存在,那么此时数据库只能执行基于取消的恢复,回退整个数据库到上一次全备份状态。或者修改数据文件头部信息,来规避缺失归档。但不管怎么样都会丢失数据。

下面介绍非归档模式下几种常见故障处理方法。

一 非归档下的常用备份和恢复方法:

如何备份

Backing Up a Database in NOARCHIVELOG Mode You can only backup a database in NOARCHIVELOG mode when the database is closed and in a consistent state.

1 shutdown immediate

2 startup mount

3 backup database

如何恢复

注意 和归档模式下的恢复有如下不同点:

1 Only consistent backups can be used in restoring a database in NOARCHIVELOG mode.

2 Media recovery is not possible because no archived redo logs exist.

恢复步骤如下:

1 startup force mount;

2 restore database;

3 recover database until cancel;

4 alter database open resetlogs;

举例如下:

备份

SQL> archive log list;

Database log mode No Archive Mode

Automatic archival Disabled

Archive destination /oracle/archive

Oldest online log sequence 1

Current log sequence 2

RMAN> shutdown immediate;

using target database control file instead of recovery catalog

database closed

database dismounted

Oracle instance shut down

RMAN> startup mount;

connected to target database (not started)

Oracle instance started

database mounted

Total System Global Area 1252663296 bytes

Fixed Size 2226072 bytes

Variable Size 1006635112 bytes

Database Buffers 234881024 bytes

Redo Buffers 8921088 bytes

RMAN> backup database;

Starting backup at 2013-02-03 13:26:36

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=63 device type=DISK

allocated channel: ORA_DISK_2

channel ORA_DISK_2: SID=129 device type=DISK

channel ORA_DISK_1: starting full datafile backup set

channel ORA_DISK_1: specifying datafile(s) in backup set

input datafile file number=00004 name=/backup/users01.dbf

input datafile file number=00003 name=/oracle/CRM/undotbs3.dbf

input datafile file number=00006 name=/oracle/CRM/erp.dbf

input datafile file number=00007 name=/oracle/CRM/user01.dbf

channel ORA_DISK_1: starting piece 1 at 2013-02-03 13:26:38

channel ORA_DISK_2: starting full datafile backup set

channel ORA_DISK_2: specifying datafile(s) in backup set

input datafile file number=00001 name=/oracle/CRM/system01.dbf

input datafile file number=00002 name=/oracle/CRM/sysaux01.dbf

input datafile file number=00005 name=/oracle/CRM/pos.dbf

channel ORA_DISK_2: starting piece 1 at 2013-02-03 13:26:39

channel ORA_DISK_1: finished piece 1 at 2013-02-03 13:29:36

piece handle=/backup/20130203_fro11v4d_1_1 tag=TAG20130203T132637 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:02:59

channel ORA_DISK_2: finished piece 1 at 2013-02-03 13:29:38

piece handle=/backup/20130203_fso11v4e_1_1 tag=TAG20130203T132637 comment=NONE

channel ORA_DISK_2: backup set complete, elapsed time: 00:02:59

Finished backup at 2013-02-03 13:29:38

Starting Control File and SPFILE Autobackup at 2013-02-03 13:29:38

piece handle=/backup/c-3599153036-20130203-00 comment=NONE

Finished Control File and SPFILE Autobackup at 2013-02-03 13:29:41

恢复

RMAN> startup force mount;

Oracle instance started

database mounted

Total System Global Area 1252663296 bytes

Fixed Size 2226072 bytes

Variable Size 1006635112 bytes

Database Buffers 234881024 bytes

Redo Buffers 8921088 bytes

RMAN> restore database;

Starting restore at 2013-02-03 16:13:04

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=63 device type=DISK

allocated channel: ORA_DISK_2

channel ORA_DISK_2: SID=129 device type=DISK

channel ORA_DISK_1: starting datafile backup set restore

channel ORA_DISK_1: specifying datafile(s) to restore from backup set

channel ORA_DISK_1: restoring datafile 00003 to /oracle/CRM/undotbs3.dbf

channel ORA_DISK_1: restoring datafile 00004 to /backup/users01.dbf

channel ORA_DISK_1: restoring datafile 00006 to /oracle/CRM/erp.dbf

channel ORA_DISK_1: restoring datafile 00007 to /oracle/CRM/user01.dbf

channel ORA_DISK_1: reading from backup piece /backup/20130203_fro11v4d_1_1

channel ORA_DISK_2: starting datafile backup set restore

channel ORA_DISK_2: specifying datafile(s) to restore from backup set

channel ORA_DISK_2: restoring datafile 00001 to /oracle/CRM/system01.dbf

channel ORA_DISK_2: restoring datafile 00002 to /oracle/CRM/sysaux01.dbf

channel ORA_DISK_2: restoring datafile 00005 to /oracle/CRM/pos.dbf

channel ORA_DISK_2: reading from backup piece /backup/20130203_fso11v4e_1_1

channel ORA_DISK_1: piece handle=/backup/20130203_fro11v4d_1_1 tag=TAG20130203T132637

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:04:09

channel ORA_DISK_2: piece handle=/backup/20130203_fso11v4e_1_1 tag=TAG20130203T132637

channel ORA_DISK_2: restored backup piece 1

channel ORA_DISK_2: restore complete, elapsed time: 00:04:11

Finished restore at 2013-02-03 16:17:17

RMAN> host;

[oracle@oracle ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.2.0 Production on Sun Feb 3 16:27:12 2013

Copyright (c) 1982, 2010, Oracle. All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> recover database until cancel;

ORA-00279: change 2942346 generated at 02/03/2013 13:26:11 needed for thread 1

ORA-00289: suggestion : /oracle/archive/1_2_806264057.dbf

ORA-00280: change 2942346 for thread 1 is in sequence #2

Specify log: {=suggested | filename | AUTO | CANCEL}

cancel

Media recovery cancelled.

SQL> alter database open resetlogs;

Database altered.

SQL> select group#,archived,sequence#,status from v$Log;

GROUP# ARC SEQUENCE# STATUS

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

1 NO 1 CURRENT

2 YES 0 UNUSED

3 YES 0 UNUSED

4 YES 0 UNUSED

二 非归档无备份,单个文件丢失造成数据库无法打开

第一种方法:

SQL> startup ;

ORACLE instance started.

Total System Global Area 1252663296 bytes

Fixed Size 2226072 bytes

Variable Size 1006635112 bytes

Database Buffers 234881024 bytes

Redo Buffers 8921088 bytes

Database mounted.

ORA-01157: cannot identify/lock data file 8 - see DBWR trace file

ORA-01110: data file 8: '/oracle/CRM/test.dbf'

SQL> alter database datafile 8 offline drop;

Database altered.

SQL> alter database open;

Database altered.

SQL> alter database create datafile '/oracle/CRM/test.dbf';

Database altered.

SQL> select hxfil,fhscn,fhrba_seq from x$kcvfh;

HXFIL FHSCN FHRBA_SEQ

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

1 3078640 37

2 3078640 37

3 3078640 37

4 3078640 37

5 3078640 37

6 3078640 37

7 3078640 37

8 3077425 31

8 rows selected.

SQL> select group#,archived,sequence#,status from v$log;

GROUP# ARC SEQUENCE# STATUS

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

1 NO 37 CURRENT

2 NO 34 INACTIVE

3 NO 35 INACTIVE

4 NO 36 INACTIVE

由于是非归档则31、32、33号归档丢失,完全恢复已经不可能,只能执行基于取消的恢复,回退整个数据库。

SQL> startup force mount;

ORACLE instance started.

Total System Global Area 1252663296 bytes

Fixed Size 2226072 bytes

Variable Size 1006635112 bytes

Database Buffers 234881024 bytes

Redo Buffers 8921088 bytes

Database mounted.

SQL> recover database until cancel;

ORA-00279: change 3078640 generated at 02/20/2013 16:44:47 needed for thread 1

ORA-00289: suggestion : /oracle/archive/1_37_806501358.dbf

ORA-00280: change 3078640 for thread 1 is in sequence #37

Specify log: {=suggested | filename | AUTO | CANCEL}

cancel

ORA-10879: error signaled in parallel recovery slave

ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below

ORA-01194: file 1 needs more recovery to be consistent

ORA-01110: data file 1: '/oracle/CRM/system01.dbf

SQL> alter database open resetlogs;

alter database open resetlogs

*

ERROR at line 1:

ORA-01194: file 1 needs more recovery to be consistent

ORA-01110: data file 1: '/oracle/CRM/system01.dbf'

SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile;

System altered.

SQL> startup force mount;

ORACLE instance started.

Total System Global Area 1252663296 bytes

Fixed Size 2226072 bytes

Variable Size 1006635112 bytes

Database Buffers 234881024 bytes

Redo Buffers 8921088 bytes

Database mounted.

SQL> alter database open resetlogs;

alter database open resetlogs

*

ERROR at line 1:

ORA-01092: ORACLE instance terminated. Disconnection forced

ORA-00600: internal error code, arguments: [2662], [0], [3078648], [0],

[3078665], [4194432], [], [], [], [], [], []

Process ID: 5678

Session ID: 191 Serial number: 3

这里通过重启规避ora-600 [2662]错误

SQL> startup;

ORACLE instance started.

Total System Global Area 1252663296 bytes

Fixed Size 2226072 bytes

Variable Size 1006635112 bytes

Database Buffers 234881024 bytes

Redo Buffers 8921088 bytes

Database mounted.

Database opened.

第二种方法

SQL> startup

ORACLE instance started.

Total System Global Area 1252663296 bytes

Fixed Size 2226072 bytes

Variable Size 1006635112 bytes

Database Buffers 234881024 bytes

Redo Buffers 8921088 bytes

Database mounted.

ORA-01157: cannot identify/lock data file 8 - see DBWR trace file

ORA-01110: data file 8: '/oracle/CRM/test.dbf'

SQL> alter database create datafile '/oracle/CRM/test.dbf';

Database altered.

注意,当我们用 alter database create datafile 创建数据文件时,香港空间,数据文件头部scn以及rba.seq号均取自于该数据文件创建时控制文件中记录的scn和rba.seq号,如下:

DATA FILE #8:

name #14: /oracle/CRM/test.dbf

Creation Checkpointed at scn: 0x0000.002d4053 02/03/2013 17:02:59

thread:1 rba:(0x2.20d.10)

0x2d4053准换为10进制为2965587

rba:(0x2.20d.10)则表示seq号为2.块525.偏移量10

SQL> select hxfil,fhscn,fhrba_seq,fhrba_bno from x$kcvfh;

HXFIL FHSCN FHRBA_SEQ FHRBA_BNO

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

推荐阅读
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • SQL中UPDATE SET FROM语句的使用方法及应用场景
    本文详细介绍了SQL中UPDATE SET FROM语句的使用方法,通过具体示例展示了如何利用该语句高效地更新多表关联数据。适合数据库管理员和开发人员参考。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细介绍了HTML中标签的使用方法和作用。通过具体示例,解释了如何利用标签为网页中的缩写和简称提供完整解释,并探讨了其在提高可读性和搜索引擎优化方面的优势。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 使用C#开发SQL Server存储过程的指南
    本文介绍如何利用C#在SQL Server中创建存储过程,涵盖背景、步骤和应用场景,旨在帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 本文探讨了适用于Spring Boot应用程序的Web版SQL管理工具,这些工具不仅支持H2数据库,还能够处理MySQL和Oracle等主流数据库的表结构修改。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
author-avatar
頃刻想詤嗳伱kYU-2001
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有