042-16 Backup and Recovery备份与恢复(前3种备份方式)

--Oracle数据库工作的2种模式
1.Archivelog               --归档模式
2.Noarchivelog             --非归档模式
Select * From v$log   --3组循环使用的日志,循环一圈,对将要覆盖的进行保留的,是归档模式,不保留的就是非归档模式
Select * From V$LOGFILE --日志文件
Archive Log List        --查看归档信息
/*
数据库日志模式             非存档模式
自动存档             禁用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     21
当前日志序列           23
*/
将sqlplus输出改成英文
Alter Session Set nls_language=american;
/*
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     21
Current log sequence           23
*/
--启用归档,必须在mount阶段
Shutdown Immediate
startup Mount
Alter Database Archivelog;
Alter Database Open;
show parameter DB_RECOVERY_FILE_DEST  --查看归档文件存放的地址 --C:\oracle\product\10.2.0\flash_recovery_area
Create Table t Tablespace users As Select * From dba_objects
Insert Into t  Select * From t  --不断插入,让日志变更使用的组 v$log  --生成了archivelog日志C:\oracle\product\10.2.0\flash_recovery_area\TESTDB\ARCHIVELOG\2014_01_24\O1_MF_1_23_9G473HWS_.ARC
Alter System Switch Logfile;   --强制切换日志状态,使其归档(非归档模式只切换不归档) O1_MF_1_24_9G479VNJ_.ARC
Alter System Archive Log Current; --手动归档当前日志组,并切换(只能在归档模式使用)  O1_MF_1_25_9G47HNBQ_.ARC


--**************
Scn: System Change Number  --系统更改号,ORACLE内部的逻辑时钟
--**************
Select dbms_flashback.get_system_change_number From dual;  --查询当前SCN 608165 大约每隔3s加1
Select current_scn From v$database;                        --查询视图获得SCN,这里是个序列,每次查询都会增加 608233


Create Table t_scn (Id Number,Scn Number);
Set linesize 200
Select * From v$log  --当前第二组日志
Insert Into t_scn Values(1,dbms_flashback.get_system_change_number); --插入信息1 608386,commit后产生归档日志 
Select * From t_scn
Alter System Switch Logfile;  --手动归档 O1_MF_1_26_9G483WTV_.ARC
Select Sequence#,first_change#,next_change# From v$archived_log  --查询归档日志的开始和下一文件的开始SCN  26 608058 608484
Insert Into t_scn Values(2,dbms_flashback.get_system_change_number); --插入信息2 609320
Alter System Switch Logfile;  --手动归档 O1_MF_1_27_9G48GCGN_.ARC
Select Sequence#,first_change#,next_change# From v$archived_log Where Sequence# = 27 --查询归档日志的开始和结束SCN 27 608484 609354


--**************************************************************
ORACLE备份的种类
--**************************************************************
1.完全脱机备份(Archivelog|Noarchivelog)
--**************************************************************
a.Shutdown Immediate
b.备份数据文件,日志文件,控制文件 --拷贝
c.startup


Insert Into t_scn Values(3,dbms_flashback.get_system_change_number); --插入信息3 610263
Alter System Switch Logfile;  --手动归档 O1_MF_1_28_9G49F4RF_.ARC
Insert Into t_scn Values(4,dbms_flashback.get_system_change_number); --插入信息4 611165
Alter System Switch Logfile;  --手动归档 O1_MF_1_29_9G49LR8S_.ARC
Insert Into t_scn Values(5,dbms_flashback.get_system_change_number); --插入信息5 611210
Alter System Switch Logfile;  --手动归档 O1_MF_1_30_9G49NG3W_.ARC
Insert Into t_scn Values(6,dbms_flashback.get_system_change_number); --插入信息6 611345 commit
Insert Into t_scn Values(7,dbms_flashback.get_system_change_number); --插入信息7 611365 未commit


Shutdown Immediate
删除所有数据文件 *.DBF
startup Mount
SQL> Alter database Open  
/*--报错ORA-01157: 无法标识/锁定数据文件 1 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 1: 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TESTDB\SYSTEM01.DBF'*/
SQL> Select File#,checkpoint_change# From v$datafile;   --这里查询的是控制文件记录的文件编号和SCN


     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1             612272
         2             612272
         3             612272
         4             612272
         5             612272
         6             612272
         7             612272
SQL> Select File#,checkpoint_change# From v$datafile_header;   --这里查询的是文件头的文件编号和SCN


     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1                  0
         2                  0
         3                  0
         4                  0
         5                  0
         6                  0
         7             612272
--2个视图的SCN信息不一致,无法打开(一致的文件是UNDOTBS02.DBF未删除)
--将完全脱机备份的SYSTEM01.DBF文件复制出来
SQL> Select File#,checkpoint_change# From v$datafile_header;


     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1             609768
         2                  0
         3                  0
         4                  0
         5                  0
         6                  0
         7             612272
