设为首页 收藏本站
查看: 607|回复: 0

[经验分享] RMAN备份与恢复之可脱机数据文件丢失

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-1-16 08:42:31 | 显示全部楼层 |阅读模式
一 表空间讲解

        在上一篇文章(RMAN备份与恢复之控制文件丢失),我们讲解了控制文件丢失并且RMAN中有备份怎么处理,这篇文章讲解可脱机数据文件丢失的处理。

        表空间是一种逻辑结构,表空间下可以存放数据文件。表空间有系统表空间(SYSTEM)、辅助表空间(SYSAUX)、用户表空间(USERS)、回退表空间(UNDOTBS1)、临时表空间(TEMP)、测试表空间(EXAMPLE)、数据表空间。其中系统表空间用于存储数据字典的信息,不能脱机,不能只读,也不能改名。辅助表空间用于存储一些工具以及一些常用的组件,10G开始引入,不能脱机,可以只读,可以改名。用户表空间用于存储用户数据的表空间,可以脱机,可以只读,可以改名。回退表空间用于存储DML操作的事务信息,不能脱机,不能只读,可以改名。临时表空间用于存放临时数据,不能脱机,不能只读,可以改名。数据表空间用于存放自定义数据,项目中我们一般创建数据表空间,数据存放在数据表空间,这是一种很好的做法,切忌把数据放在默认的USERS表空间。

        至于有些表空间可以脱机,有些不可以。那是因为数据库在运行期间需要向这些表空间写入数据,比如系统表空间、辅助表空间、回退表空间、临时表空间,而用户表空间、测试表空间、数据表空间不同,只要没有对这些表空间进行操作,是可以脱机的。

二 备份与恢复可脱机数据文件讲解

        备份与恢复可脱机数据文件,首先我们要使用RMAN做一个备份全库的操作,然后模拟USERS表空间丢失,此时我们查看数据会提示数据文件找不到。因为USERS表空间可以脱机,所以我们可以在SQL Plus中使USERS表空间离线,切记要先离线再进行下面的操作。因为在RMAN中我们有备份,所以我们可以在RMAN中对USERS表空间对应的数据文件编号进行还原,实际上后台就行进行了一个拷贝操作。还原成功后,我们需要对USERS表空间对应的数据文件编号进行恢复,等待恢复完成后,再在SQL Plus中使USERS表空间在线,所有的操作完成后,USERS表空间备份与恢复完成,我们可以对数据进行访问,测试是否恢复成功。需要注意的是,使表空间在线、离线、还原和恢复数据文件一些列的操作切记不要把编号弄错了,做这些操作应该确认USERS表空间的编号,默认是4号,但是由于后期的修改,USERS表空间数据文件的编号很不能不是4号。作为DBA,需要时刻保持谨慎!

三 模拟

Step1,RMAN中备份全库,并在SQL Plus确定数据的正确性
RMAN> BACKUP DATABASE;

Starting backup at 12-DEC-13
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/oracle/oradata/justdb/system01.dbf
input datafile file number=00002 name=/u01/oracle/oradata/justdb/sysaux01.dbf
input datafile file number=00003 name=/u01/oracle/oradata/justdb/undotbs01.dbf
input datafile file number=00004 name=/u01/oracle/oradata/justdb/users01.dbf
channel ORA_DISK_1: starting piece 1 at 12-DEC-13
channel ORA_DISK_1: finished piece 1 at 12-DEC-13
piece handle=/u01/oracle/fast_recovery_area/JUSTDB/backupset/2013_12_12/o1_mf_nnndf_TAG20131212T095816_9bl61rrn_.bkp tag=TAG20131212T095816 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 12-DEC-13
channel ORA_DISK_1: finished piece 1 at 12-DEC-13
piece handle=/u01/oracle/fast_recovery_area/JUSTDB/backupset/2013_12_12/o1_mf_ncsnf_TAG20131212T095816_9bl62lw2_.bkp tag=TAG20131212T095816 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 12-DEC-13

[oracle@orcl backupset]$ ll 2013_12_12/
total 1025556
-rw------- 1 oracle oinstall    9830400 Dec 12 09:58 o1_mf_ncsnf_TAG20131212T095816_9bl62lw2_.bkp
-rw------- 1 oracle oinstall 1040334848 Dec 12 09:58 o1_mf_nnndf_TAG20131212T095816_9bl61rrn_.bkp

