冷备:,即关闭数据库备份,要求备份数据库三大文件(数据文件、控制文件、日志文件)及参数文件、口令文件;同时冷备之前要一致性关库,以触发ckpt实现三大文件一致性,以使恢复数据库是不需要recover;
1.查看备份文件绝对路径(重要)
SYS@ORA11GR2>select name from v$datafile;
NAME
--------------------------------------------------------/u01/app/oracle/oradata/ORA11GR2/system01.dbf
/u01/app/oracle/oradata/ORA11GR2/sysaux01.dbf
/u01/app/oracle/oradata/ORA11GR2/undotbs01.dbf
/u01/app/oracle/oradata/ORA11GR2/users01.dbf
/u01/app/oracle/oradata/ORA11GR2/example01.dbf
/u01/app/oracle/oradata/ORA11GR2/ts_ora11gr2_01.dbf
/u01/app/oracle/oradata/ORA11GR2/undotbs2_01.dbf
7 rows selected.
SYS@ORA11GR2>select name from v$controlfile;
NAME
--------------------------------------------------------
/u01/app/oracle/oradata/ORA11GR2/control01.ctl
/u01/app/oracle/oradata/ORA11GR2/control02.ctl
/u01/app/FRA/control03.ctl
SYS@ORA11GR2>
SYS@ORA11GR2>select member from v$logfile;
MEMBER
--------------------------------------------------------
/u01/app/oracle/oradata/ORA11GR2/redo03.log
/u01/app/oracle/oradata/ORA11GR2/redo02.log
/u01/app/oracle/oradata/ORA11GR2/redo01.log
/u01/app/oracle/oradata/ORA11GR2/redo01_a.log
/u01/app/oracle/oradata/ORA11GR2/redo02_a.log
/u01/app/oracle/oradata/ORA11GR2/redo03_a.log
/u01/app/FRA/redo01_b.log
/u01/app/FRA/redo02_b.log
/u01/app/FRA/redo03_b.log
9 rows selected.
SYS@ORA11GR2>
2.一致性关闭数据库:(触发CKPT,然后实施备份)
SYS@ORA11GR2>shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@ORA11GR2>
3.回到操作系统层复制镜像(所有数据库文件)
——创建备份目录:
[oracle@wang ~]$ mkdir cold
[oracle@wang ~]$ ls
cold
[oracle@wang ~]$ cd cold/
[oracle@wang cold]$ ls
[oracle@wang cold]$
[oracle@wang cold]$ pwd
/home/oracle/cold
——备份控制文件、数据文件、redo日志到备份目录:
[oracle@wang ~]$ cd /u01/app/oracle/oradata/
ORA11GR2/ PROD/
[oracle@wang ~]$ cd /u01/app/oracle/oradata/
[oracle@wang oradata]$
[oracle@wang oradata]$ cd ORA11GR2
[oracle@wang ORA11GR2]$ ls
control01.ctl redo02.log ts_ora11gr2_01.dbf
control02.ctl redo03_a.log undotbs01.dbf
example01.dbf redo03.log undotbs2_01.dbf
redo01_a.log sysaux01.dbf users01.dbf
redo01.log system01.dbf
redo02_a.log temp01.dbf
[oracle@wang ORA11GR2]$ pwd
/u01/app/oracle/oradata/ORA11GR2
[oracle@wang ORA11GR2]$ cp * /home/oracle/cold/
[oracle@wang ORA11GR2]$
成功,验证:
[oracle@wang cold]$ du -sh
2.3G .
[oracle@wang cold]$ ll
total 2383092
-rw-r----- 1 oracle oinstall 9748480 Sep 27 15:12 control01.ctl
-rw-r----- 1 oracle oinstall 9748480 Sep 27 15:12 control02.ctl
-rw-r----- 1 oracle oinstall 363077632 Sep 27 15:12 example01.dbf
-rw-r----- 1 oracle oinstall 52429312 Sep 27 15:12 redo01_a.log
-rw-r----- 1 oracle oinstall 52429312 Sep 27 15:12 redo01.log
-rw-r----- 1 oracle oinstall 52429312 Sep 27 15:12 redo02_a.log
-rw-r----- 1 oracle oinstall 52429312 Sep 27 15:12 redo02.log
-rw-r----- 1 oracle oinstall 52429312 Sep 27 15:12 redo03_a.log
-rw-r----- 1 oracle oinstall 52429312 Sep 27 15:12 redo03.log
-rw-r----- 1 oracle oinstall 660611072 Sep 27 15:12 sysaux01.dbf
-rw-r----- 1 oracle oinstall 849354752 Sep 27 15:12 system01.dbf
-rw-r----- 1 oracle oinstall 51388416 Sep 27 15:12 temp01.dbf
-rw-r----- 1 oracle oinstall 20979712 Sep 27 15:12 ts_ora11gr2_01.dbf
-rw-r----- 1 oracle oinstall 94380032 Sep 27 15:12 undotbs01.dbf
-rw-r----- 1 oracle oinstall 104865792 Sep 27 15:12 undotbs2_01.dbf
-rw-r----- 1 oracle oinstall 6561792 Sep 27 15:12 users01.dbf
[oracle@wang cold]$
——备份参数文件及口令文件:
[oracle@wang ORA11GR2]$ cd $ORACLE_HOME/dbs
[oracle@wang dbs]$ cp initORA11GR2.ora spfileORA11GR2.ora /home/oracle/cold/
[oracle@wang dbs]$
[oracle@wang dbs]$ cp orapwORA11GR2 /home/oracle/cold/
验证:
[oracle@wang cold]$ ls initORA11GR2.ora
initORA11GR2.ora
[oracle@wang cold]$ ls spfileORA11GR2.ora
spfileORA11GR2.ora
[oracle@wang cold]$ ls orapwORA11GR2
orapwORA11GR2
4.模拟删除$ORACLE_HOME/dbs的参数文件及密码文件,删除$ORACLE_HOME/oradata/ORA11GR2/下的所有数据库文件
[oracle@wang dbs]$ cd /u01/app/oracle/oradata/ORA11GR2/
[oracle@wang ORA11GR2]$ ls
control01.ctl example01.dbf redo01.log redo02.log redo03.log system01.dbf ts_ora11gr2_01.dbf undotbs2_01.dbf
control02.ctl redo01_a.log redo02_a.log redo03_a.log sysaux01.dbf temp01.dbf undotbs01.dbf users01.dbfv
[oracle@wang ORA11GR2]$ rm *
[oracle@wang ORA11GR2]$ ls
[oracle@wang ORA11GR2]$
5.启动实例(nomount):
SYS@ORA11GR2>startup nomount;
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initORA11GR2.ora'
SYS@ORA11GR2>
显示没有找到参数文件,恢复参数文件:
[oracle@wang cold]$ cp initORA11GR2.ora spfileORA11GR2.ora /u01/app/oracle/product/11.2.0/dbhome_1/dbs
[oracle@wang cold]$
再次启动实例:
SYS@ORA11GR2>startup nomount;
ORACLE instance started.
Total System Global Area 730714112 bytes
Fixed Size 2256832 bytes
Variable Size 457179200 bytes
Database Buffers 268435456 bytes
Redo Buffers 2842624 bytes
SYS@ORA11GR2>
——实例启动
6.启动到mount:
SYS@ORA11GR2>alter database mount;
alter database mount
*
ERROR at line 1:
ORA-00205: error in identifying control file, check alert log for more info
SYS@ORA11GR2>
恢复控制文件:
[oracle@wang cold]$ cp control01.ctl control02.ctl /u01/app/oracle/oradata/ORA11GR2/
[oracle@wang cold]$
[oracle@wang ORA11GR2]$ pwd
/u01/app/oracle/oradata/ORA11GR2
[oracle@wang ORA11GR2]$
[oracle@wang ORA11GR2]$ ls
control01.ctl control02.ctl
再次启动到mount:
SYS@ORA11GR2>alter database mount;
Database altered.
SYS@ORA11GR2>
成功!
7.打开数据库:
SYS@ORA11GR2>alter database open;
alter database open
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: '/u01/app/oracle/oradata/ORA11GR2/system01.dbf'
——恢复数据文件及日志文件:
[oracle@wang cold]$ cp *dbf *log /u01/app/oracle/oradata/ORA11GR2/
[oracle@wang cold]$
[oracle@wang ORA11GR2]$ ls
control01.ctl example01.dbf redo01.log redo02.log redo03.log system01.dbf ts_ora11gr2_01.dbf undotbs2_01.dbf
control02.ctl redo01_a.log redo02_a.log redo03_a.log sysaux01.dbf temp01.dbf undotbs01.dbf users01.dbf
——再次打开数据库:
SYS@ORA11GR2>alter database open;
Database altered.
SYS@ORA11GR2>select status from v$instance;
STATUS
------------
OPEN
SYS@ORA11GR2>
数据库已打开,恢复成功!!!!!!!!!
(数据库已从冷备恢复回来,不需要recovery,因为冷备是在一致性关闭数据库的基础上实施的,数据库已处于一致状态)