RMAN压缩备份本地数据库,进行异地恢复操作

简介:

 

RMAN压缩备份本地数据库,进行异地恢复操作:

原来数据库IP: A:172.21.1.30 
要恢复的库IP: B:172.21.1.40

服务器A:172.21.1.30上的操作如下:

1.删除/bk下的所有备份文件,删除/arc下的归档文件 
[oracle@dg ~]$ rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on Tue Aug 2 10:59:27 2011 
Copyright (c) 1982, 2005, Oracle. All rights reserved. 
connected to target database: DG01 (DBID=370021178) 

RMAN>delete noprompt expired backup; 
RMAN>delete noprompt expired copy;

2.执行脚本 rmanback.sh,对数据库进行压缩备份: 

脚本内容如下: 
rman target / log=/bk/rmanbackup.log <<EOF 
backup as compressed backupset filesperset 3 database format '/bk/%u'; 
backup archivelog all delete input format '/bk/arc_%u.bk'; 
delete noprompt obsolete; 
backup current controlfile format '/bk/%u.ctl'; 
EOF 

[oracle@dg ~]$sh /bk/rmanback.sh 
[oracle@dg bk]$ ls

08mivn8k 09mivnci 0amivnd1 0bmivndq 0cmivne9 0emivneh.ctl arc_0dmivnee.bk rmanback.sh rmanbackup.log 

