RMAN备份恢复其他数据库的问题

[复制链接]
查看11 | 回复7 | 2012-1-4 11:58:44 | 显示全部楼层 |阅读模式
场景:我想把某台服务器上面的rman备份,恢复到其他的机器。

我前面做的准备工作:
源库:10.0.17.220 SID:zsddb

获取SID的方式:
(1)通过查看/data/ora11g/product/11.2.0/db_1/dbs/spfilezsddb.ora,因为spfile[sid].ora是按照此形式保存
(2)SQL> select instance from v$thread;
目标库 10.0.18.250
准备工作:记录下源数据库的DBID。(ZSDDB (DBID=1536079480))
获取DBID的两种方式:
(1) rman target / 直接看到DBID
(2) select dbid from v$database;
1.在源库端创建数据库的完整备份
注意:备份集创建成功后,将其复制到目录端的相同路径下。必须是相同路径(linux可以使用SSH Secure file Transfer Client)
2.在目标服务器上创建OracleService
Linux/UNIX环境,只要在连接数据库时指定ORACLE_SID环境变量即可set oracle_sid =zsddb
3.配置目标端数据库的初始文件
第一步:将源库端的SPFILE初始化参数文件复制到目标端的适当路径下。Linux/UNIX环境是在$ORACLE_HOME\dbs目录下。
第三步的方法如下:

(1)将源数据库端的plife取出
set oracle_sid =zsddb
sqlplus "/as sysdba"
create pfile='/data/backup/pfile_zsddb.ora' from spfile;

(2)用文本工具修改相关参数保存,在目标端创建spfile
create spfile from pile ='/data/backup/pfile_zsddb.ora'
4.恢复控制文件并进入到加载状态

从备份集中恢复控制文件
set oracle_sid=zsddb
rman target /

RMAN>set dbid=1536079480
RMAN>RESTORE CONTROLFILE FROM '/data/backup/c-1536079480-20121103-00';
就是做到这一步的时候。报出了错误
Starting restore at 08-NOV-12
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=19 device type=DISK
channel ORA_DISK_1: no AUTOBACKUP in 7 days found
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 11/08/2012 17:46:48
RMAN-06172: no AUTOBACKUP found or specified handle is not a valid copy or piece
是不是我的思路有问题,还是哪个细节缺漏了?
版本都是*.compatible='11.2.0.0.0'




回复

使用道具 举报

千问 | 2012-1-4 11:58:44 | 显示全部楼层
我的备份是从远端拷贝到本地的
回复

使用道具 举报

千问 | 2012-1-4 11:58:44 | 显示全部楼层
http://space.itpub.net/26015009/viewspace-718821
回复

使用道具 举报

千问 | 2012-1-4 11:58:44 | 显示全部楼层
哈哈,找到问题所在了。积累经验了。
是对应目录的权限问题。拷贝过来的备份,目录权限是不是oracle。改成oracle的权限。让oracle用户可读。就哦了。
chown oracle

