ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【11g 库异地恢复】实验

【11g 库异地恢复】实验

翻译 Linux操作系统 作者:Yichen16 时间:2022-01-24 20:38:07 0 删除 编辑

        我们生产环境中经常采用 rman 自动计划任务或采用备份软件来备份数据库,每天全备份一次或采用增量备份,来防止数据的丢失,然而,实际恢复上产的情况却很少,通常情况下,为了验证数据的可用性,我们会定期在测试机器上来恢复生产上的数据,以此来检查数据文件是否可用,以及与生产系统对比,验证其是否准确。

那么下面我们来测试下 11g 环境下 恢复到测试机器上的过程。

1 、操作系统,数据库版本

操作系统 :CentOS Linux release 7.7.1908

数据库 :11.2.0.4.0

rman 恢复到不同的目录                         改变后:

数据目录: /oradata                   /oradata/orclnew

归档目录: /archivelog                /archivelognew

闪回目录: /falsh_recovery          /flash_recoverynew

 

2 、备份生产库 :

run{

allocate channel c1 type disk;

allocate channel c2 type disk;

allocate channel c3 type disk;

allocate channel c4 type disk;

backup as compressed backupset tag='full_backup' format '/home/oracle/backup/full_db_%U_%T' database;

sql 'alter system archive log current'; 

backup archivelog all format '/home/oracle/backup/archivelog_%U_%T' delete all input;

backup current controlfile tag='ctl_file' format='/home/oracle/backup/ctl_file_%U_%T';

backup spfile tag='spfile' format='/home/oracle/backup/spfile_%U_%T';

report obsolete; 

delete noprompt obsolete; 

crosscheck backup; 

delete noprompt expired backup;

release channel c1;

release channel c2;

release channel c3;

release channel c4;

}

3 、检查生产库参数配置、文件位置、 listener 、 tnsnames 等

原库信息:

表空间:

SQL> /

   FILE_ID FILE_NAME                                                    TABLESPACE_NAME

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

         4 /oradata/orcl/users01.dbf                                    USERS

         3 /oradata/orcl/undotbs01.dbf                                  UNDOTBS1

         2 /oradata/orcl/sysaux01.dbf                                   SYSAUX

         1 /oradata/orcl/system01.dbf                                   SYSTEM

         5 /oradata/orcl/example01.dbf                                  EXAMPLE

临时表空间:

SQL> select file_id,file_name,tablespace_name from dba_temp_files;

   FILE_ID FILE_NAME                                                    TABLESPACE_NAME

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

         1 /oradata/orcl/temp01.dbf                                     TEMP

在线日志:

SQL> select member from v$logfile;

MEMBER

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

/oradata/orcl/redo03.log

/oradata/orcl/redo02.log

/oradata/orcl/redo01.log

 

参数文件:

orcl.__db_cache_size=654311424

orcl.__java_pool_size=16777216

orcl.__large_pool_size=33554432

orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment

orcl.__pga_aggregate_target=637534208

orcl.__sga_target=956301312

orcl.__shared_io_pool_size=0

orcl.__shared_pool_size=234881024

orcl.__streams_pool_size=0

*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'

*.audit_trail='db'

*.compatible='11.2.0.4.0'

*.control_files='/oradata/orcl/control01.ctl','/oradata/orcl/control02.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_name='orcl'

*.db_recovery_file_dest_size=10737418240

*.db_recovery_file_dest='/flash_recovery'

*.diagnostic_dest='/u01/app/oracle'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'

*.log_archive_dest_1='location=/archivelog'

*.memory_target=1580204032

*.open_cursors=300

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.undo_tablespace='UNDOTBS1'

 

4 、启动测试库

目标库:

参数文件

[oracle@db1 ~]$ cat 2.sql 

orcl.__db_cache_size=654311424

orcl.__java_pool_size=16777216

orcl.__large_pool_size=33554432

orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment

orcl.__pga_aggregate_target=637534208

orcl.__sga_target=956301312

orcl.__shared_io_pool_size=0

orcl.__shared_pool_size=234881024

orcl.__streams_pool_size=0

*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'

*.audit_trail='db'

*.compatible='11.2.0.4.0'

*.control_files='/oradata/orclnew/control01.ctl','/oradata/orclnew/control02.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_name='orcl'

*.db_recovery_file_dest_size=10737418240

*.db_recovery_file_dest='/flash_recoverynew'

*.diagnostic_dest='/u01/app/oracle'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'

*.log_archive_dest_1='location=/archivelognew'

*.memory_target=1580204032

*.open_cursors=300

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.undo_tablespace='UNDOTBS1'

 

[root@db1 ~]# mkdir -p /oradata/orclnew /flash_recoverynew /archivelognew 

[root@db1 ~]# chmod 775 /oradata/orclnew /flash_recoverynew /archivelognew -R

[root@db1 ~]# chown oracle:oinstall /oradata/ /flash_recoverynew /archivelognew -R

