Oracle备份恢复基础

来源:互联网 发布:汉字文化圈 知乎 编辑:程序博客网 时间:2024/06/03 23:56

1.1.   什么是SCN?

SCN(System ChangNumber)作为Oracle中的一个重要机制,在数据恢复、Data Guard、Streams复制、RAC节点间的同步等各个功能中起着重要作用。SCN是一个数字,确切的说是一个只会增加、不会减少的数字。所以通常又将SNC理解为Oracle的内部时钟。

在Oracle中总共有4种SCN:系统检查点(System Checkpoint)SCN、数据文件检查点(Datafile Checkpoint)SCN、结束SCN(Stop SCN)、开始SCN(Start SCN)。其中前面3种SCN存在于控制文件中,最后一种则存在于数据文件的文件头中。

当Oracle数据库每次启动时,Oracle先检查控制文件中的每个Data fileCheckpoint SCN和数据文件中的开始SCN是否相同,再检查每个Data file Checkpoint SCN和数据文件的文件头中的结束SCN是否相同。如果发现有不同,就需要从日志文件中进行恢复,这种恢复也就被称为介质恢复。

1.2.   数据库备份

1.2.1.逻辑备份

逻辑备份是指使用大家通常使用的传统数据导出工具EXP,或者Oracle10g开始出现的数据泵工具EXPDP,将数据导出成DMP格式的操作系统文件保存的备份方式。数据泵工具EXPDP虽然在导出数据的速度方面有不小的提升,但面对数百GB的数据量这两种导出数据的备份方式还是达不到速度的要求,显得力不从心。逻辑备份通常作为物理备份的补充,在诸如快速恢复单张变化不大的字典表时就有一定的意义,比如恢复ZLHIS中的“部门表”。

1.2.2.物理备份

物理备份就是转储Oracle数据库的物理文件(如数据文件、控制文件、归档日志文件等)的备份。一旦数据库发生故障,再利用这些文件进行还原。其中如我们通常使用的在安全关闭数据库的情况下复制Oracle数据库物理文件到备份磁盘的方式称作冷备份。在Oracle数据库处于打开状态,但通过Oracle数据库命令将表空间或数据库置于备份(backup)状态,然后再复制Oracle数据库物理文件到备份磁盘的方式称作热备份。热备份要求Oracle数据库运行在归档模式下。同时RMAN备份也是一种物理备份,不是对象级的逻辑备份,可以用RMAN来备份数据文件、控制文件、参数文件、归档日志文件。在数据库出现问题的时候可以通过RMAN物理备份来恢复数据库。

1.2.3.恢复原理(REDO应用)

前面我们讲了Oracle数据库的物理结构包括有数据文件、日志文件、控制文件。其中日志文件又分为联机重做日志文件和归档重做日志文件。并且也介绍日志文件的记录机制和Oracle数据库的SCN。我们这里讲的恢复原理其实质就是在以往Oracle数据库备份文件恢复的基础上,应用备份之后到当前为止的重做日志文件,使其达到快速将数据恢复到当前时间的目的。在应用重做日志恢复数据时,系统会对比重做日志中记录的SCN和待恢复数据库中的SCN。然后再根据重做日志,把其中记录的对数据库的操作再在待恢复的数据库上重现,最后将数据库恢复到当前时间。

1.2.4.完全恢复

所谓完全恢复是指Oracle在利用备份文件还原数据库后,并在此基础上应用了所使用的备份文件后所产生的归档日志和联机重做日志中所有的修改,将数据库恢复到最接近当前时间点的恢复。完全恢复(complete recovery)主要包括两个步骤:首先使用数据库、表空间或数据文件(datafile)的物理备份进行还原(restore),再使用重做日志(redo log)将数据更新到最接近当前的时间点。

 

以下示例是users表空间的数据文件users01.dbf被误删除后的恢复情况:

1.模拟表空间数据文件丢失。

SQL> conn /as sysdba

Connected.

SQL> create table t_users (idnumber) tablespace users;

Table created.

SQL> insert into t_usersselect *from dba_objects;

9478 row created.

SQL> commit;

Commit complete

$ rm -i/u01/app/oradata/ora10g/users01.dbf

