返回顶部
首页 > 资讯 > 数据库 >Oracle手工完全恢复案例
  • 946
分享到

Oracle手工完全恢复案例

2024-04-02 19:04:59 946人浏览 八月长安
摘要

手工完全恢复 1、完全恢复基于三个级别 recover database:所有数据文件损坏,或包括大部分datafile丢失(大面积丢失) recover tablesp


手工完全恢复

1、完全恢复基于三个级别

recover database:所有数据文件损坏,或包括大部分datafile丢失(大面积丢失)

recover tablespace:非关键表空间损坏,表空间下某些数据文件不能访问recover datafile:单一或少数数据文件损坏 (如果是系统表空间损坏,可以在mount下,使用recover datafile恢复)


2、恢复过程可以查看的视图:

v$recover_file   查看需要恢复的datafile

v$recovery_log  查看recover 需要的redo 日志

v$archvied_log  查看已经归档的日志


3、适用的场景

1recover database (所有或大部分数据文件损坏,mountopen下进行)

OS:使用cp 还原受损的dbf(不一定是全部,v$recover_file记录的都需要还原)

sqlPLUS:

①recover database;

②alter database open;


2recover tablespace (针对表空间的非关键数据文件损坏,一般是open下进行)

OS:使用cp 还原该表空间XXX下的所有数据文件

SQLPLUS:

①alter tablespace XXX offline;

②recover tablespace XXX;

③alter tablespace XXX online;


3recover datafile (单个或几个数据文件损坏,关键文件在mount下进行,非关键文件在open下进行)

第一种情形

OS:使用cp 还原相关的关键数据文件(mount)

SQLPLUS:

①recover datafile 6,8;

②alter database open;

第二种情形

OS:使用cp 还原相关的非关键数据文件(open)

SQLPLUS:

①alter database datafile 6,8 offline;

②recover datafile 6,8;

③alter database datafile 6,8 online;



目录

示例一:recover database

示例二:recover tablespace

示例三:recover datafile

情况1:关键数据文件

情况2:非关键数据文件




实验环境:

操作系统Centos7.1

数据库oracle 11.2.0.4



示例一:recover database(介质失败,丢失大量的数据文件)


1、模拟环境:

创建一个seiang表空间,在scott用户下创建一张表test


SYS@seiang11g>create tablespace seiang datafile '/u01/app/oracle/oradata/OraDB11g/seiang01.dbf' size 20M;


Tablespace created.


SYS@seiang11g>conn scott

Enter passWord:

Connected.

SCOTT@seiang11g>create table test(id number,name varchar2(10)) tablespace seiang;

Table created.


SCOTT@seiang11g>insert into test values(1,'wjq');

1 row created.


SCOTT@seiang11g>commit;

Commit complete.


SCOTT@seiang11g>select * from test;


        ID NAME

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

         1 wjq


SYS@seiang11g>shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down


干净的关闭数据库之后,操作系统下对数据库中的Datafile做一个完全冷备