[oracle@db1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Tue Jan 25 16:35:10 2022

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> create spfile from pfile='/home/oracle/2.sql';

File created.

SQL> startup nomount;

ORACLE instance started.

Total System Global Area 1586708480 bytes

Fixed Size                  2253624 bytes

Variable Size             989859016 bytes

Database Buffers          587202560 bytes

Redo Buffers                7393280 bytes

 

5 、恢复测试库

[oracle@db1 ~]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Tue Jan 25 16:36:30 2022

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORCL (not mounted)

RMAN> restore controlfile from '/home/oracle/backup/ctl_file_1f0k69vl_1_1_20220125';

Starting restore at 25-JAN-22

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=63 device type=DISK

channel ORA_DISK_1: restoring control file

channel ORA_DISK_1: restore complete, elapsed time: 00:00:01

output file name=/oradata/orclnew/control01.ctl

output file name=/oradata/orclnew/control02.ctl

Finished restore at 25-JAN-22

 

[oracle@db1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Tue Jan 25 16:38:00 2022

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> alter database mount;

Database altered.

 

恢复脚本:

run{

allocate channel c1 type disk;

allocate channel c2 type disk;

allocate channel c3 type disk;

allocate channel c4 type disk;

set newname for datafile 1 to '/oradata/orclnew/system01.dbf';

set newname for datafile 2 to '/oradata/orclnew/sysaux01.dbf';

set newname for datafile 3 to '/oradata/orclnew/undotbs01.dbf';

set newname for datafile 4 to '/oradata/orclnew/users01.dbf';

set newname for datafile 5 to '/oradata/orclnew/example01.dbf';

restore database;

switch datafile all;

recover database;

release channel c1;

release channel c2;

release channel c3;

release channel c4;

}

[oracle@db1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Tue Jan 25 16:43:14 2022

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> alter database open resetlogs;

SQL> select name,open_mode from v$database;

NAME      OPEN_MODE

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

ORCL      READ WRITE

 

6 、检查库文件 redo , logfile ,临时文件

SQL> select group#,status,type,member from v$logfile;

    GROUP# STATUS  TYPE    MEMBER                                                       IS_

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

         3         ONLINE  /oradata/orcl/redo03.log                                     NO

         2         ONLINE  /oradata/orcl/redo02.log                                     NO

         1         ONLINE  /oradata/orcl/redo01.log                                     NO

(备注: redo 日志位置需要变更)

SQL> select file_name,tablespace_name from dba_temp_files;

FILE_NAME                           TABLESPACE_NAME

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

/oradata/orcl/temp01.dbf    TEMP

(备注: temp 文件位置未变更,可以迁移,可以新建)

 

修改 redolog 日志位置:(通过增加成员,删除原来 redo 日志)

alter database add logfile member '/oradata/orclnew/redo01a.log' to group 1;

alter database add logfile member '/oradata/orclnew/redo02a.log' to group 2;

alter database add logfile member '/oradata/orclnew/redo03a.log' to group 3;

 

删除日志组成员(删除日志组为 INACTIVE 状态):

SQL> select group#,thread#,bytes/1024/1024 mb,status from v$log;

    GROUP#    THREAD#         MB STATUS

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

         1          1         50 CURRENT

         2          1         50 INACTIVE

         3          1         50 INACTIVE

 

alter database drop logfile member '/oradata/orcl/redo01.log';

alter database drop logfile member '/oradata/orcl/redo02.log' ;

alter database drop logfile member '/oradata/orcl/redo03.log' ;

 

SQL> select group#,thread#,bytes/1024/1024 mb,members,status from v$log;

 

    GROUP#    THREAD#         MB    MEMBERS STATUS

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

         1          1         50          1 INACTIVE

         2          1         50          1 INACTIVE

         3          1         50          1 CURRENT

 

SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER                                                          IS_

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

         1         ONLINE  /oradata/orclnew/redo01a.log                                 NO

         2         ONLINE  /oradata/orclnew/redo02a.log                                 NO

         3         ONLINE  /oradata/orclnew/redo03a.log                                 NO

 

修改默认临时文件(重新创建文件)

SQL> create temporary tablespace temp1 tempfile '/oradata/orclnew/temp1.dbf' size 200m autoextend on maxsize 2g;

Tablespace created.

SQL> alter database default temporary tablespace temp1;

Database altered.

SQL> drop tablespace temp;

Tablespace dropped.

SQL> select file_name,tablespace_name from dba_temp_files;

FILE_NAME                                     TABLESPACE_NAME

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

/oradata/orclnew/temp1.dbf                TEMP1

 

总结:通过上面恢复过程,恢复过程中可以根据测试环境情况自定义目录,恢复完成后,需要重建 redo 日志, tempfile

文件,检查系统各项参数设置是否设置正常,数据库异机就恢复完成了,也可以用于基于时间和 scn 的不完整恢复, rman 是

日常数据恢复的好帮手。


Yicheng16
22.01.24

-- The End --


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

请登录后发表评论 登录
全部评论

注册时间:2020-02-22

  • 博文量
    39
  • 访问量
    33299