rm: remove regular file`/u01/app/oradata/ora10g/users01.dbf'? y

2.模拟出故障现象。

SQL> conn /as sysdba

Connected.

SQL> create table t_users_1 (idnumber) tablespace users;

create table t_users_1 (id number)tablespace users

*

ERROR at line 1:

ORA-01116: error in opening databasefile 4

ORA-01110: data file 4: '/u01/app/oradata/ora10g/users01.dbf'

ORA-27041: unable to open file

Linux-x86_64 Error: 2: No such fileor directory

Additional information: 3

3.执行恢复,检查恢复情况。

$ rman target /

RMAN> sql "alter tablespaceusers offline immediate";

RMAN> restore tablespace users;

RMAN> recover tablespace users;

检查一下数据:

SQL> conn /as sysdba

Connected.

SQL> select count(*) fromsys.t_users;

COUNT(*)

----------

9478

1.2.5.不完全恢复

不完全恢复(incomplete recovery),平常也被称为按时间点的恢复(point-in-timerecovery),是指没有将数据库恢复到最接近当前时间点的恢复。换句话说,恢复时没有将还原所使用的备份文件之后产生的所有重做日志应用到已经还原(RESTORE)的数据库上。其中不完全恢复又分为:

Ø  基于时间点的恢复:比如从alter警告文件中查到drop table操作是什么时候发生的,恢复时就恢复到drop table前一刻,命令示例:

recover database until time 'yyyy-mm-ddhh24:mi:ss'

Ø  基于Cancel的恢复:可能中间某个归档损坏或丢失,命令示例:

recover database untill cancel

Ø  基于SCN的恢复(系统改变号),命令示例:

recover database until scn

Ø  使用备份的控制文件进行不完全恢复,命令示例:

recover database until cancel using backup control file

以下示例是基于时间点的不完全恢复:

1.模拟数据损失

$ sqlplus "/ as sysdba"

SQL*Plus: Release 10.1.0.2.0 -Production on Tue Apr 5 09:26:04 2005

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

Connected to:

Oracle Database 10g EnterpriseEdition Release 10.1.0.2.0 - 64bit Production

With the Partitioning, OLAP and DataMining options

SQL>create table t as select *from dba_objects;

Table created.

SQL>alter session set nls_date_format='yyyy-mm-ddhh24:mi:ss';

Session altered.

记录数据误删除前的时间与表中记录数。

SQL>select sysdate from dual;

SYSDATE

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

2005-04-05 09:26:55

SQL>select count(*) from t;

 COUNT(*)

----------

     9478

模拟误删除数据:

SQL>drop table t;

Table dropped.

SQL>exit

Disconnected from Oracle Database10g Enterprise Edition Release 10.1.0.2.0 - 64bit Production

With the Partitioning, OLAP and DataMining options

2.执行恢复

设置时间环境变量,执行(基于时间点)until time的不完全恢复。

$ exportNLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"

$ rman target /

Recovery Manager: Release 10.1.0.2.0- 64bit Production

Copyright (c) 1995, 2004,Oracle.  All rights reserved.

connected to target database: ORCL(DBID=1337390772)

RMAN> run {

2> set until time '2005-04-0509:26:55';

3> restore database;

4> recover database;

5> }

executing command: SET until clause

using target database controlfileinstead of recovery catalog

Starting restore at 2005-04-0509:36:51

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=160devtype=DISK

datafile 8 not processed becausefile is read-only

channel ORA_DISK_1: startingdatafile backupset restore

channel ORA_DISK_1: specifyingdatafile(s) to restore from backup set

restoring datafile 00001 to/opt/oracle/oradata/eygle/system01.dbf

………………..

media recovery complete

Finished recover at 2005-04-0509:50:42

3.恢复完成,使用RESETLOGS选项打开数据库。检查数据恢复情况。

RMAN> alter database openresetlogs;

database opened

RMAN> exit

Recovery Manager complete.

$ sqlplus '/ as sysdba'

SQL*Plus: Release 10.1.0.2.0 -Production on Tue Apr 5 09:58:00 2005

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

Connected to:

Oracle Database 10g EnterpriseEdition Release 10.1.0.2.0 - 64bit Production

With the Partitioning, OLAP and DataMining options

SYS AS SYSDBA on 2005-04-05 09:58:00>archive log list;

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     1

Next log sequence to archive   1

Current log sequence           1

SQL>select count(*) from t;

 COUNT(*)

----------

     9478

SQL>

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 win10笔记本玩lol卡怎么办 苹果笔记本密码忘了怎么办 苹果笔记本系统密码忘记了怎么办 qq加好友频繁了怎么办 淘宝买食品有问题怎么办 手机的设置图标没有了怎么办 国家创业贷款还不了会怎么办 手机mac显示:不好使.怎么办? 英雄联盟买皮肤重复怎么办 皮肤很油毛孔又粗怎么办 笔记本电脑玩英雄联盟卡怎么办 win10系统更新不动了怎么办 win7任务栏时间没了怎么办 win10桌面图标都没了怎么办 win10软件图标没了怎么办 电脑内存插板没用了怎么办 win10笔记本开不了机怎么办 cad复制东西变卡怎么办 企业网银证书过期怎么办 游戏更新网页无法正常打开怎么办 网页游戏打开说脚本错误怎么办 电脑玩游戏出现闪屏怎么办 玩游戏时出现窗口化怎么办 玩游戏时出现输入不支持怎么办 电脑玩游戏出现蓝屏怎么办 谷歌商店网页版进不去怎么办 谷歌商店为什么打不开怎么办 玩lol突然卡顿怎么办 手机上路由器管理页面打不开怎么办 苹果电脑开机页面密码打不开怎么办 逆战活动页面打不开怎么办 电脑玩lol网络卡怎么办 ios11.4qq闪退怎么办 ios11.3qq闪退怎么办 英雄联盟进入游戏界面黑屏怎么办 英雄联盟经常未响应怎么办 英雄联盟总是无响应怎么办 英雄联盟新客户端太卡怎么办 win10英雄联盟fps低怎么办 lol登游戏闪退怎么办 lol读取界面很慢怎么办