RMAN> LIST BACKUP;


List of Backup Sets
===================


BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
14      Full    992.13M    DISK        00:00:19     12-DEC-13      
        BP Key: 14   Status: AVAILABLE  Compressed: NO  Tag: TAG20131212T095816
        Piece Name: /u01/oracle/fast_recovery_area/JUSTDB/backupset/2013_12_12/o1_mf_nnndf_TAG20131212T095816_9bl61rrn_.bkp
  List of Datafiles in backup set 14
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  1       Full 1088247    12-DEC-13 /u01/oracle/oradata/justdb/system01.dbf
  2       Full 1088247    12-DEC-13 /u01/oracle/oradata/justdb/sysaux01.dbf
  3       Full 1088247    12-DEC-13 /u01/oracle/oradata/justdb/undotbs01.dbf
  4       Full 1088247    12-DEC-13 /u01/oracle/oradata/justdb/users01.dbf

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
15      Full    9.36M      DISK        00:00:01     12-DEC-13      
        BP Key: 15   Status: AVAILABLE  Compressed: NO  Tag: TAG20131212T095816
        Piece Name: /u01/oracle/fast_recovery_area/JUSTDB/backupset/2013_12_12/o1_mf_ncsnf_TAG20131212T095816_9bl62lw2_.bkp
  SPFILE Included: Modification time: 12-DEC-13
  SPFILE db_unique_name: JUSTDB
  Control File Included: Ckp SCN: 1088267      Ckp time: 12-DEC-13

SQL> CONN SCOTT/tiger;
Connected.
SQL> SELECT * FROM tab;

TNAME            TABTYPE  CLUSTERID
------------------------------ ------- ----------
BONUS            TABLE
DEPT             TABLE
EMP            TABLE
SALGRADE           TABLE

Step2,SQL Plus中删除USERS表空间,模拟USERS表空间丢失
SQL> HO mv /u01/oracle/oradata/justdb/users01.dbf /opt/learn/

Step 3,scott用户查看数据失败
SQL> CONN SCOTT/tiger;
Connected.
SQL> DESC dept;
ERROR:
ORA-01116: error in opening database file 4
ORA-01110: data file 4: '/u01/oracle/oradata/justdb/users01.dbf'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

Step4,SQL Plus中使第4号数据文件离线
SQL> CONN / AS SYSDBA;
Connected.
SQL> ALTER DATABASE DATAFILE 4 OFFLINE;

Database altered.

Step5,RMAN中还原4号数据文件
RMAN> RESTORE DATAFILE 4;

Starting restore at 12-DEC-13
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=1 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 00004 to /u01/oracle/oradata/justdb/users01.dbf
channel ORA_DISK_1: reading from backup piece /u01/oracle/fast_recovery_area/JUSTDB/backupset/2013_12_12/o1_mf_nnndf_TAG20131212T095816_9bl61rrn_.bkp
channel ORA_DISK_1: piece handle=/u01/oracle/fast_recovery_area/JUSTDB/backupset/2013_12_12/o1_mf_nnndf_TAG20131212T095816_9bl61rrn_.bkp tag=TAG20131212T095816
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 12-DEC-13

Step6,RMAN中恢复4号文件
RMAN> RECOVER DATAFILE 4;

Starting recover at 12-DEC-13
using channel ORA_DISK_1

starting media recovery
media recovery complete, elapsed time: 00:00:00

Finished recover at 12-DEC-13

Step7,SQL Plus中使4号数据文件在线
SQL> ALTER DATABASE DATAFILE 4 ONLINE;

Database altered.

Step8,SQL Plus中查看数据
SQL> CONN SCOTT/tiger;
Connected.
SQL> DESC dept;
Name             Null?    Type
----------------------------------------- -------- ----------------------------
DEPTNO            NOT NULL NUMBER(2)
DNAME                VARCHAR2(14)
LOC                VARCHAR2(13)

SQL> SELECT * FROM dept;

    DEPTNO DNAME    LOC
---------- -------------- -------------
  10 ACCOUNTING   NEW YORK
  20 RESEARCH   DALLAS
  30 SALES    CHICAGO
  40 OPERATIONS   BOSTON

四 相关文章

RMAN备份与恢复之控制文件丢失


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-14267-1-1.html 上篇帖子: ORA-27125: unable to create shared memory segment 下篇帖子: Oracle报ORA-01722错误的排查经验
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表