模拟冷备份 ,热备份进行backup &recover
1:冷备份
关闭数据库后对 数据文件、控制文件和联机重做日志进行备份。
SQL> archive log list
数据库日志模式 非存档模式
自动存档 禁用
存档终点 F:\oracle\11gr2\RDBMS
最早的联机日志序列 3
当前日志序列 5
SQL> select 'xcopy '||name || ' E:\backup\' from v$datafile;
'XCOPY'||NAME||'E:\BACKUP\'
--------------------------------------------------------------------------------
xcopy F:\ORACLE\ORADATA\ACE\SYSTEM01.DBF E:\backup\
xcopy F:\ORACLE\ORADATA\ACE\SYSAUX01.DBF E:\backup\
xcopy F:\ORACLE\ORADATA\ACE\UNDOTBS01.DBF E:\backup\
xcopy F:\ORACLE\ORADATA\ACE\USERS01.DBF E:\backup\
xcopy F:\ORACLE\ORADATA\ACE\ACE01.DBF E:\backup\
xcopy F:\ORACLE\ORADATA\ACE\INDEX_NEW01.DBF E:\backup\
已选择6行。
SQL> select 'xcopy '||member || ' E:\backup\' from v$logfile;
'XCOPY'||MEMBER||'E:\BACKUP\'
--------------------------------------------------------------------------------
xcopy F:\ORACLE\ORADATA\ACE\REDO03.LOG E:\backup\
xcopy F:\ORACLE\ORADATA\ACE\REDO02.LOG E:\backup\
xcopy F:\ORACLE\ORADATA\ACE\REDO01.LOG E:\backup\
SQL> select 'xcopy '||name || ' E:\backup\' from v$controlfile;
'XCOPY'||NAME||'E:\BACKUP\'
--------------------------------------------------------------------------------
xcopy F:\ORACLE\ORADATA\ACE\CONTROL01.CTL E:\backup\
xcopy F:\ORACLE\ORADATA\ACE\CONTROL02.CTL E:\backup\
2:热备份
联机数据库 数据文件、控制文件进行备份,需要开启archivelog
SQL*Plus: Release 11.2.0.1.0 Production on 星期五 3月 8 10:49:38 2013
Copyright (c) 1982, 2010, Oracle. All rights reserved.
SQL> conn /as sysdba
已连接。
SQL> archive log list
数据库日志模式 存档模式
自动存档 启用
存档终点 F:\oracle\11gr2\RDBMS
最早的联机日志序列 26
下一个存档日志序列 28
当前日志序列 28
SQL> alter tablespace ACE begin backup;
表空间已更改。
SQL> select * from v$backup;
FILE# STATUS CHANGE# TIME
---------- ------------------ ---------- --------------
1 NOT ACTIVE 0
2 NOT ACTIVE 0
3 NOT ACTIVE 0
4 NOT ACTIVE 0
5 ACTIVE 1008301 08-3月 -13
6 NOT ACTIVE 0
已选择6行。
SQL> select * from v$backup;
FILE# STATUS CHANGE# TIME
---------- ------------------ ---------- --------------
1 NOT ACTIVE 0
2 NOT ACTIVE 0
3 NOT ACTIVE 0
4 NOT ACTIVE 0
5 ACTIVE 1008301 08-3月 -13
6 NOT ACTIVE 0
已选择6行。
SQL> host xcopy F:\ORACLE\ORADATA\ACE\ACE01.DBF E:\hotbackup\
F:\ORACLE\ORADATA\ACE\ACE01.DBF
复制了 1 个文件
SQL> alter tablespace ACE end backup;
表空间已更改。
SQL> alter system archive log current;
系统已更改。
SQL> alter database backup controlfile to 'e:\hotbackup\controlfile.ctl';
数据库已更改。
3:RMAN
3:备份还原
场景1:数据文件损坏后,利用冷备数据库文件进行恢复
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host del F:\oracle\oradata\ace\ACE01.DBF
SQL> host dir f:\oracle\oradata\ace
驱动器 F 中的卷是 data
卷的序列号是 7E1D-4A13
f:\oracle\oradata\ace 的目录
2013/03/08 11:12 <DIR> .
2013/03/08 11:12 <DIR> ..
2013/03/08 11:12 9,748,480 CONTROL01.CTL
2013/03/08 11:12 9,748,480 CONTROL02.CTL
2013/03/08 11:12 104,865,792 INDEX_NEW01.DBF
2013/03/08 11:11 52,429,312 REDO01.LOG
2013/03/08 11:11 52,429,312 REDO02.LOG
2013/03/08 11:11 52,429,312 REDO03.LOG
2013/03/08 11:12 513,810,432 SYSAUX01.DBF
2013/03/08 11:12 713,039,872 SYSTEM01.DBF
2013/03/07 17:23 30,416,896 TEMP01.DBF
2013/03/08 11:12 73,408,512 UNDOTBS01.DBF
2013/03/08 11:12 5,251,072 USERS01.DBF
11 个文件 1,617,577,472 字节
2 个目录 14,984,110,080 可用字节
SQL> conn /as sysdba
已连接到空闲例程。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 1043886080 bytes
Fixed Size 2182344 bytes
Variable Size 612369208 bytes
Database Buffers 423624704 bytes
Redo Buffers 5709824 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 5 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 5: 'F:\ORACLE\ORADATA\ACE\ACE01.DBF'
SQL> alter database datafile 5 offline;
数据库已更改。
SQL> alter database open;
数据库已更改。
SQL> host xcopy e:\backup\ACE01.DBF F:\oracle\oradata\ace\
E:\backup\ACE01.DBF
复制了 1 个文件
SQL> recover datafile 5;-----删除后未生成归档
完成介质恢复。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 1043886080 bytes
Fixed Size 2182344 bytes
Variable Size 612369208 bytes
Database Buffers 423624704 bytes
Redo Buffers 5709824 bytes
数据库装载完毕。
数据库已经打开。
SQL>
SQL> alter database datafile 5 online;
数据库已更改。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 1043886080 bytes
Fixed Size 2182344 bytes
Variable Size 612369208 bytes
Database Buffers 423624704 bytes
Redo Buffers 5709824 bytes
数据库装载完毕。
数据库已经打开。
SQL〉select t.name as "TB_NAME", d.file# as "DF#", d.name as "DF_NAME", b.status,dt.status
FROM V$DATAFILE d, V$TABLESPACE t, V$BACKUP b,dba_tablespaces dt
where d.ts#=t.ts#
and b.file#=d.file# and dt.tablespace_name=t.name
SYSTEM 1 F:\ORACLE\ORADATA\ACE\SYSTEM01.DBF NOT ACTIVE ONLINE
SYSAUX 2 F:\ORACLE\ORADATA\ACE\SYSAUX01.DBF NOT ACTIVE ONLINE
UNDOTBS1 3 F:\ORACLE\ORADATA\ACE\UNDOTBS01.DBF NOT ACTIVE ONLINE
USERS 4 F:\ORACLE\ORADATA\ACE\USERS01.DBF NOT ACTIVE ONLINE
ACE 5 F:\ORACLE\ORADATA\ACE\ACE01.DBF NOT ACTIVE ONLINE
INDEX_NEW 6 F:\ORACLE\ORADATA\ACE\INDEX_NEW01.DBF NOT ACTIVE ONLINE
SQL> create tablespace newuser datafile 'F:\ORACLE\ORADATA\ACE\newuser01.dbf' size 100M;
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host del F:\ORACLE\ORADATA\ACE\newuser01.dbf
SQL> conn /as sysdba
已连接到空闲例程。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 1043886080 bytes
Fixed Size 2182344 bytes
Variable Size 612369208 bytes
Database Buffers 423624704 bytes
Redo Buffers 5709824 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 7 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 7: 'F:\ORACLE\ORADATA\ACE\NEWUSER01.DBF'
SQL> alter database datafile 7 offline;
SQL> recover datafile 7 ;
ORA-00279: 更改 1052450 (在 03/08/2013 13:34:22 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\ORACLE\11GR2\RDBMS\ARC0000000009_0809453950.0001
ORA-00280: 更改 1052450 (用于线程 1) 在序列 #9 中
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: 更改 1052722 (在 03/08/2013 13:34:38 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\ORACLE\11GR2\RDBMS\ARC0000000010_0809453950.0001
ORA-00280: 更改 1052722 (用于线程 1) 在序列 #10 中
ORA-00279: 更改 1052732 (在 03/08/2013 13:34:57 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\ORACLE\11GR2\RDBMS\ARC0000000011_0809453950.0001
ORA-00280: 更改 1052732 (用于线程 1) 在序列 #11 中
ORA-00279: 更改 1052736 (在 03/08/2013 13:35:00 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\ORACLE\11GR2\RDBMS\ARC0000000012_0809453950.0001
ORA-00280: 更改 1052736 (用于线程 1) 在序列 #12 中
已应用的日志。
完成介质恢复。
SQL>
SQL> alter database datafile 7 online;
数据库已更改。
select t.name as "TB_NAME", d.file# as "DF#", d.name as "DF_NAME", b.status,dt.status
FROM V$DATAFILE d, V$TABLESPACE t, V$BACKUP b,dba_tablespaces dt
where d.ts#=t.ts#
and b.file#=d.file# and dt.tablespace_name=t.name
SYSTEM 1 F:\ORACLE\ORADATA\ACE\SYSTEM01.DBF NOT ACTIVE ONLINE
SYSAUX 2 F:\ORACLE\ORADATA\ACE\SYSAUX01.DBF NOT ACTIVE ONLINE
UNDOTBS1 3 F:\ORACLE\ORADATA\ACE\UNDOTBS01.DBF NOT ACTIVE ONLINE
USERS 4 F:\ORACLE\ORADATA\ACE\USERS01.DBF NOT ACTIVE ONLINE
ACE 5 F:\ORACLE\ORADATA\ACE\ACE01.DBF NOT ACTIVE ONLINE
INDEX_NEW 6 F:\ORACLE\ORADATA\ACE\INDEX_NEW01.DBF NOT ACTIVE ONLINE
NEWUSER 7 F:\ORACLE\ORADATA\ACE\NEWUSER01.DBF NOT ACTIVE ONLINE
场景3:控制文件丢失,但是之前备份过controlfile
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ACE" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'F:\ORACLE\ORADATA\ACE\REDO01.LOG' SIZE 50M BLOCKSIZE 512,
GROUP 2 'F:\ORACLE\ORADATA\ACE\REDO02.LOG' SIZE 50M BLOCKSIZE 512,
GROUP 3 'F:\ORACLE\ORADATA\ACE\REDO03.LOG' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'F:\ORACLE\ORADATA\ACE\SYSTEM01.DBF',
'F:\ORACLE\ORADATA\ACE\SYSAUX01.DBF',
'F:\ORACLE\ORADATA\ACE\UNDOTBS01.DBF',
'F:\ORACLE\ORADATA\ACE\USERS01.DBF',
'F:\ORACLE\ORADATA\ACE\INDEX_NEW01.DBF',
'F:\ORACLE\ORADATA\ACE\NEWUSER01.DBF',
'F:\ORACLE\ORADATA\ACE\ACE01.DBF'
CHARACTER SET ZHS16GBK
;