Oracle备份与恢复系列(三)alter tablspace begin backup

完全恢复试验

此次试验需要以下步骤
1 产生数据库活动
2 创建备份脚本
3 运行热备份
破坏数据库
5 还原丢失的数据文件
6 恢复还原的数据文件
7 确认数据库恢复

每个数据文件在其首部都有一个序号,该序号给出了系统文件的最新数据库状态。
在一个数据库可以被打开前,所有联机数据文件必须拥有同样的系统变更号(SCN)。
当这些联机数据文件拥有相同的SCN时,它们就是一致的。在数据库open状态下进行的备份不会产生一致的数据文件。
这样,在使用不一致的数据文件还原数据库之前必须进行介质恢复。一旦所有必须的重做信息都被应用而保持SCN一致时,就可以打开数据库了。

step1 产生数据库活动

insert into snow.date_log values(sysdate,'Elle');
commit;
alter system switch logfile;
insert into snow.date_log values(sysdate,'Flow');
commit;
alter system switch logfile;
insert into snow.date_log values(sysdate,'Gigi');
commit;
alter system switch logfile;

创建备份目录
mkdir -p /backup/open_backup
chown oracle:oinstall  /backup/open_backup

step2 创建备份脚本
vi /backup/scripts/open_backup.sql

set feedback off set pagesize 0 set heading off set verify off set linesize 100 set trimspool on define dir = '/backup/open_backup'
define fil = '/backup/scripts/open_backup_commands.sql'
define spo = '&dir/open_backup_output.lst' set serveroutput on spool &fil prompt spool &spo prompt archive log list;; prompt alter system switch logfile;; prompt alter system archive log all;; DECLARE CURSOR cur_tablespace IS   SELECT tablespace_name     FROM dba_tablespaces where tablespace_name<>'TEMP';
CURSOR cur_datafile (tn VARCHAR) IS   SELECT file_name     FROM dba_data_files    WHERE tablespace_name = tn; BEGIN   FOR ct IN cur_tablespace LOOP     dbms_output.put_line ('alter tablespace '||ct.tablespace_name||' begin backup;');     FOR cd IN cur_datafile (ct.tablespace_name) LOOP        dbms_output.put_line ('host cp '||cd.file_name||' &dir');     END LOOP;     dbms_output.put_line ('alter tablespace '||ct.tablespace_name||' end backup;');   END LOOP; END; /

prompt alter system switch logfile;; prompt alter database backup controlfile to '&dir./control01.ctl' REUSE;; prompt archive log list;; prompt spool off spool off;--@&fil

备份pfile文件
create pfile='/backup/open_backup/init.ora' from spfile;

step3 运行热备份
@/backup/scripts/open_backup.sql

step4 破坏数据库
rm /oradata/PRACTICE/tools01.dbf
rm /oradata/PRACTICE/users01.dbf 
alter system checkpoint;

step5 还原丢失的数据文件
查看需要恢复的数据文件

当数据文件需要恢复时,数据文件必须脱机。或者将其表空间脱机。
select * from v$recover_file;

alter database datafile 5 offline; alter database datafile 6 offline;

col FILE_NAME for a60
select FILE_ID,FILE_NAME,ONLINE_STATUS from dba_data_files;
         4 /oradata/PRACTICE/users01.dbf                                ONLINE
         3 /oradata/PRACTICE/undotbs01.dbf                              ONLINE
         2 /oradata/PRACTICE/sysaux01.dbf                               ONLINE
         1 /oradata/PRACTICE/system01.dbf                               SYSTEM
         5 /oradata/PRACTICE/example01.dbf                              RECOVER
         6 /oradata/PRACTICE/tools01.dbf                                RECOVER
         7 /oradata/PRACTICE/indx.dbf                                   ONLINE
         8 /oradata/PRACTICE/users02.dbf                                ONLINE

cp /backup/open_backup/users01.dbf /oradata/PRACTICE/
cp /backup/open_backup/tools01.dbf /oradata/PRACTICE/

发现检查点SCN
col error for a20
set linesize 200
select * from v$recover_file;

     FILE# ONLINE                ONLINE_STATUS         ERROR                   CHANGE# TIME
---------- --------------------- --------------------- -------------------- ---------- -------------------
         5 OFFLINE               OFFLINE                                       1307778 2014-08-01 12:57:34
         6 OFFLINE               OFFLINE                                       1306321 2014-08-01 12:26:27

step6 恢复还原的数据文件
recover datafile 5;
recover datafile 6;

alter database datafile 5 online; alter database datafile 6 online;

如果归档日志的位置发生变化可以指定其位置
recover from '/archive' datafile 5
recover from '/archive' tablespace tools;

step7 确认数据库恢复

select * from snow.date_log order by create_time;
2014-03-22 10:12:44 2014-03-22 10:28:58


