【测试】冷备及恢复(模拟数据库故障)

对于备份Oracle信息而言,冷备份时最快和最安全的方法,此时,数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。

①查看控制文件,数据文件,日志文件路径:

查看控制文件路径:
SQL> select name from v$controlfile; NAME -------------------------------------------------------------------------------- /u01/app/oracle/oradata/PROD/ora_control1.ctl /u01/app/oracle/oradata/enmo1/ora_control2.ctl /u01/app/oracle/oradata/enmo2/ora_control3.ctl /u01/app/oracle/oradata/enmo3/ora_control4.ctl
查看数据文件路径:

SQL> select name,file# from v$datafile;

 

NAME                                 FILE#

--------------------------------------------------------------------------------

/u01/app/oracle/oradata/PROD/system01.dbf   1

/u01/app/oracle/oradata/PROD/sysaux01.dbf    2

/u01/app/oracle/oradata/PROD/undotbs01.dbf   3

/u01/app/oracle/oradata/PROD/users01.dbf     4

/u01/app/oracle/oradata/PROD/test101.dbf     5

/u01/app/oracle/oradata/PROD/test102.dbf     6

/u01/app/oracle/oradata/PROD/user02.dbf      7

 

7 rows selected.

查看日志文件:

SQL> select member,group# from v$logfile order by 1;

 

MEMBER GROUP#

--------------------------------------------------------------------------------

/u01/app/oracle/oradata/PROD/redo01a.log 1

/u01/app/oracle/oradata/PROD/redo02a.log 2

/u01/app/oracle/oradata/PROD/redo03a.log 3

/u01/app/oracle/oradata/PROD/redo04a.log 4

②创建冷备的目录:

[oracle@host02 ~]$ mkdir cold_bk

[oracle@host02 ~]$ cd cold_bk/

[oracle@host02 cold_bk]$ pwd

/home/oracle/cold_bk

③关库保证一致性:

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

④备份参数文件,控制文件,数据文件以及日志文件:

备份参数文件:

[oracle@host02 cold_bk]$ cd $ORACLE_HOME/dbs

[oracle@host02 dbs]$ ls

hc_PROD.dat  init.ora  initPROD.ora  lkPROD  snapcf_PROD.f  spfilePROD.ora

[oracle@host02 dbs]$ cp initPROD.ora /home/oracle/cold_bk

[oracle@host02 dbs]$ cd /home/oracle/cold_bk

[oracle@host02 cold_bk]$ ls

initPROD.ora

备份控制文件数据文件以及日志文件:

oracle@host02 ~]$ cd /u01/app/oracle/oradata/PROD/

[oracle@host02 PROD]$ ls

ora_control1.ctl  redo03a.log   system01.dbf  temp_02.dbf  undotbs01.dbf

redo01a.log       redo04a.log   temp_01.dbf   test101.dbf  user02.dbf

redo02a.log       sysaux01.dbf  temp01.dbf    test102.dbf  users01.dbf

[oracle@host02 PROD]$ cp * /home/oracle/cold_bk

[oracle@host02 PROD]$ cd /home/oracle/cold_bk

[oracle@host02 cold_bk]$ ls

initPROD.ora      redo03a.log   temp_01.dbf  test102.dbf

ora_control1.ctl  redo04a.log   temp01.dbf   undotbs01.dbf

redo01a.log       sysaux01.dbf  temp_02.dbf  user02.dbf

redo02a.log       system01.dbf  test101.dbf  users01.dbf

⑤模拟故障----删除数据库文件:

删除参数文件:

[oracle@host02 cold_bk]$ cd $ORACLE_HOME/dbs

[oracle@host02 dbs]$ ls

hc_PROD.dat  init.ora  initPROD.ora  lkPROD  snapcf_PROD.f  spfilePROD.ora

[oracle@host02 dbs]$ rm initPROD.ora

[oracle@host02 dbs]$ rm spfilePROD.ora

[oracle@host02 dbs]$ ls

hc_PROD.dat  init.ora  lkPROD  snapcf_PROD.f

删除控制文件数据文件以及日志文件:

[oracle@host02 PROD]$ cd /u01/app/oracle/oradata/PROD/

[oracle@host02 PROD]$ ls

ora_control1.ctl  redo03a.log   system01.dbf  temp_02.dbf  undotbs01.dbf

redo01a.log       redo04a.log   temp_01.dbf   test101.dbf  user02.dbf

redo02a.log       sysaux01.dbf  temp01.dbf    test102.dbf  users01.dbf

[oracle@host02 PROD]$ rm *

[oracle@host02 PROD]$ ls

[oracle@host02 PROD]$

启动数据库报错:

SQL> startup

ORA-01078: failure in processing system parameters

LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initPROD.ora'

⑥现在开始恢复数据库文件:

第一步首先恢复参数文件pfile:

[oracle@host02 PROD]$ cd /home/oracle/cold_bk

[oracle@host02 cold_bk]$ ls

initPROD.ora      redo03a.log   temp_01.dbf  test102.dbf

ora_control1.ctl  redo04a.log   temp01.dbf   undotbs01.dbf

redo01a.log       sysaux01.dbf  temp_02.dbf  user02.dbf

redo02a.log       system01.dbf  test101.dbf  users01.dbf

[oracle@host02 cold_bk]$ cp initPROD.ora /u01/app/oracle/product/11.2.0/dbhome_1/dbs

[oracle@host02 cold_bk]$ cd /u01/app/oracle/product/11.2.0/dbhome_1/dbs

[oracle@host02 dbs]$ ls

hc_PROD.dat  init.ora  initPROD.ora  lkPROD  snapcf_PROD.f

此时将数据库启动到nomount状态没有问题:

SQL> startup nomount

ORACLE instance started.

 

Total System Global Area  835104768 bytes

Fixed Size                  2257840 bytes

Variable Size             536874064 bytes

Database Buffers          289406976 bytes

Redo Buffers                6565888 bytes
再根据pfile文件生成spfile:

SQL> create spfile from pfile;

 

File created.

⑦然后开始恢复控制文件,数据文件和日志文件:

[oracle@host02 ~]$ cd /home/oracle/cold_bk/

[oracle@host02 cold_bk]$ cp * /u01/app/oracle/oradata/PROD

[oracle@host02 cold_bk]$ cd /u01/app/oracle/oradata/PROD/

[oracle@host02 PROD]$ ls

initPROD.ora      redo03a.log   temp_01.dbf  test102.dbf

ora_control1.ctl  redo04a.log   temp01.dbf   undotbs01.dbf

redo01a.log       sysaux01.dbf  temp_02.dbf  user02.dbf

redo02a.log       system01.dbf  test101.dbf  users01.dbf

⑧此时数据库就已经恢复完成,启动数据库到open状态:

SQL> alter database mount;

 

Database altered.

 

SQL> alter database open;

 

Database altered.

OK!

原文地址:https://www.cnblogs.com/tomatoes-/p/5914300.html