oracle迁移 rman,ORACLE RMAN迁移

1.进入RMAN

rman target /

2.关闭目标数据库

shutdown immediate

3.创建原始参数文件  任意路径均可, 下面会用到

*.audit_file_dest='C:\app\Administrator\admin\orcl\adump'

*.audit_trail='db'

*.compatible='11.2.0.4.0'

*.control_files='C:\app\Administrator\oradata\orcl\control01.ctl','C:\app\Administrator\oradata\orcl\control02.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_name='orcl'

*.diagnostic_dest='C:\app\Administrator'

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

*.log_archive_dest_1='LOCATION=C:\app\arch'

*.memory_target=1234173952

*.open_cursors=300

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.undo_tablespace='UNDOTBS1'

注意与数据库安装路径相对应, 可以参照当前数据库的"ORACLE_HOME\admin\orcl\pfile\init.ora.xxxx"和备份的SPFILE进行编写

4.加载参数文件

startup nomount pfile="参数文件"

5.加载控制文件

restore controlfile from "控制文件备份文件";

6.挂载数据库

alter database mount;

7.将备份集信息重新导入到当前控制文件中

rman target /catalog start with "/OracleBackup/";可能会报下面错误:RMAN-12010: 自动通道分配初始化失败 RMAN-06189: 当前 DBID 1010101010 与目标装载数据库 (3030303030) 不匹配需要重新设置DBIDshutdown immediate set dbid=3030303030 (备份数据库的DBID)exit重新打开数据库mount状态> startup nomount pfile="C:\initparam\pfile.ora" > alter database mount; > catalog start with "C:\OracleBackup\";

8.检查备份

crosscheck backup;

9.转储数据文件

run{

allocate channel a1 type disk;

allocate channel a2 type disk;

set newname for datafile 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF' to 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF';

set newname for datafile "E:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF" to "C:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF";

set newname for datafile "E:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF" to "C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF";

set newname for datafile "E:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF" to "C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF";

set newname for datafile "E:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF" to "C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF";

restore database;

switch datafile all;

release channel a1;

release channel a2;

}或者可以使用一条命令进行整个库的修改,替换红色字体

set newname for database to '/oradata/orapuabis/%b';

switch datafile all;

10. 恢复recover

export ORACLE_BASE=/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1

export ORACLE_SID=orapuabis

export PATH=$ORACLE_HOME/bin:$PATH

rman target / log /backup/log/rman_arch_20191206.log append<

run{

allocate channel cha1 type disk;

allocate channel cha2 type disk;

recover database;

release channel cha1;

release channel cha2;

}

exit;

EOF

此出可能会遇到无法找到归档文件的情况

请先进行将归档文件恢复

catalog start with '归档文件备份目录'

--------以下是恢复到指定时间------------> sql "alter session set nls_date_format=''yyyy-mm-dd hh24:mi:ss''";

> recover database until time '2018-12-26 11:00:00';

11.打开数据库

打开数据库可能会出现无法打开的情况

alter database open resetlogs;

出现下列报错,由于redolog文件没有进行修改alter database open resetlogs * 第 1 行出现错误: ORA-00344: 无法重新创建联机日志 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG' ORA-27040: 文件创建错误, 无法创建文件 OSD-04002: 无法打开文件 O/S-Error: (OS 3) 系统找不到指定的路径。select * from v$logfile;alter database rename file 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG' to 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG'; alter database rename file 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG' to 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG'; alter database rename file 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG' to 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG';查看日志文件状态

SQL> select group#,bytes/1024/1024||'M',status from v$log;

GROUP# BYTES/1024/1024||'M' STATUS

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

1 50M CLEARING_CURRENT

3 50M CLEARING

2 50M CLEARING

SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1; 数据库已更改。 SQL> ALTER DATABASE CLEAR LOGFILE GROUP 2; 数据库已更改。 SQL> ALTER DATABASE CLEAR LOGFILE GROUP 3; 数据库已更改。

SQL> alter database open resetlogs; alter database open resetlogs * 第 1 行出现错误: ORA-00392: 日志 1 (用于线程 1) 正被清除, 不允许操作 ORA-00312: 联机日志 1 线程 1: 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG'

报控制文件可能比较老等情况

处理方法如下:打开隐藏函数 SQL> alter system set "_allow_resetlogs_corruption" = true scope=spfile; SQL> recover database until cancel using backup controlfile; SQL> alter database open resetlogs; 启动数据库成功 关闭隐藏函数 SQL>alter system set "_allow_resetlogs_corruption" = false scope=spfile;startup 数据库就OK了

来源:https://www.cnblogs.com/yrash/p/12002218.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值