[oracle@seiang11g OraDB11g]$ cp ./* /u01/app/oracle/UMAN_Backup/

[oracle@seiang11g OraDB11g]$ ll /u01/app/oracle/UMAN_Backup/    

total 2123572

-rw-r----- 1 oracle oinstall   9748480 Jul 25 11:53 control01.ctl

-rw-r----- 1 oracle oinstall 363077632 Jul 25 11:54 example01.dbf

-rw-r----- 1 oracle oinstall  52429312 Jul 25 11:54 redo01.log

-rw-r----- 1 oracle oinstall  52429312 Jul 25 11:54 redo02.log

-rw-r----- 1 oracle oinstall  52429312 Jul 25 11:54 redo03.log

-rw-r----- 1 oracle oinstall  31465472 Jul 25 11:54 rman01.dbf

-rw-r----- 1 oracle oinstall  20979712 Jul 25 11:54 seiang01.dbf

-rw-r----- 1 oracle oinstall 671096832 Jul 25 11:54 sysaux01.dbf

-rw-r----- 1 oracle oinstall 796925952 Jul 25 11:54 system01.dbf

-rw-r----- 1 oracle oinstall  30416896 Jul 25 11:54 temp01.dbf

-rw-r----- 1 oracle oinstall 110108672 Jul 25 11:54 undotbs01.dbf

-rw-r----- 1 oracle oinstall   5251072 Jul 25 11:54 users01.dbf


启动数据库

SYS@seiang11g>startup

ORACLE instance started.


Total System Global Area 1252663296 bytes

Fixed Size                  2252824 bytes

Variable Size             788533224 bytes

Database Buffers          452984832 bytes

Redo Buffers                8892416 bytes

Database mounted.

Database opened.

SYS@seiang11g>conn scott

Enter password:

Connected.

SCOTT@seiang11g>insert into test values(2,'wjq1');  //注意该条数据提交

1 row created.


SCOTT@seiang11g>commit;

Commit complete.


SCOTT@seiang11g>insert into test values(3,'wjq2');  //注意该条数据未提交

1 row created.


SCOTT@seiang11g>select * from test;


        ID NAME

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

         1 wjq

         2 wjq1

         3 wjq2


查看当前日志,第二、三条数据的插入记录在redo2中;

SYS@seiang11g>select group#,sequence#,members,status from v$log;


    GROUP#  SEQUENCE#    MEMBERS STATUS

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

         1         31          1 INACTIVE

         2         32          1 CURRENT

         3         30          1 INACTIVE


进行日志切换

SYS@seiang11g>alter system switch logfile;


System altered.


SYS@seiang11g>select group#,sequence#,members,status from v$log;


    GROUP#  SEQUENCE#    MEMBERS STATUS

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

         1         31          1 INACTIVE

         2         32          1 ACTIVE

         3         33          1 CURRENT


SYS@seiang11g>conn scott

Enter password:

Connected.

SCOTT@seiang11g>insert into test values(4,'wjq3');   //注意该条记录也为提交

1 row created.


SCOTT@seiang11g>select * from test;


        ID NAME

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

         1 wjq

         2 wjq1

         3 wjq2

         4 wjq3


2、模拟介质损坏

数据库在打开的情况下删除数据文件

[oracle@seiang11g OraDB11g]$ rm *.dbf    

[oracle@seiang11g OraDB11g]$ ll

total 163132

-rw-r----- 1 oracle oinstall  9748480 Jul 25 12:06 control01.ctl

-rw-r----- 1 oracle oinstall 52429312 Jul 25 11:56 redo01.log

-rw-r----- 1 oracle oinstall 52429312 Jul 25 12:02 redo02.log

-rw-r----- 1 oracle oinstall 52429312 Jul 25 12:06 redo03.log


换一个session关闭数据库,然后重新启动,数据库只能启动到mount状态,open时报错

SYS@seiang11g>startup

ORACLE instance started.


Total System Global Area 1252663296 bytes

Fixed Size                  2252824 bytes

Variable Size             788533224 bytes

Database Buffers          452984832 bytes

Redo Buffers                8892416 bytes

Database mounted.

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

ORA-01110: data file 1: '/u01/app/oracle/oradata/OraDB11g/system01.dbf'


SYS@seiang11g>select file#,error from v$recover_file;


     FILE# ERROR

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

         1 FILE NOT FOUND

         2 FILE NOT FOUND

         3 FILE NOT FOUND

         4 FILE NOT FOUND

         5 FILE NOT FOUND

         6 FILE NOT FOUND

         7 FILE NOT FOUND


查看控制文件和数据文件头中记录的SCN

SYS@seiang11g>select file#,checkpoint_change# from v$datafile;


     FILE# CHECKPOINT_CHANGE#

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

         1            1501761

         2            1501761

         3            1501761

         4            1501761

         5            1501761

         6            1501761

         7            1501761


SYS@seiang11g>select file#,checkpoint_change# from v$datafile_header;


     FILE# CHECKPOINT_CHANGE#

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

         1                  0

         2                  0

         3                  0

         4                  0

         5                  0

         6                  0

         7                  0

由于没有数据文件,所以数据文件头的SCN为0


从冷备的Datafile中还原丢失的数据文件

[oracle@seiang11g OraDB11g]$ cp /u01/app/oracle/UMAN_Backup/*.dbf ./

[oracle@seiang11g OraDB11g]$ ll

total 2123572

-rw-r----- 1 oracle oinstall   9748480 Jul 25 12:15 control01.ctl

-rw-r----- 1 oracle oinstall 363077632 Jul 25 12:13 example01.dbf

-rw-r----- 1 oracle oinstall  52429312 Jul 25 11:56 redo01.log

-rw-r----- 1 oracle oinstall  52429312 Jul 25 12:02 redo02.log

-rw-r----- 1 oracle oinstall  52429312 Jul 25 12:07 redo03.log

-rw-r----- 1 oracle oinstall  31465472 Jul 25 12:13 rman01.dbf

-rw-r----- 1 oracle oinstall  20979712 Jul 25 12:13 seiang01.dbf

-rw-r----- 1 oracle oinstall 671096832 Jul 25 12:14 sysaux01.dbf

-rw-r----- 1 oracle oinstall 796925952 Jul 25 12:14 system01.dbf

-rw-r----- 1 oracle oinstall  30416896 Jul 25 12:14 temp01.dbf

-rw-r----- 1 oracle oinstall 110108672 Jul 25 12:14 undotbs01.dbf

-rw-r----- 1 oracle oinstall   5251072 Jul 25 12:14 users01.dbf


再次查看控制文件和数据文件头的SCN,发现数据文件头的SCN比控制文件中记录的SCN要小

SYS@seiang11g>select file#,checkpoint_change# from v$datafile;


     FILE# CHECKPOINT_CHANGE#

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

         1            1501761

         2            1501761

         3            1501761

         4            1501761

         5            1501761

         6            1501761

         7            1501761


SYS@seiang11g>select file#,checkpoint_change# from v$datafile_header;


     FILE# CHECKPOINT_CHANGE#

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

         1            1501758

         2            1501758

         3            1501758

         4            1501758

         5            1501758

         6            1501758

         7            1501758


执行手工完全恢复,并比较控制文件和数据文件头的SCN,发现完全恢复后,控制文件和数据文件中记录的SCN一致;

SYS@seiang11g>recover database;

Media recovery complete.


SYS@seiang11g>select file#,checkpoint_change# from v$datafile;


     FILE# CHECKPOINT_CHANGE#

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

         1            1522474

         2            1522474

         3            1522474

         4            1522474

         5            1522474

         6            1522474

         7            1522474


SYS@seiang11g>select file#,checkpoint_change# from v$datafile_header;


     FILE# CHECKPOINT_CHANGE#

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

         1            1522474

         2            1522474

         3            1522474

         4            1522474

         5            1522474

         6            1522474

         7            1522474


SYS@seiang11g>select * from v$recover_file;

no rows selected

打开数据库,并进行验证

SYS@seiang11g>alter database open;

Database altered.


SYS@seiang11g>select * from scott.test;


        ID NAME

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

         1 wjq

         2 wjq1

         3 wjq2

         4 wjq3



示例二:recover tablespace

针对的是非关键表空间的损坏恢复,基于表空间的完全恢复实际上还是对其下的datafile的恢复;模拟这种情形非常实用,通常某个非关键表空间下的数据文件受损,但并没有造成Oracle崩溃,我们只需针对个别有问题的tablespace去做单独的在线恢复操作,也就是说恢复时数据库整体是online的,而局部表空间是offline的,数据库不需要shutdown。


1、模拟环境

在scott用户下创建一个表test1,并插入相应的数据


SCOTT@seiang11g>create table test1(id number,name varchar2(10)) tablespace seiang;

Table created.


SCOTT@seiang11g>

SCOTT@seiang11g>insert into test1 values(100,'wjq');

1 row created.


SCOTT@seiang11g>commit;

Commit complete.


查看当前redo信息

SYS@seiang11g>select group#,sequence#,members,status from v$log;

 

    GROUP#  SEQUENCE#    MEMBERS STATUS

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

         1         34          1 CURRENT

         2         32          1 INACTIVE

         3         33          1 INACTIVE


进行日志的切换

SYS@seiang11g>alter system switch logfile;

System altered.


SYS@seiang11g>select group#,sequence#,members,status from v$log;


    GROUP#  SEQUENCE#    MEMBERS STATUS

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

         1         34          1 ACTIVE

         2         35          1 CURRENT

         3         33          1 INACTIVE


以下插入的两条记录未提交

SCOTT@seiang11g>insert into test1 values(200,'wjq2');

1 row created.


SCOTT@seiang11g>insert into test1 values(200,'wjq3');

1 row created.


SCOTT@seiang11g>select * from test1;


        ID NAME

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

       100 wjq

       200 wjq2

       200 wjq3

 

2、模拟表空间损坏

数据库open下,直接删除表空间下的数据文件


SYS@seiang11g>host rm /u01/app/oracle/oradata/OraDB11g/seiang01.dbf

SYS@seiang11g>host ls -l /u01/app/oracle/oradata/OraDB11g

total 2103124

-rw-r----- 1 oracle oinstall   9781248 Jul 25 14:14 control01.ctl

-rw-r----- 1 oracle oinstall 363077632 Jul 25 12:20 example01.dbf

-rw-r----- 1 oracle oinstall  52429312 Jul 25 14:10 redo01.log

-rw-r----- 1 oracle oinstall  52429312 Jul 25 14:14 redo02.log

-rw-r----- 1 oracle oinstall  52429312 Jul 25 12:20 redo03.log

-rw-r----- 1 oracle oinstall  31465472 Jul 25 12:20 rman01.dbf

-rw-r----- 1 oracle oinstall 671096832 Jul 25 14:13 sysaux01.dbf

-rw-r----- 1 oracle oinstall 796925952 Jul 25 14:13 system01.dbf

-rw-r----- 1 oracle oinstall  30416896 Jul 25 12:20 temp01.dbf

-rw-r----- 1 oracle oinstall 110108672 Jul 25 14:13 undotbs01.dbf

-rw-r----- 1 oracle oinstall   5251072 Jul 25 12:20 users01.dbf


清除data buffer cache的记录

SYS@seiang11g>alter system flush buffer_cache;

System altered.


SCOTT@seiang11g>select * from test1;

select * from test1

*

ERROR at line 1:

ORA-03135: connection lost contact

Process ID: 5524

Session ID: 42 Serial number: 91


重新启动数据库,在数据库open的时候出现报错

SYS@seiang11g>startup

ORACLE instance started.


Total System Global Area 1252663296 bytes

Fixed Size                  2252824 bytes

Variable Size             788533224 bytes

Database Buffers          452984832 bytes

Redo Buffers                8892416 bytes

Database mounted.

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

ORA-01110: data file 7: '/u01/app/oracle/oradata/OraDB11g/seiang01.dbf'


查看控制文件和数据文件头的SCN

SYS@seiang11g>select file#,checkpoint_change# from v$datafile;


     FILE# CHECKPOINT_CHANGE#

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

         1            1522477

         2            1522477

         3            1522477

         4            1522477

         5            1522477

         6            1522477

         7            1522477


SYS@seiang11g>select file#,checkpoint_change# from v$datafile_header;


     FILE# CHECKPOINT_CHANGE#

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

         1            1527707

         2            1527707

         3            1527707

         4            1527707

         5            1527707

         6            1527707

         7                  0

丢失的数据文件7没有SCN


SYS@seiang11g>recover database;

ORA-00279: change 1501758 generated at 07/25/2017 11:52:18 needed for thread 1

ORA-00289: suggestion : /u01/app/oracle/arch/arch_1_949237404_32.log

ORA-00280: change 1501758 for thread 1 is in sequence #32


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

auto

Log applied.

Media recovery complete.


打开数据库,并进行验证控制文件和数据文件头的SCN一致

SYS@seiang11g>alter database open;

Database altered.


SYS@seiang11g>select file#,checkpoint_change# from v$datafile;


     FILE# CHECKPOINT_CHANGE#

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

         1            1548052

         2            1548052

         3            1548052

         4            1548052

         5            1548052

         6            1548052

         7            1548052


SYS@seiang11g>select file#,checkpoint_change# from v$datafile_header;


     FILE# CHECKPOINT_CHANGE#

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

         1            1548052

         2            1548052

         3            1548052

         4            1548052

         5            1548052

         6            1548052

         7            1548052


SYS@seiang11g>select * from scott.test1;


        ID NAME

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

       100 wjqs


实验发现:未提交的两条数据被回滚掉了




示例三:recover datafile


情况1:关键数据文件损坏

 

1、模拟环境

同示例2不同的是模拟UNDO文件损坏: 因UNDO数据文件也是关键文件,所以只能在mount状态下恢复。


SCOTT@seiang11g>insert into test1 values(200,'wjqGood');

1 row created.


SCOTT@seiang11g>commit;

Commit complete.


SCOTT@seiang11g>select * from test1;


        ID NAME

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

       100 wjq

       200 wjqgood


SCOTT@seiang11g>select * from test1;


        ID NAME

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

       100 wjq

       200 wjqgood


删除test1中的数据,但是没有提交,老值记录在UNDO中

SYS@seiang11g>delete scott.test1;

2 rows deleted.


在线备份UNDO数据文件

SYS@seiang11g>host cp /u01/app/oracle/oradata/OraDB11g/undotbs01.dbf /u01/app/oracle/backup_Temp

SYS@seiang11g>host ls -l /u01/app/oracle/backup_Temp

total 107528

-rw-r----- 1 oracle oinstall 110108672 Jul 25 15:21 undotbs01.dbf



2、模拟UNDO数据文件丢失

备份完成后,在线UNDO数据文件

SYS@seiang11g>host rm /u01/app/oracle/oradata/OraDB11g/undotbs01.dbf

SYS@seiang11g>host ls -l /u01/app/oracle/oradata/OraDB11g/

total 2016084

-rw-r----- 1 oracle oinstall   9781248 Jul 25 15:22 control01.ctl

-rw-r----- 1 oracle oinstall 363077632 Jul 25 14:27 example01.dbf

-rw-r----- 1 oracle oinstall  52429312 Jul 25 14:27 redo01.log

-rw-r----- 1 oracle oinstall  52429312 Jul 25 14:27 redo02.log

-rw-r----- 1 oracle oinstall  52429312 Jul 25 15:21 redo03.log

-rw-r----- 1 oracle oinstall  31465472 Jul 25 14:27 rman01.dbf

-rw-r----- 1 oracle oinstall  20979712 Jul 25 15:21 seiang01.dbf

-rw-r----- 1 oracle oinstall 671096832 Jul 25 15:21 sysaux01.dbf

-rw-r----- 1 oracle oinstall 796925952 Jul 25 15:20 system01.dbf

-rw-r----- 1 oracle oinstall  30416896 Jul 25 12:20 temp01.dbf

-rw-r----- 1 oracle oinstall   5251072 Jul 25 14:27 users01.dbf


干净的关闭数据库,并重新启动数据库

SYS@seiang11g>shutdown abort

ORACLE instance shut down.


SYS@seiang11g>startup

ORACLE instance started.


Total System Global Area 1252663296 bytes

Fixed Size                  2252824 bytes

Variable Size             788533224 bytes

Database Buffers          452984832 bytes

Redo Buffers                8892416 bytes

Database mounted.

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

ORA-01110: data file 3: '/u01/app/oracle/oradata/OraDB11g/undotbs01.dbf'


从备份中还原UNDO数据文件

SYS@seiang11g>host cp /u01/app/oracle/backup_Temp/undotbs01.dbf /u01/app/oracle/oradata/OraDB11g/

SYS@seiang11g>host ls -l /u01/app/oracle/oradata/OraDB11g/

total 2123612

-rw-r----- 1 oracle oinstall   9781248 Jul 25 15:26 control01.ctl

-rw-r----- 1 oracle oinstall 363077632 Jul 25 14:27 example01.dbf

-rw-r----- 1 oracle oinstall  52429312 Jul 25 14:27 redo01.log

-rw-r----- 1 oracle oinstall  52429312 Jul 25 14:27 redo02.log

-rw-r----- 1 oracle oinstall  52429312 Jul 25 15:22 redo03.log

-rw-r----- 1 oracle oinstall  31465472 Jul 25 14:27 rman01.dbf

-rw-r----- 1 oracle oinstall  20979712 Jul 25 15:21 seiang01.dbf

-rw-r----- 1 oracle oinstall 671096832 Jul 25 15:23 sysaux01.dbf

-rw-r----- 1 oracle oinstall 796925952 Jul 25 15:23 system01.dbf

-rw-r----- 1 oracle oinstall  30416896 Jul 25 12:20 temp01.dbf

-rw-r----- 1 oracle oinstall 110108672 Jul 25 15:26 undotbs01.dbf

-rw-r----- 1 oracle oinstall   5251072 Jul 25 14:27 users01.dbf


执行恢复操作

SYS@seiang11g>recover datafile 3;

Media recovery complete.


完成恢复操作后,打开数据库,会完成UNDO表空间的数据回滚操作,并验证恢复成功

SYS@seiang11g>alter database open;

Database altered.


SYS@seiang11g>select * from scott.test1;


        ID NAME

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

       100 wjq

       200 wjqgood



情况2:非关键数据文件损坏

 

1、模拟环境

模拟users和seiang表空间的数据文件损坏,这两个表空间的数据文件是非关键数据文件


SYS@seiang11g>select FILE#,TS#,name,status from v$datafile;


     FILE#        TS# NAME                                               STATUS

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

         1          0 /u01/app/oracle/oradata/OraDB11g/system01.dbf      SYSTEM

         2          1 /u01/app/oracle/oradata/OraDB11g/sysaux01.dbf      ONLINE

         3          2 /u01/app/oracle/oradata/OraDB11g/undotbs01.dbf     ONLINE

         4          4 /u01/app/oracle/oradata/OraDB11g/users01.dbf       ONLINE

         5          6 /u01/app/oracle/oradata/OraDB11g/example01.dbf     ONLINE

         6          7 /u01/app/oracle/oradata/OraDB11g/rman01.dbf        ONLINE

         7          8 /u01/app/oracle/oradata/OraDB11g/seiang01.dbf      ONLINE


对这两个表空间的数据文件进行备份

SYS@seiang11g>host cp /u01/app/oracle/oradata/OraDB11g/users01.dbf /u01/app/oracle/backup_Temp

SYS@seiang11g>host cp /u01/app/oracle/oradata/OraDB11g/seiang01.dbf /u01/app/oracle/backup_Temp


SYS@seiang11g>host ls -l /u01/app/oracle/backup_Temp

total 133144

-rw-r----- 1 oracle oinstall  20979712 Jul 25 15:34 seiang01.dbf

-rw-r----- 1 oracle oinstall 110108672 Jul 25 15:21 undotbs01.dbf

-rw-r----- 1 oracle oinstall   5251072 Jul 25 15:34 users01.dbf


在scott用户下创建两张表,wjq1隶属于users表空间,wjq2隶属于seiang表空间

SCOTT@seiang11g>create table wjq1(id number);

Table created.


SCOTT@seiang11g>insert into wjq1 values(111);

1 row created.


SCOTT@seiang11g>insert into wjq1 values(222);

1 row created.


SCOTT@seiang11g>commit;

Commit complete.


SCOTT@seiang11g>select * from wjq1;


        ID

----------

       111

       222


SCOTT@seiang11g>create table wjq2(name varchar2(10)) tablespace seiang;

Table created.


SCOTT@seiang11g>insert into wjq2 values('wjq100');

1 row created.


SCOTT@seiang11g>insert into wjq2 values('seiang200');

1 row created.


SCOTT@seiang11g>commit;

Commit complete.


SCOTT@seiang11g>select * from wjq2;


NAME

----------

wjq100

seiang200


SYS@seiang11g>select table_name,tablespace_name,status from dba_tables

  2  where table_name in ('WJQ1','WJQ2');


TABLE_NAME           TABLESPACE_NAME                STATUS

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

WJQ1                        USERS                          VALID

WJQ2                        SEIANG                         VALID


 

2、模拟usersseiang多对应的数据文件丢失


SYS@seiang11g>host rm /u01/app/oracle/oradata/OraDB11g/users01.dbf

SYS@seiang11g>host rm /u01/app/oracle/oradata/OraDB11g/seiang01.dbf

SYS@seiang11g>host ls -l /u01/app/oracle/oradata/OraDB11g

total 2097996

-rw-r----- 1 oracle oinstall   9781248 Jul 25 15:44 control01.ctl

-rw-r----- 1 oracle oinstall 363077632 Jul 25 15:27 example01.dbf

-rw-r----- 1 oracle oinstall  52429312 Jul 25 15:44 redo01.log

-rw-r----- 1 oracle oinstall  52429312 Jul 25 15:27 redo02.log

-rw-r----- 1 oracle oinstall  52429312 Jul 25 15:27 redo03.log

-rw-r----- 1 oracle oinstall  31465472 Jul 25 15:27 rman01.dbf

-rw-r----- 1 oracle oinstall 671096832 Jul 25 15:44 sysaux01.dbf

-rw-r----- 1 oracle oinstall 796925952 Jul 25 15:44 system01.dbf

-rw-r----- 1 oracle oinstall  30416896 Jul 25 15:27 temp01.dbf

-rw-r----- 1 oracle oinstall 110108672 Jul 25 15:44 undotbs01.dbf


清除data buffer cache的记录

SYS@seiang11g>alter system flush buffer_cache;

System altered.


SYS@seiang11g>select * from scott.wjq1;

select * from scott.wjq1

*

ERROR at line 1:

ORA-01116: error in opening database file 4

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

ORA-27041: unable to open file

linux-x86_64 Error: 2: No such file or directory

Additional infORMation: 3


SYS@seiang11g>select * from scott.wjq2;

select * from scott.wjq2

*

ERROR at line 1:

ORA-01116: error in opening database file 7

ORA-01110: data file 7: '/u01/app/oracle/oradata/OraDB11g/seiang01.dbf'

ORA-27041: unable to open file

Linux-x86_64 Error: 2: No such file or directory

Additional information: 3


还原介质,将users和seiang对应的数据文件还原

SYS@seiang11g>host cp /u01/app/oracle/backup_Temp/users01.dbf /u01/app/oracle/oradata/OraDB11g

SYS@seiang11g>host cp /u01/app/oracle/backup_Temp/seiang01.dbf /u01/app/oracle/oradata/OraDB11g

SYS@seiang11g>host ls -l /u01/app/oracle/oradata/OraDB11g

total 2123612

-rw-r----- 1 oracle oinstall   9781248 Jul 25 15:51 control01.ctl

-rw-r----- 1 oracle oinstall 363077632 Jul 25 15:27 example01.dbf

-rw-r----- 1 oracle oinstall  52429312 Jul 25 15:51 redo01.log

-rw-r----- 1 oracle oinstall  52429312 Jul 25 15:27 redo02.log

-rw-r----- 1 oracle oinstall  52429312 Jul 25 15:27 redo03.log

-rw-r----- 1 oracle oinstall  31465472 Jul 25 15:27 rman01.dbf

-rw-r----- 1 oracle oinstall  20979712 Jul 25 15:51 seiang01.dbf

-rw-r----- 1 oracle oinstall 671096832 Jul 25 15:48 sysaux01.dbf

-rw-r----- 1 oracle oinstall 796925952 Jul 25 15:48 system01.dbf

-rw-r----- 1 oracle oinstall  30416896 Jul 25 15:27 temp01.dbf

-rw-r----- 1 oracle oinstall 110108672 Jul 25 15:48 undotbs01.dbf

-rw-r----- 1 oracle oinstall   5251072 Jul 25 15:51 users01.dbf


offline这两个数据文件

SYS@seiang11g>alter database datafile 4 offline;

Database altered.


SYS@seiang11g>alter database datafile 7 offline;

Database altered.


SYS@seiang11g>select file_id,file_name,online_status from dba_data_files;


FILE_ID          FILE_NAME                              ONLINE_

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

         4 /u01/app/oracle/oradata/OraDB11g/users01.dbf       RECOVER

         3 /u01/app/oracle/oradata/OraDB11g/undotbs01.dbf     ONLINE

         2 /u01/app/oracle/oradata/OraDB11g/sysaux01.dbf      ONLINE

         1 /u01/app/oracle/oradata/OraDB11g/system01.dbf      SYSTEM

         5 /u01/app/oracle/oradata/OraDB11g/example01.dbf     ONLINE

         6 /u01/app/oracle/oradata/OraDB11g/rman01.dbf        ONLINE

         7 /u01/app/oracle/oradata/OraDB11g/seiang01.dbf      RECOVER


恢复这两个数据文件

SYS@seiang11g>recover datafile 4,7;

Media recovery complete.

SYS@seiang11g>select file_id,file_name,online_status from dba_data_files;


   FILE_ID FILE_NAME                                          ONLINE_

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

         4 /u01/app/oracle/oradata/OraDB11g/users01.dbf       OFFLINE

         3 /u01/app/oracle/oradata/OraDB11g/undotbs01.dbf     ONLINE

         2 /u01/app/oracle/oradata/OraDB11g/sysaux01.dbf      ONLINE

         1 /u01/app/oracle/oradata/OraDB11g/system01.dbf      SYSTEM

         5 /u01/app/oracle/oradata/OraDB11g/example01.dbf     ONLINE

         6 /u01/app/oracle/oradata/OraDB11g/rman01.dbf        ONLINE

         7 /u01/app/oracle/oradata/OraDB11g/seiang01.dbf      OFFLINE


online这两个数据文件

SYS@seiang11g>alter database datafile 4 online;

Database altered.


SYS@seiang11g>alter database datafile 7 online;

Database altered.


SYS@seiang11g>select file_id,file_name,online_status from dba_data_files;


   FILE_ID FILE_NAME                                          ONLINE_

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

         4 /u01/app/oracle/oradata/OraDB11g/users01.dbf       ONLINE

         3 /u01/app/oracle/oradata/OraDB11g/undotbs01.dbf     ONLINE

         2 /u01/app/oracle/oradata/OraDB11g/sysaux01.dbf      ONLINE

         1 /u01/app/oracle/oradata/OraDB11g/system01.dbf      SYSTEM

         5 /u01/app/oracle/oradata/OraDB11g/example01.dbf     ONLINE

         6 /u01/app/oracle/oradata/OraDB11g/rman01.dbf        ONLINE

         7 /u01/app/oracle/oradata/OraDB11g/seiang01.dbf      ONLINE


验证恢复的正确性

SYS@seiang11g>select * from scott.wjq1;


        ID

----------

       111

       222


SYS@seiang11g>select * from scott.wjq2;


NAME

----------

wjq100

seiang200



相关链接:
Oracle手工不完全恢复(一):使用当前控制文件 

作者:SEian.G(苦练七十二变,笑对八十一难)

ITPUB:Http://blog.itpub.net/31015730/

51CTO:http://seiang.blog.51cto.com/


 

您可能感兴趣的文档:

--结束END--

本文标题: Oracle手工完全恢复案例

本文链接: https://lsjlt.com/news/49647.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Oracle手工完全恢复案例
    手工完全恢复 1、完全恢复基于三个级别 recover database:所有数据文件损坏,或包括大部分datafile丢失(大面积丢失) recover tablesp...
    99+
    2024-04-02
  • RMAN恢复案例之--不完全恢复错误案例
    RMAN恢复案例之--不完全恢复错误案例RMAN恢复案例:不完全恢复,由于在先前的数据文件备份有误,导致恢复失败。[oracle@rh7 ~]$ rman target&nbs...
    99+
    2024-04-02
  • Oracle手工不完全恢复(一):使用当前控制文件
    实验环境 操作系统:CentOS 7.1 数据库:Oracle 11.2.0.4 目录 示例一:基于SCN或时间点的恢复----恢复过去某个时间误删除的表 ...
    99+
    2024-04-02
  • 在异机实现 Oracle 不完全恢复
    1、将数据库完全备份集和归档日志备份集传到执行恢复的 Oracle 服务器# 传到中转服务器 scp -P 2222 database.20181030.5* 218.17.56.50:/tmp/backu...
    99+
    2024-04-02
  • 数据库中完全恢复与不完全恢复概念是什么
    本篇内容介绍了“数据库中完全恢复与不完全恢复概念是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!&nb...
    99+
    2024-04-02
  • 完全与不完全的一般恢复场景
    归档模式下的四种完全恢复场景 1.数据库打开,普通数据文件损坏。 数据文件所在表空间脱机(immediate) 拷贝备份中的文件,到指定路径 recover恢复文件 数据文件所在表空间上线...
    99+
    2024-04-02
  • MySQL完全备份与恢复的示例分析
    这篇文章将为大家详细讲解有关MySQL完全备份与恢复的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。免费学习推荐:mysql视频教程文章目录前言一、MySQL 完...
    99+
    2024-04-02
  • Mysql完全备份和恢复
    Mysql完全备份和恢复 实验介绍 数据库备份从物理与逻辑的角度划分可以分为:物理备份、逻辑备份。从数据库的备份策略角度,可以分为完全备份、差异备份、增量备份。这次实验主要介绍完全备份,完全备份优点是备份与...
    99+
    2024-04-02
  • Oracle 10g AND Oracle 11g手工建库案例--Oracle 11g
    Oracle 10g AND Oracle 11g手工建库案例--Oracle 11g系统环境:操作系统: RedHat EL6Oracle:  Oracle 10g and Oracle 11g...
    99+
    2024-04-02
  • nbu恢复oracle数据库的案例分析
    今天就跟大家聊聊有关nbu恢复oracle数据库的案例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 1、安装操作系统 2、安装数据库系统 ...
    99+
    2024-04-02
  • MySQL 数据恢复 全备份恢复以及增量恢复 (以手残删库为例)
    数据恢复原理图测试环境 MySQL5.51 首先新建数据库 lampol  数据表 test create database lampol;use lampol;create table...
    99+
    2024-04-02
  • Python3 完全平方数案例
    题目 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 程序分析 因为168对于指数爆炸来说实在太小了,所以可以直接省略数学分析,用最朴素的...
    99+
    2024-04-02
  • Oracle的手工备份和恢复方法是什么
    本篇内容主要讲解“Oracle的手工备份和恢复方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle的手工备份和恢复方法是什么”吧!一、什么是手工...
    99+
    2024-04-02
  • Oracle Study之案例--数据恢复神器Flashback(3)
    Oracle Study之案例--数据恢复神器Flashback(3)Flashback Database:案例分析:      flashback database:利用fl...
    99+
    2024-04-02
  • Oracle Study之案例--数据恢复神器Flashback(2)
    Oracle Study之案例--数据恢复神器Flashback(2)一、Flashback Table:对于DML的误操作,可以通过Undo block对表进行回退(两种模式:基于时间和基于SCN)案例分...
    99+
    2024-04-02
  • EMC 存储数据恢复案例详解【数据恢复方案】
    【科普Isilon的存储结构】Isilon内部使用的是分布式文件系统OneFS。在Isilon存储集群里面每个节点均为单一OneFS文件系统,所以Isilon在支持横向扩展的同时并不会影响数据正常使用。在存储集群工作时,所有节点提供相同的功...
    99+
    2023-06-04
  • 企业备份恢复案例
    在MySQl中我们备份数据一般有几种方式热备份                       &n...
    99+
    2024-04-02
  • Oracle数据库的备份与恢复案例详解
    目录1 逻辑备份/恢复(导出/导入)1.必备参数2.owner参数3.tables参数4.关于inctype参数2 物理备份/恢复1.冷备份/恢复2.热备份/恢复3 利用PL/SQL...
    99+
    2024-04-02
  • MySQL完全、增量的备份与恢复
    数据库备份的重要性 提高系统的高可用性和灾难可恢复性,在数据库系统崩溃时,没有数据备份就没法找到数据。 使用数据库备份还原数据库,是数据库崩溃时提供数据恢复最小代价的最优方案。 没有数据库就没有一切,数据...
    99+
    2024-04-02
  • 使用RMAN来PDB执行完全恢复
    可以对一个或多个PDB执行完全恢复而不影响其它为open状态的PDB的操作。RMAN有两种方法来恢复PDB: .连接到CDB的root容器,然后使用restore pluggable database...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作