复制出来后SYSTEM01.DBF的SCN仍然不一致
SQL> Alter database Open   --报错 ORA-01113: 文件 1 需要介质恢复
--*此处需要从archivelog中恢复SCN比 609768 大的日志
Select Sequence#,first_change#,next_change# From v$archived_log  Where first_change# <=609768 And next_change# >= 609768  --查询当前system01.DBF信息是哪个归档日志中的 28号
Recover Datafile 1;
ORA-00279: 更改 609768 (在 01/24/2014 16:22:33 生成) 对于线程 1 是必需的
ORA-00289: 建议:
C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TESTDB\ARCHIVELOG\2014_01_24\O1_MF_
1_28_%U_.ARC
ORA-00280: 更改 609768 (用于线程 1) 在序列 #28 中


指定日志: {=suggested | filename | AUTO | CANCEL}   --filename 当归档日志不在默认文件夹时,需要将文件的绝对路径和文件名写全
=>回车
已应用的日志。
完成介质恢复。    --恢复完#28归档日志文件后,没有继续提示29,30,并且恢复的scn比29和30的最大SCN还要大,是由于29和30虽然归档了,但仍然存在于数据库中,所以直接调用数据库的logfile,连未归档的#31都会被调用


--同时恢复多个datafile的命令
Recover Database;
--缺点 a.shutdown b.os copy
--************************************************************************
2.部分脱机备份(Tablespace Offline)(Archivelog)
--************************************************************************
Alter Tablespace users Offline;
select * from b.t;   --用户 B 默认表空间USERS,表B.T数据存放在users表空间中
/*第 1 行出现错误:
ORA-00376: 此时无法读取文件 4
ORA-01110: 数据文件 4: 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TESTDB\USERS01.DBF'*/
备份USERS01.DBF
Alter Tablespace users Online;
--插入数据,产生归档日志
Alter System Switch Logfile   --O1_MF_1_48_9G68TZOL_.ARC
Insert Into b.t Values(2);
Alter System Switch Logfile   --O1_MF_1_49_9G68XYWF_.ARC
Insert Into b.t Values(3);
Alter System Switch Logfile   --O1_MF_1_50_9G68Z75Y_.ARC
Insert Into b.t Values(4);
Alter System Switch Logfile
Insert Into b.t Values(5);
Alter System Switch Logfile
Insert Into b.t Values(6);
Alter System Switch Logfile
Insert Into b.t Values(7);
Alter System Switch Logfile
Insert Into b.t Values(8);
Alter System Switch Logfile   --O1_MF_1_55_9G691F5Y_.ARC
--users表空间Offline,删除USERS01.DBF
Alter Tablespace users Offline; 
删除USERS01.DBF
Alter Tablespace users Online;
/*第 1 行出现错误:
ORA-01157: 无法标识/锁定数据文件 4 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 4: 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TESTDB\USERS01.DBF'*/
将offline时的USERS01.DBF备份恢复
ALTER TABLESPACE USERS ONLINE
/*
第 1 行出现错误:
ORA-01113: 文件 4 需要介质恢复
ORA-01110: 数据文件 4: 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TESTDB\USERS01.DBF'*/
SQL> RECOVER DATAFILE 4;
Auto
Alter Tablespace users Online;  --成功
SQL> select file#,checkpoint_change# from v$datafile;


     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1             631457
         2             631457
         3             631457
         4             631855
         5             631457


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


     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1             631457
         2             631457
         3             631457
         4             631855
         5             631457
--Datafile 4的scn号比其他的都大,当shutdown或者手动更改datafile的checkpoint(完全检查点)时才会与其他相同
Alter System Checkpoint   --手动更改datafile的checkpoint(完全检查点)
SQL> select file#,checkpoint_change# from v$datafile;


     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1             631961
         2             631961
         3             631961
         4             631961
         5             631961


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


     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1             631961
         2             631961
         3             631961
         4             631961
         5             631961
--缺点 a.system undo表空间不能offline 
--TEMP01.DBF文件删除可以启动数据库,但是启动后10g会自动创建一个新的20M大小
--***********************************************************************
3.部分联机备份(Archivelog)
--***********************************************************************
Alter Tablespace users Begin Backup;             --对USERS表空间进行备份
Select * From v$backup                           --查询备份文件  STATUS=ACTIVE的,代表begin backup,此时记录SCN,
Alter Tablespace users End Backup;               --完成备份后,结算backup模式,当backup状态的数据文件被同时访问时,会产生比较多的redo日志,所以备份结算后一定要及时关闭


Alter Database Begin Backup;                     --所有的表空间都处于热备份模式
Select * From v$backup    
Alter Database End Backup;                       --所有的表空间都关闭热备份模式

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

转载于:http://blog.itpub.net/15810196/viewspace-1130246/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值