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>
- oracle备份 恢复基础
- Oracle备份恢复基础
- oracle备份,恢复基础
- Oracle备份与恢复基础--什么是备份
- Oracle备份恢复-手动备份
- Oracle备份恢复-RMAN备份
- Oracle基础(九):数据备份与恢复、死锁等
- 备份恢复基础复习
- 备份恢复基础复习
- Oracle 备份与恢复
- Oracle备份恢复
- Oracle 备份与恢复
- Oracle 备份与恢复
- Oracle备份与恢复
- Oracle备份与恢复
- oracle 物理备份恢复
- oracle备份与恢复
- Oracle备份与恢复
- PHPCMS网站转移空间教程
- 移动列表框
- 四种途径将HTML5 web应用变成android应用
- Makefile使用讲解
- 有用网址
- Oracle备份恢复基础
- ajax乱码解决方案
- 转载_linux中断之下半部
- linux的文本搜索
- 《青春依然,再见理想——献给学弟学妹》大四学生的万字忏悔书,警示学弟学妹【转】
- RAC与ASM
- 国产H.265(HEVC)解码器
- CUDA by Example 第三章 部分翻译实践 GPU器件参数提取
- AD Utilities