千家信息网

【备份恢复】物理冷备份及恢复

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,冷备:,即关闭数据库备份,要求备份数据库三大文件(数据文件、控制文件、日志文件)及参数文件、口令文件;同时冷备之前要一致性关库,以触发ckpt实现三大文件一致性,以使恢复数据库是不需要recover;
千家信息网最后更新 2025年02月02日【备份恢复】物理冷备份及恢复

冷备:,即关闭数据库备份,要求备份数据库三大文件(数据文件、控制文件、日志文件)及参数文件、口令文件同时冷备之前要一致性关库,以触发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,因为冷备是在一致性关闭数据库的基础上实施的,数据库已处于一致状态)

0