racle /data/backup/rman/*
RMAN> RESTORE CONTROLFILE FROM '/data/backup/rman/con_c-3913726272-20121103-00';
Starting restore at 09-NOV-12
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=20 device type=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/data/ora11g/oradata/dgfile/control01.ctl
output file name=/data/ora11g/oradata/dgfile/control02.ctl
Finished restore at 09-NOV-12
RMAN>
回复

使用道具 举报

千问 | 2012-1-4 11:58:44 | 显示全部楼层
eric0435 发表于 2012-11-8 19:02
http://space.itpub.net/26015009/viewspace-718821

谢谢朋友支持。


回复

使用道具 举报

千问 | 2012-1-4 11:58:44 | 显示全部楼层
一:通过RMAN备份恢复数据库到其他服务器
设定环境:

源库:10.0.17.220 SID:zsddb

获取SID的方式:
(1)通过查看/data/ora11g/product/11.2.0/db_1/dbs/spfilezsddb.ora,因为spfile[sid].ora是按照此形式保存
(2)SQL> select instance from v$thread;


目标库 10.0.18.250
准备工作:记录下源数据库的DBID。(ZSDDB (DBID=1536079480))
获取DBID的两种方式:
(1) rman target / 直接看到DBID
(2) select dbid from v$database;

操作步骤:

1.在源库端创建数据库的完整备份
注意:备份集创建成功后,将其复制到目录端的相同路径下。必须是相同路径(linux可以使用SSH Secure file Transfer Client)
2.在目标服务器上创建OracleService
Linux/UNIX环境,只要在连接数据库时指定ORACLE_SID环境变量即可
3.配置目标端数据库的初始文件
第一步:将源库端的SPFILE初始化参数文件复制到目标端的适当路径下。Linux/UNIX环境是在$ORACLE_HOME\dbs目录下。

查看ORACLE_HOME的环境变量:
[root@oracle-n1 dbs]# sudo su - oracle
[oracle@oracle-n1 ~]$ echo $ORACLE_HOME
/data/ora11g/product/11.2.0/db_1
第二步:修改部分参数值,这一步不是必须得。如果目标端的路径与源端保持一致,不做任何修改。如果不一致,要保证如下几个参数所指定的值是正确有效的。
* control_files: 控制文件路径
* audit_file_dest: Oracle审计输出的debug日志路径
* background_dump_dest: LGWR,DBWn之类后台进程输出的debug日志路径
* core_dump_dest: Oracle内核输出的dump日志路径
* user_dump_dest: 用户进程输出的debug日志路径
* log_archive_dest_1:归档文件路径,如果启用了归档模式的话。
(1)将源数据库端的plife取出
set oracle_sid =zsddb
sqlplus "/as sysdba"
create pfile='/data/backup/pfile_zsddb.ora' from spfile;

(2)用文本工具修改相关参数保存,在目标端创建spfile
create spfile from pile ='/data/backup/pfile_zsddb.ora'
(3)spfile创建成功后,数据库自动启动到NOMOUNT状态。
startup nomount
4.恢复控制文件并进入到加载状态

从备份集中恢复控制文件
set oracle_sid=zsddb
rman target /

RMAN>set dbid=1536079480
RMAN>RESTORE CONTROLFILE FROM '/data/backup/c-14152845758-20090505-00';
数据库置为Mount状态:
RMAN>alter database mount;
5.修复数据库
RMAN>RESTORE DATABASE;
6.恢复数据库
RMAN>RECOVER DATABASE;
7.用open resetlogs方式打开数据库
RMAN>ATLER DATABASE OPEN RESETLOGS;



问题的注意细节:

一:执行:startup nomount的时候,出现如下错误:
ERROR:
ORA-09925: Unable to create audit trail file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 9925
ORA-01075: you are currently logged on
解决方法:创建目录
mkdir -p /data/ora11g/admin/userdb/adump

二:执行:RESTORE CONTROLFILE FROM '/data/backup/rman/con_c-3913726272-20121103-00'的时候,出现如下错误:
channel ORA_DISK_1: no AUTOBACKUP in 7 days found
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 11/08/2012 17:46:48
RMAN-06172: no AUTOBACKUP found or specified handle is not a valid copy or piece
解决方法:看看对应的/data/backup/rman/目录下文件的权限问题。
chown oracle

racle /data/backup/rman/*
三:执行:RESTORE DATABASE;的时候,出现如下错误:
channel ORA_DISK_1: ORA-19870: error while restoring backup piece /data/backup/rman/18nop29i_1_1-USERDB-20121027.full
ORA-19504: failed to create file "/data/ora11g/oradata/userdb/hdmember01.dbf"
ORA-27040: file create error, unable to create file
Linux-x86_64 Error: 2: No such file or directory
解决方法:建立对应的数据目录:
mkdir -p /data/ora11g/oradata/userdb/
这是我解决这个问题的所有思路和过程。希望给以后碰到同样问题的人有启迪的作用。


回复

使用道具 举报

千问 | 2012-1-4 11:58:44 | 显示全部楼层
RMAN> RECOVER DATABASE;
Starting recover at 09-NOV-12
using channel ORA_DISK_1
starting media recovery
channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=717
channel ORA_DISK_1: reading from backup piece /data/backup/rman/22npbh4k_1_1-USERDB-20121103.full
channel ORA_DISK_1: piece handle=/data/backup/rman/22npbh4k_1_1-USERDB-20121103.full tag=TAG20121103T021900
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02
archived log file name=/data/ora11g/product/11.2.0/db_1/dbs/arch1_717_770555328.dbf thread=1 sequence=717
unable to find archived log
archived log thread=1 sequence=718
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 11/09/2012 10:43:40
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 718 and starting SCN of 2076809065
RMAN> ATLER DATABASE OPEN RESETLOGS;
这样恢复,只能算是恢复到了某一个时间点,算不完全恢复。
根据大家所说,要真正执行完全恢复,就必须要 thread 1 with sequence 718 and starting SCN of 2076809065
这个时刻的重做日志文件。
还要shutdown,我去!~这不是伪命题了。我陷入了无限的死循环中。
回复

使用道具 举报

千问 | 2012-1-4 11:58:44 | 显示全部楼层
LZ 的头像很萌。LZ 加油。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行