[oracle@dg bk]$ tar cvfz bk30.tar.gz ./* --exclude=*.sh --exclude=*.log 
[oracle@dg bk]$ scp -r bk30.tar.gz 172.21.1.40:/disk/


3.一致性停数据库:

[oracle@dg ~]$ sqlplus / as sysdba

SYS_S:142_P:13539_dg01>shutdown immediate; 

服务器B:172.21.1.40 的操作步骤:

1.解压备份文件: 
[oracle@vcdog disk]$ tar xvfz bk30.tar.gz ./ 
[oracle@vcdog disk]$ ls 
08mivn8k 09mivnci 0amivnd1 0bmivndq 0cmivne9 0emivneh.ctl arc_0dmivnee.bk 

2.恢复controlfile及spfile: 
[oracle@vcdog disk]$ rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on Tue Aug 2 11:22:07 2011

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

RMAN>startup nomount; 
RMAN>restore controlfile from '/disk/0emivneh.ctl'; 
RMAN>restore spfile from '/disk/0cmivne9'; 

[oracle@vcdog disk]$ cp $ORACLE_HOME/dbs/cntrlorcl.dbf $ORACLE_BASE/oradata/dg01/control01.ctl 
[oracle@vcdog disk]$ cp $ORACLE_HOME/dbs/cntrlorcl.dbf $ORACLE_BASE/oradata/dg01/control02.ctl 
[oracle@vcdog disk]$ cp $ORACLE_HOME/dbs/cntrlorcl.dbf $ORACLE_BASE/oradata/dg01/control03.ctl 
[oracle@vcdog disk]$strings $ORACLE_HOME/dbs/spfiledg01.ora > $ORACLE_HOME/dbs/initdg01.ora 
[oracle@vcdog disk]$ vim /data/oracle/product/10.2.0.1.0/db_01/dbs/initdg01.ora 
*.audit_file_dest='/data/oracle/admin/dg01/adump' 
*.background_dump_dest='/data/oracle/admin/dg01/bdump' 
*.compatible='10.2.0.1.0' 
*.control_files='/data/oracle/oradata/dg01/control01.ctl','/data/oracle/oradata/dg01/control02.ctl','/data/oracle/oradata/dg01/control03.ctl'#Restore Controlfile 
*.core_dump_dest='/data/oracle/admin/dg01/cdump' 
*.db_block_size=8192 
*.db_cache_size=62914560 
*.db_file_multiblock_read_count=16 
*.db_name='dg01' 
*.job_queue_processes=2 
*.large_pool_size=20971520 
*.pga_aggregate_target=16777216 
*.processes=150 
*.sga_max_size=314572800 
*.sga_target=293601280 
*.shared_pool_size=96468992 
*.undo_management='AUTO' 
*.undo_tablespace='UNDOTBS1' 
*.user_dump_dest='/data/oracle/admin/dg01/udump' 

保存退出。 

3.启动数据库到mount状态: 

[oracle@vcdog dbs]$ sqlplus / as sysdba

SYS_S:159_P:5659_dg01> alter database mount; 

SYS_S:159_P:5659_dg01>select 'set newname for datafile '||file#|| ' to '''||replace(name,'u01','data')||''';' from v$datafile; 

set newname for datafile 1 to '/data/oracle/oradata/dg01/system01.dbf'; 
set newname for datafile 2 to '/data/oracle/oradata/dg01/undotbs01.dbf'; 
set newname for datafile 3 to '/data/oracle/oradata/dg01/sysaux01.dbf'; 
set newname for datafile 4 to '/data/oracle/oradata/dg01/users01.dbf'; 
set newname for datafile 5 to '/data/oracle/oradata/dg01/example01.dbf'; 
set newname for datafile 6 to '/data/oracle/oradata/dg01/vc.dbf'; 
set newname for datafile 7 to '/data/oracle/oradata/dg01/mytest01.dbf'; 
set newname for datafile 8 to '/data/oracle/oradata/dg01/mytest02.dbf'; 
set newname for datafile 9 to '/data/oracle/oradata/dg01/mytbs01.dbf'; 
set newname for datafile 10 to '/data/oracle/oradata/dg01/ind_tbs01.dbf'; 
set newname for datafile 11 to '/data/oracle/oradata/dg01/wd01.dbf'; 

4.RMAN下执行脚本: 

RMAN> catalog start with '/disk/'; 
RMAN>run{ 
set newname for datafile 1 to '/data/oracle/oradata/dg01/system01.dbf'; 
set newname for datafile 2 to '/data/oracle/oradata/dg01/undotbs01.dbf'; 
set newname for datafile 3 to '/data/oracle/oradata/dg01/sysaux01.dbf'; 
set newname for datafile 4 to '/data/oracle/oradata/dg01/users01.dbf'; 
set newname for datafile 5 to '/data/oracle/oradata/dg01/example01.dbf'; 
set newname for datafile 6 to '/data/oracle/oradata/dg01/vc.dbf'; 
set newname for datafile 7 to '/data/oracle/oradata/dg01/mytest01.dbf'; 
set newname for datafile 8 to '/data/oracle/oradata/dg01/mytest02.dbf'; 
set newname for datafile 9 to '/data/oracle/oradata/dg01/mytbs01.dbf'; 
set newname for datafile 10 to '/data/oracle/oradata/dg01/ind_tbs01.dbf'; 
set newname for datafile 11 to '/data/oracle/oradata/dg01/wd01.dbf'; 
restore database; 
switch datafile all; 
recover database; 


5.rename logfile日志文件: 

[oracle@vcdog dbs]$scp -r 172.21.1.30:/u01/oracle/oradata/dg01/redo01.log /data/oracle/oradata/dg01/redo01.log 
[oracle@vcdog dbs]$scp -r 172.21.1.30:/u01/oracle/oradata/dg01/redo03.log /data/oracle/oradata/dg01/redo03.log 
SYS_S:159_P:5659_dg01>alter database rename file '/u01/oracle/oradata/dg01/redo01.log' to '/data/oracle/oradata/dg01/redo01.log'; 
SYS_S:159_P:5659_dg01>alter database rename file '/u01/oracle/oradata/dg01/redo03.log' to '/data/oracle/oradata/dg01/redo03.log'; 

此时,由于原来备份时,redo02.log文件是current状态,不能直接归档。在服务器A:172.21.1.30上执行如下命令: 
SYS_S:159_P:5659_dg01>alter system switch logfile; 

[oracle@vcdog dbs]$scp -r 172.21.1.30:/u01/oracle/oradata/dg01/redo02.log /data/oracle/oradata/dg01/redo02.log 
SYS_S:159_P:5659_dg01>alter database rename file '/u01/oracle/oradata/dg01/redo02.log' to '/data/oracle/oradata/dg01/redo02.log'; 

6.打开数据库到open状态: 

SYS_S:159_P:5659_dg01> alter database open resetlogs;

此时,数据库的异地恢复完成。

 

 


    本文转自vcdog 51CTO博客,原文链接:http://blog.51cto.com/255361/837647,如需转载请自行联系原作者




相关文章
|
29天前
|
SQL 数据库连接 数据库
你不知道ADo.Net中操作数据库的步骤【超详细整理】
你不知道ADo.Net中操作数据库的步骤【超详细整理】
16 0
|
8天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(七):RMAN恢复管理器
【Oracle】玩转Oracle数据库(七):RMAN恢复管理器
35 5
|
3天前
|
SQL JavaScript API
❤Nodejs 第四章(操作本地数据库实现删除-源码地址已开放)
【4月更文挑战第4天】❤Nodejs 第四章(操作本地数据库实现删除-源码地址已开放)在Node.js中实现删除本地数据库记录的操作。首先尝试通过SQL删除ID为8的用户,然后编写`app.delete`路由处理程序,从请求体获取ID并执行删除。。最终成功删除用户并展示了数据库的更新结果。下一节将优化增删改查功能。
15 1
|
10天前
|
数据库
使用Navicat Premium 12进行数据库定期自动备份(定时任务)--图文详解
使用Navicat Premium 12进行数据库定期自动备份(定时任务)--图文详解
19 0
|
10天前
|
SQL 存储 关系型数据库
mysql数据库备份与恢复
mysql数据库备份与恢复
|
1月前
|
缓存 NoSQL 数据库
[Redis]——数据一致性,先操作数据库,还是先更新缓存?
[Redis]——数据一致性,先操作数据库,还是先更新缓存?
|
1月前
|
SQL 存储 关系型数据库
【mysql】—— 数据库的操作
【mysql】—— 数据库的操作
【mysql】—— 数据库的操作
|
1月前
|
SQL 存储 数据库
数据安全无忧,SQL Server 2014数据库定时备份解密
数据安全无忧,SQL Server 2014数据库定时备份解密
|
2月前
|
关系型数据库 MySQL Linux
Linux环境下定时备份mysql数据库
Linux环境下定时备份mysql数据库
|
2月前
|
数据库 对象存储 数据安全/隐私保护
在oceanbase数据库中,有没有遇到备份到oss环境,备份进度到98%就一直卡着的问题?
在oceanbase数据库中,有没有遇到备份到oss环境,备份进度到98%就一直卡着的问题?
27 6