解决思路:在备份出来的数据中(控制文件),包含了数据库名,数据文件,redo log等文件的存放路径,如果在本地直接做恢复,将和原有的数据库****,因此,需要修改这些信息,将备份出来的数据恢复到另外一个数据库中。具体步骤如下:
1.创建新数据库数据文件及跟踪文件存放目录
-bash-2.05b$mkdir -p /oracle/oradata/test
-bash-2.05b$mkdir -p /oracle/admin/test/bdump
-bash-2.05b$mkdir -p /oracle/admin/test/udump
-bash-2.05b$mkdir -p /oracle/admin/test/cdump
2.登录到生产数据库。查看当前数据文件信息:
-bash-2.05b$ sqlplus '/ as sysdba'
SQL>select file#,name from v$datafile
FILE# NAME
---------- --------------------------------------------------
1 /oracle/oradata/test/system01.dbf
2 /oracle/oradata/test/undo01.dbf
3 /oracle/oradata/test/users01.dbf
3.利用rman更改数据文件存放路径并restore到新的路径
run {
set newname for datafile 1 to '/oracle/oradata/test/system01.dbf'
set newname for datafile 2 to '/oracle/oradata/test/undo01.dbf'
set newname for datafile 3 to '/oracle/oradata/test/users01.dbf'
restore datafile 1
restore datafile 2
restore datafile 3
}
4。重建控制文件
CREATE CONTROLFILE REUSE set DATABASE "test" RESETLOGS ARCHIVELOG
-- SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES 16
MAXLOGMEMBERS 2
MAXDATAFILES 30
MAXINSTANCES 1
MAXLOGHISTORY 453
LOGFILE
GROUP 1 '/oracle/oradata/test/redo01.log' SIZE 10M,
GROUP 2 '/oracle/oradata/test/redo02.log' SIZE 10M,
GROUP 3 '/oracle/oradata/test/redo03.log' SIZE 10M
-- STANDBY LOGFILE
DATAFILE
'/oracle/oradata/test/system01.dbf',
'/oracle/oradata/test/undo01.dbf',
'/oracle/oradata/test/users01.dbf'
CHARACTER SET ZHS16GBK
5.打开数据库
SQL>alter database open resetlogs
backup archivelog all delete input format '/rman/rman_%t_%s_%p.arc'
with a as
(select rownum p from dual connect by level<=21)
select
7 + CEIL(
(7 + CEIL(
(7 + CEIL(p/3))
/3))
/3)
from a
7+CEIL((7+CEIL((7+CEIL(p/3))/3))/3
本答案来自于互联网,仅供参考学习作用
如果您对我的回答有不满意的地方,还请您继续追问;
答题不易,互相理解,互相帮助!
源服务器和目的服务器的 *** 作系统,oracle版本均一致一:在源服务器上使用rman备份数据库,包括数据文件,归档日志文件和控制文件,参数文件的备份
二:在目的服务器上复制备份数据,并准备好相关的目录
三:在目的服务器上进行恢复,指定DBID,需要和源服务器的DBID一致
启动数据库到nomount状态,这里需要前面创建initorcl.ora文件,否则将报错 恢复参数文件 重启实例到nomout状态 恢复控制文件 还原数据库文件 恢复数据库文件,这里将报错
在sqlplus中对数据库进行until cancel *** 作后以resetlogs方式打开
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)