Oracle用户管理的不完全恢复:根据时间进行恢复

需要进行不完全恢复的场景:

  a.因归档日志丢失而导致完全恢复失败。

  b.所有未归档的重做日志文件和数据文件均丢失。

  c.用户错误

    1.某个重要的表被删除。  2.在表中提交了无效数据。

  d.当前控制文件丢失,必须使用备份控制文件才能打开数据库。

模拟场景:

1.1干净关闭数据库

1 SQL> conn /as sysdba

2 Connected.

3 SQL> shutdown immediate

4 Database closed.

5 Database dismounted.

6 ORACLE instance shut down.

7 SQL>

1.2 对数据库冷备

 1 bash-3.00$ ls -l

 2 total 2215712

 3 -rw-r-----   1 oracle   oinstall 7389184 Jan 25 21:18 control01.ctl

 4 -rw-r-----   1 oracle   oinstall 7389184 Jan 25 21:18 control02.ctl

 5 -rw-r-----   1 oracle   oinstall 7389184 Jan 25 21:18 control03.ctl

 6 -rw-r-----   1 oracle   oinstall 104865792 Jan 25 21:18 example01.dbf

 7 -rw-r-----   1 oracle   oinstall 52429312 Jan 25 20:31 redo01.log

 8 -rw-r-----   1 oracle   oinstall 52429312 Jan 25 21:18 redo02.log

 9 -rw-r-----   1 oracle   oinstall 52429312 Jan 25 20:31 redo03.log

10 -rw-r-----   1 oracle   oinstall 10493952 Jan 25 21:18 sun01_1.dbf

11 -rw-r-----   1 oracle   oinstall 10493952 Jan 25 21:18 sun02_1.dbf

12 -rw-r-----   1 oracle   oinstall 5251072 Jan 25 21:18 sun03_1.dbf

13 -rw-r-----   1 oracle   oinstall 262152192 Jan 25 21:18 sysaux01.dbf

14 -rw-r-----   1 oracle   oinstall 503324672 Jan 25 21:18 system01.dbf

15 -rw-r-----   1 oracle   oinstall 20979712 Jan 23 04:03 temp01.dbf

16 -rw-r-----   1 oracle   oinstall 31465472 Jan 25 21:18 undotbs01.dbf

17 -rw-r-----   1 oracle   oinstall 5251072 Jan 25 21:18 users01.dbf

18 bash-3.00$ cp * /u01/backup/cold

19 bash-3.00$

1.3 在t表中插入数据

 1 SQL> conn user1/user1

 2 Connected.

 3 

 4 SQL> select * from t;

 5 

 6         ID NAME

 7 ---------- ----------------

 8          1 oracle

 9          2 oracle

10          0 oracle

11          3 oracle

12          4 oracle

13          5 oracle

14 

15 6 rows selected.

16 

17 SQL> insert into t values(6,'oracle');

18 

19 1 row created.

20 

21 SQL> commit;

22 

23 Commit complete.

24 

25 SQL> 

1.4查看当前时间

1 SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

2 

3 TO_CHAR(SYSDATE,'YY

4 -------------------

5 2013-01-25 21:30:35

6 

7 SQL> 

1.5 模拟失误现场

1 SQL> drop table t;

2 

3 Table dropped.

4 

5 SQL> 

恢复
2.1 关机

1 SQL> shutdown abort

2 ORACLE instance shut down.

3 SQL> 

2.2还原以前备份的数据文件

 1 bash-3.00$ pwd

 2 /u01/oradata/sunbak

 3 bash-3.00$ ls -l

 4 total 2215712

 5 -rw-r-----   1 oracle   oinstall 7389184 Jan 25 21:33 control01.ctl

 6 -rw-r-----   1 oracle   oinstall 7389184 Jan 25 21:33 control02.ctl

 7 -rw-r-----   1 oracle   oinstall 7389184 Jan 25 21:33 control03.ctl

 8 -rw-r-----   1 oracle   oinstall 104865792 Jan 25 21:21 example01.dbf

 9 -rw-r-----   1 oracle   oinstall 52429312 Jan 25 21:21 redo01.log

10 -rw-r-----   1 oracle   oinstall 52429312 Jan 25 21:33 redo02.log

11 -rw-r-----   1 oracle   oinstall 52429312 Jan 25 21:21 redo03.log

12 -rw-r-----   1 oracle   oinstall 10493952 Jan 25 21:30 sun01_1.dbf

13 -rw-r-----   1 oracle   oinstall 10493952 Jan 25 21:21 sun02_1.dbf

14 -rw-r-----   1 oracle   oinstall 5251072 Jan 25 21:21 sun03_1.dbf

15 -rw-r-----   1 oracle   oinstall 262152192 Jan 25 21:33 sysaux01.dbf

16 -rw-r-----   1 oracle   oinstall 503324672 Jan 25 21:33 system01.dbf

17 -rw-r-----   1 oracle   oinstall 20979712 Jan 23 04:03 temp01.dbf

18 -rw-r-----   1 oracle   oinstall 31465472 Jan 25 21:33 undotbs01.dbf

19 -rw-r-----   1 oracle   oinstall 5251072 Jan 25 21:21 users01.dbf

20 bash-3.00$ rm -f *.dbf

21 bash-3.00$ cd /u01/backup/cold/

22 bash-3.00$ cp *.dbf  /u01/oradata/sunbak/

23 bash-3.00$ 

2.3将数据库开到mount

 1 SQL> conn /as sysdba

 2 Connected to an idle instance.

 3 SQL> startup mount

 4 ORACLE instance started.

 5 

 6 Total System Global Area  289406976 bytes

 7 Fixed Size                  1279820 bytes

 8 Variable Size              92276916 bytes

 9 Database Buffers          192937984 bytes

10 Redo Buffers                2912256 bytes

11 Database mounted.

12 SQL> 

2.4对比控制文件与数据文件的SCN

 1 #最新的控制文件

 2 SQL> select file#,checkpoint_change# from v$datafile;

 3 

 4      FILE# CHECKPOINT_CHANGE#

 5 ---------- ------------------

 6          1             690924

 7          2             690924

 8          3             690924

 9          4             690924

10          5             690924

11          6             690924

12          7             690924

13          8             690924

14 

15 8 rows selected.

16 

17 SQL> 

18 #备份的数据文件

19 SQL> select file#,checkpoint_change# from v$datafile_header;

20 

21      FILE# CHECKPOINT_CHANGE#

22 ---------- ------------------

23          1             690923

24          2             690923

25          3             690923

26          4             690923

27          5             690923

28          6             690923

29          7             690923

30          8             690923

31 

32 8 rows selected.

33 

34 SQL> 

2.5 恢复

1 SQL> recover database until time '2013-01-25:21:30:35';  

2 Media recovery complete.

3 SQL> 

4 SQL> alter database open resetlogs; 5 

6 Database altered.

7 

8 SQL>

3.查看t表

 1 SQL> select * from user1.t order by 1;

 2 

 3         ID NAME

 4 ---------- ----------------

 5          0 oracle

 6          1 oracle

 7          2 oracle

 8          3 oracle

 9          4 oracle

10          5 oracle

11          6 oracle

12 

13 7 rows selected.

14 

15 SQL>

 

你可能感兴趣的:(oracle)