前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一步步使用RMAN还原数据库

一步步使用RMAN还原数据库

作者头像
bsbforever
发布2020-08-19 11:09:28
1.2K0
发布2020-08-19 11:09:28
举报
文章被收录于专栏:时悦的学习笔记

写在前面:

参数文件中的相关目录需要事先建立

脚本中通道分配为第三方磁带备份,磁盘请使用常规方式

代码语言:javascript
复制
 allocate channel c1 type disk;

 release channel c1;

1. 恢复spfile

1. 1 手动指定备份文件目录

代码语言:javascript
复制
 RMAN>catalog start with '/rman/';

1.2 通过alert日志或pfile恢复

建议定期备份pfile

由于参数信息会放到alert’日志中,可以拷贝参数至文件中然后恢复

代码语言:javascript
复制
 SQL> create  spfile from pfile='the_location_of_parameter_file';

1.3 RMAN 恢复

使用catolog时:

代码语言:javascript
复制
RMAN> restore spfile from autobackup;

未使用catalog时:

代码语言:javascript
复制
RMAN> restore spfile to '/tmp/spfiletemp.ora' from autobackup recovery area ='/u01/app/oracle/flash_recovery_area' db_name=orcl;

2. 恢复控制文件

2.1 开启至nomount状态

这里注意参数文件中相关目录需事先存在

如dump目录,redo log目录,数据文件目录

代码语言:javascript
复制
 SQL>start nomount;

2.2 恢复控制文件

代码语言:javascript
复制
rman>

run {

allocate channel 'dev_0' type 'sbt_tape'

parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=dcprod,OB2BARLIST=DCPROD_ARCHIVE,OB2BARHOSTNAME=dc1)';

RESTORE CONTROLFILE FROM 'DCPROD_ARCHIVE<dcprod_57445:967816126:1>.dbf';

}

3. restore数据库

3.1 mount数据库

代码语言:javascript
复制
 SQL>alter database mount;

3.2 restore数据库

代码语言:javascript
复制
RUN

{

allocate channel 'dev_0' type 'sbt_tape'

parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=dcprod,OB2BARLIST=DCPROD,OB2BARHOSTNAME=dc1)';

SET NEWNAME FOR DATAFILE 1 to '/dcprod/oradata/system01.dbf';

SET NEWNAME FOR DATAFILE 2 to '/dcprod/oradata/undotbs01.dbf';

SET NEWNAME FOR DATAFILE 3 to '/dcprod/oradata/sysaux01.dbf';

SET NEWNAME FOR DATAFILE 4 to '/dcprod/oradata/users01.dbf';

SET NEWNAME FOR DATAFILE 5 to '/dcprod/oradata/b2bods_01.dbf';

SET NEWNAME FOR DATAFILE 6 to '/dcprod/oradata/b2bods_02.dbf';

SET NEWNAME FOR DATAFILE 7 to '/dcprod/oradata/baan01.dbf';

SET NEWNAME FOR DATAFILE 8 to '/dcprod/oradata/dcb2b_02.dbf';

SET NEWNAME FOR DATAFILE 9 to '/dcprod/oradata/dcb2b_01.dbf';

SET NEWNAME FOR DATAFILE 10 to '/dcprod/oradata/dcb2b_idx01.dbf';

SET NEWNAME FOR DATAFILE 11 to '/dcprod/oradata/dcdm_02.dbf';

SET NEWNAME FOR DATAFILE 12 to '/dcprod/oradata/dcdm_01.dbf';

SET NEWNAME FOR DATAFILE 13 to '/dcprod/oradata/dcdm_idx01.dbf';

SET NEWNAME FOR DATAFILE 14 to '/dcprod/oradata/dclegacy01.dbf';

RESTORE DATABASE;

SWITCH DATAFILE ALL;

}

4. recover数据库

使用sqlplus 恢复需要先恢复归档文件

使用rman则不需要

4.1使用sqlplus恢复

代码语言:javascript
复制
SQL> recover database using backup controlfile until cancel; #恢复至归档结束

SQL>recover database until time '2018-2-11 10:00:00' using backup controlfile ;#恢复到时间点

4.2使用RMAN还原

set until time也可以用来restore

代码语言:javascript
复制
run {

allocate channel 'dev_0' type 'sbt_tape'

parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=DCPROD,OB2BARLIST= DCPROD-archive,OB2BARHOSTNAME= dc1)';

set until time "to_date('11-Feb-2018 10:00:00','DD-MON-YYYY HH24:MI:SS')";

recover database;

}

5. 恢复归档

代码语言:javascript
复制
run {

allocate channel 'dev_0' type 'sbt_tape'

parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=DCPROD,OB2BARLIST= DCPROD-archive,OB2BARHOSTNAME= dc1)';

restore archivelog from logseq 765941 until logseq 765960;

}

6. 重建临时表空间文件

由于rman不会恢复临时表空间文件,所以这里我们需要重建他

6.1 删除控制文件中原来临时表空间文件

代码语言:javascript
复制
SQL> alter database tempfile '/oracle/oradata/dcprod/datafile/temp01.dbf' drop;

SQL> alter database tempfile '/oracle/oradata/dcprod/datafile/temp02.dbf' drop;

SQL> alter database tempfile '/oracle/oradata/dcprod/datafile/temp03.dbf' drop;

6.2 新建临时表空间文件

代码语言:javascript
复制
SQL>alter tablespace temp add tempfile '/dcprod/oradata/temp01.dbf' size 20408M ;

SQL>alter tablespace temp add tempfile '/dcprod/oradata/temp02.dbf' size 20408M ;

7. 重新配置redo logs

这里可以根据需要是否需要更改redo log位置

代码语言:javascript
复制
alter database rename file '/oracle/NP1/origlogA/log_g5m1.dbf' to '/qastest2/oracle/NP1/origlogA/log_g5m1.dbf';

alter database rename file '/oracle/NP1/mirrlogB/log_g6m2.dbf' to '/qastest2/oracle/NP1/mirrlogB/log_g6m2.dbf';

alter database rename file '/oracle/NP1/origlogB/log_g6m1.dbf' to '/qastest2/oracle/NP1/origlogB/log_g6m1.dbf';

8.开启数据库

8.1 read only方式打开

打开后可以继续向后还原数据库,不可以向前

代码语言:javascript
复制
 alter database open read only;

8.2 正常打开

这里redo log目录需事先存在

代码语言:javascript
复制
alter database open resetlogs;

9.修改数据库名称

如果有需要我们可以修改数据库db name

``` create spfile from pfile;

SQL> shutdown immediate;

SQL>startup mount;

cd $ORACLE_HOME/bin

./nid target=sys/passwd dbname=NQ1

···

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 宅必备 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 恢复spfile
    • 1. 1 手动指定备份文件目录
      • 1.2 通过alert日志或pfile恢复
        • 1.3 RMAN 恢复
        • 2. 恢复控制文件
          • 2.1 开启至nomount状态
            • 2.2 恢复控制文件
            • 3. restore数据库
              • 3.1 mount数据库
                • 3.2 restore数据库
                • 4. recover数据库
                  • 4.1使用sqlplus恢复
                    • 4.2使用RMAN还原
                    • 5. 恢复归档
                    • 6. 重建临时表空间文件
                      • 6.1 删除控制文件中原来临时表空间文件
                        • 6.2 新建临时表空间文件
                        • 7. 重新配置redo logs
                        • 8.开启数据库
                          • 8.1 read only方式打开
                            • 8.2 正常打开
                            • 9.修改数据库名称
                            相关产品与服务
                            数据库
                            云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档