不完全恢复

1- 插入一条记录作为参照,后面的恢复中要能查询的到
insert into snow.date_log values (sysdate,'Iceman');
commit;
select * from snow.date_log order by create_time;

2-切换日志,从v$datafile中的change#提取数据文件的checkpoint scn
alter system switch logfile;

3-查看当前日志
col status for a10
select GROUP#,SEQUENCE#,ARCHIVED,STATUS,FIRST_CHANGE#,FIRST_TIME,NEXT_CHANGE#,NEXT_TIME from v$log;

    GROUP#  SEQUENCE# ARCHIVED  STATUS     FIRST_CHANGE# FIRST_TIME          NEXT_CHANGE# NEXT_TIME
---------- ---------- --------- ---------- ------------- ------------------- ------------ -------------------
         1          7 NO        CURRENT          1309379 2014-08-01 13:16:12   2.8147E+14
         2          5 YES       INACTIVE         1306249 2014-08-01 12:26:03      1306349 2014-08-01 12:26:28
         3          6 YES       ACTIVE           1306349 2014-08-01 12:26:28      1309379 2014-08-01 13:16:12

select sequence#,first_change#,to_char(first_time,'yyyy-mm-dd hh24:mi:ss') first_time from v$log_history;

SEQUENCE# FIRST_CHANGE# FIRST_TIME
---------- ------------- ---------------------------------------------------------
         1       1299137 2014-08-01 10:36:27
         2       1306113 2014-08-01 12:22:18
         3       1306118 2014-08-01 12:22:22
         4       1306123 2014-08-01 12:22:30
         5       1306249 2014-08-01 12:26:03
         6       1306349 2014-08-01 12:26:28   <==该SCN为恢复参考点

4-查看数据文件的SCN
set linesize 200
select FILE# , CHECKPOINT_CHANGE#  ,CHECKPOINT_TIME,LAST_CHANGE# ,LAST_TIME   from v$datafile;
          FILE# CHECKPOINT_CHANGE# CHECKPOINT_TIME     LAST_CHANGE# LAST_TIME
---------- ------------------ ------------------- ------------ -------------------
         1            1307778 2014-08-01 12:57:34
         2            1307778 2014-08-01 12:57:34
         3            1307778 2014-08-01 12:57:34
         4            1307778 2014-08-01 12:57:34
         5            1308231 2014-08-01 13:02:10
         6            1308238 2014-08-01 13:02:14
         7            1307778 2014-08-01 12:57:34
         8            1307778 2014-08-01 12:57:34

5-删除表
alter system switch log file;
alter system switch log file;
alter system switch log file;

drop table scott.emp;

7-关闭数据库
shutdown immediate;

ORA-01122: database file 4 failed verification check
ORA-01110: data file 4: '/oradata/PRACTICE/users01.dbf'
ORA-01208: data file is an old version - not accessing current version

shutdown abort;

8-还原数据文件
cp /backup/open_backup/* /oradata/PRACTICE/
cp /backup/open_backup/control01.ctl /u01/app/oracle/fast_recovery_area/PRACTICE/control02.ctl

9-加载数据库,查看需要恢复的数据文件
startup mount;
select * from v$recover_file;

10-恢复数据库到SCN 1306349

由于控制文件也是从备份中还原的,没有记录之后发生的变化,所以使用using backup controlfile字句来使其应用之后产生的归档日志。

recover database until change 1306349 using backup controlfile;

ORA-00279: change 1306340 generated at 08/01/2014 12:26:28 needed for thread 1
ORA-00289: suggestion : /archive/1_5_854447787.arc
ORA-00280: change 1306340 for thread 1 is in sequence #5

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

Log applied.
Media recovery complete.

检验数据文件的SCN恢复状况
select * from v$recover_file;

     FILE# ONLINE                ONLINE_STATUS         ERROR         CHANGE# TIME
---------- --------------------- --------------------- ---------- ---------- -------------------
         1 ONLINE                ONLINE                              1306349 2014-08-01 12:26:28
         2 ONLINE                ONLINE                              1306349 2014-08-01 12:26:28
         3 ONLINE                ONLINE                              1306349 2014-08-01 12:26:28
         4 ONLINE                ONLINE                              1306349 2014-08-01 12:26:28
         5 ONLINE                ONLINE                              1306349 2014-08-01 12:26:28
         6 ONLINE                ONLINE                              1306349 2014-08-01 12:26:28
         7 ONLINE                ONLINE                              1306349 2014-08-01 12:26:28
         8 ONLINE                ONLINE                              1306349 2014-08-01 12:26:28

11-开启数据库

alter database open resetlogs;

查看scott.emp是否存在
select * from scott.emp;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29047826/viewspace-1244022/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29047826/viewspace-1244022/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值