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) 不匹配
需要重新设置DBID
shutdown 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<<EOF
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了

 

 

  

posted @ 2019-12-07 16:25  yrash2019  阅读(805)  评论(0)    收藏  举报