Oracle19c 如何用rman duplicate 克隆一个数据库。(Backup-Based, no achive log)
Oracle19c 如何用rman duplicate 克隆一个数据库。
首先克隆有两种方法,一种是Backup-Based,一种是Active方式。官网文档链接
https://docs.oracle.com/database/121/BRADV/rcmdupdb.htm#BRADV010
在这里我用的是Backup-based方式
(测试建议可以关闭归档日志,因为这个日志会过期,如果找不到恢复时会报错。)
备份与ACTIVE的主要不同就是备库需要先生成备份,再把它COPY到目标机器上。
步骤如下:
我用的机器oracle19c源库(IP:192.168.56.110),oracle19c-toclone目标库(192.168.56.111)
1)在目标库用DBCA创建一个空的database,实例名为newdb(非容器)。
因为我的源库是有HR DATABASE的,你的空库可以不安装HR,这样克隆后也好比较。
2) 配置host和监听
Backup-based方式可以不配置静态监听,因为文件都是用FTP或SCP方式直接传输的。恢复过程中不需要连接源库。
所以,在Backup-based方式下第2步可以完全忽略。
3)复制前的准备工作
3.1)在源库,编辑pfile文件(这个initorcl.ora实际上就是默认生成的pfile)
(如果文件没有的话,你可以在源库database open的情况下,执行create pfile from memory创建一个。注:还有其它方法)
[oracle@oracle19c dbs]$ pwd
/u01/app/oracle/product/19c/db_1/dbs
做如下修改,修改control_files路径为新的实例, db_name。
还有最重要的是db_file_name_convert,log_file_name_convert。
因为源库和目标库的实例名不同(如果完全一样,应该不用加convert呢),所以需要转换。
*.control_files='/u01/app/oracle/oradata/NEWDB/control01.ctl'#Restore Controlfile
*.db_name='newdb'
*.db_recovery_file_dest_size=5368709120
*.db_recovery_file_dest='/u01/app/oracle/fra'
*.db_file_name_convert='/u01/app/oracle/oradata/ORCL','/u01/app/oracle/oradata/NEWDB/'
*.log_file_name_convert='/u01/app/oracle/oradata/ORCL','/u01/app/oracle/oradata/NEWDB/'
3.2)复制密码文件,和spfile到目标库
scp initorcl.ora 192.168.56.111:/u01/app/oracle/product/19c/db_1/dbs/initnewdb.ora
scp orapworcl 192.168.56.111:/u01/app/oracle/product/19c/db_1/dbs/orapwnewdb
3.3)在源库生成一个备份,并复制到目标机器。
3.3.1)源库用mount方式启动数据库(因为未开归档,只能在MOUNT下备份。开了归档的情况下,可以OPEN状态备份)
SQL>startup mount
3.3.2)用rman备份
[oracle@oracle19c full]$ rman target /
RMAN> backup database include current controlfile format '/full/full_%d_%s_%T_%p.bak';
备份成功后,最后会还会备份控制文件,控制文件也需要COPY到目标机器。
Starting Control File and SPFILE Autobackup at 04-JUN-21
piece handle=/u01/app/oracle/fra/ORCL/autobackup/2021_06_04/o1_mf_s_1074316419_jcmvtwog_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 04-JUN-21
3.3.3)copy到目标机器相应目录
因为我的RMAN这里配置为3个并发,所以生成了3个文件。(是不是感觉前面所学的知识都结合起来了啊?:-)
RMAN>SHOW ALL
CONFIGURE DEVICE TYPE DISK PARALLELISM 3 BACKUP TYPE TO BACKUPSET;
[oracle@oracle19c full]$ scp full_ORCL_* 192.168.56.111:/home/oracle/bak
oracle@192.168.56.111's password:
full_ORCL_183_20210604_1.bak 100% 807MB 30.7MB/s 00:26
full_ORCL_184_20210604_1.bak 100% 616MB 26.9MB/s 00:22
full_ORCL_185_20210604_1.bak 100% 10MB 21.3MB/s 00:00
[oracle@oracle19c full]$ scp /u01/app/oracle/fra/ORCL/autobackup/2021_06_04/o1_mf_s_1074316419_jcmvtwog_.bkp 192.168.56.111:/u01/app/oracle/fra/ORCL/autobackup/2021_06_04/o1_mf_s_1074316419_jcmvtwog_.bkp
oracle@192.168.56.111's password:
o1_mf_s_1074316419_jcmvtwog_.bkp 100% 10MB 14.8MB/s 00:00
4)用pfile启动目标库
(目标库需要在NOMOUNT方式下进行克隆。)
startup nomount pfile='/u01/app/oracle/product/19c/db_1/dbs/initnewdb.ora';
5)连接RMAN进行复制
5.1)连接anxiliary(目标库)
注意,这里只需连接目标库就可以了,因为所需文件前面已经全部COPY过来了。
[oracle@oracle19c-toclone ~]$ rman auxiliary /
5.2)执行复制命令(可以仔细查看一下与Active方式命令的不同)
nofilenamecheck 参数表示复制过去,文件是用同样的名字。如果不加,会报错。
RMAN> duplicate database to newdb backup location '/home/oracle/bak' nofilenamecheck;
Starting Duplicate Db at 03-JUN-21
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=39 device type=DISK
allocated channel: ORA_AUX_DISK_2
channel ORA_AUX_DISK_2: SID=40 device type=DISK
。。。
database opened
Cannot remove created server parameter file
Finished Duplicate Db at 03-JUN-21
6)检查目标库,及后续工作
RMAN复制完后,会自动OPEN目标库。此时,你可以用sqlplus重新连接。
[oracle@oracle19c-toclone admin]$ sqlplus / as sysdba
SQL> select status from v$instance;
STATUS
------------
OPEN
SQL> select count(*) from hr.employees;
COUNT(*)
----------
107
6.2)最后,你可以在目标库手动删除pfile里面的convert行。再用pfile启动。
启动完后(create spfile from memory),生成spfile。
下次正常启动,你就不再需要pfile了。
Oracle19c 如何用rman duplicate 克隆一个数据库。(Backup-Based, no achive log)的更多相关文章
- Oracle19c 如何用rman duplicate 克隆一个数据库。(Backup-Based, achive log)
Oracle19c 如何用rman duplicate 克隆一个数据库.(Backup-Based, achive log) 首先克隆有两种方法,一种是Backup-Based,一种是Active方式 ...
- Oracle19c 如何用rman duplicate 克隆一个数据库。(Active方式)
Oracle19c 如何用rman duplicate 克隆一个数据库. 首先克隆有两种方法,一种是Backup-Based,一种是Active方式.官网文档链接https://docs.oracle ...
- Oracle 11gR2使用RMAN duplicate复制数据库
11g的RMAN duplicate 个人感觉比10g的先进了很多,10g需在rman备份的基础上进行复制,使用RMAN duplicate创建一个数据完全相同但DBID不同的数据库.而11g的RMA ...
- Oracle 11gR2 使用RMAN Duplicate复制数据库
Oracle 11gR2 使用RMAN Duplicate复制数据库 前言: 上周刚做完一个项目,用户要求RAC的数据库可以自己主动备份到另外一个单节点上,单节点可以正常拿起来就能用. ...
- RMAN DUPLICATE ADG DEMO
RMAN DUPLICATE ADG DEMO 生产环境谨慎使用,建议生产环境采用RMAN备份恢复的方式. 本演示案例所用环境: primary standby OS Hostname pry s ...
- 基于RMAN从活动数据库异机克隆(rman duplicate from active DB)
Oracle 11g RMAN能够实现基于活动数据库进行异机克隆,从而省去需要先备份再ftp到辅助服务器的过程.这一切可以全部交给Oracle来搞定.在克隆期间,Oracle会读取Target DB的 ...
- 基于RMAN的异机数据库克隆(rman duplicate)
对于基于生产环境下的数据库的版本升级或者测试新的应用程序的性能及其影响,备份恢复等等,我们可以采取从生产环境以克隆的方式将其克隆到本地而不影响生产数据库的正常使用.实现这个功能我们可以借助rman d ...
- 利用rman duplicate重建oracle dataguard standby数据库
问题背景 适用情况: 操作系统: redhat 6.5 数据库: oracle 11g r2 问题描述: failover后原主库无法恢复和启动或者丢失主备关系 优点 不需要对primary数据库停机 ...
- 11g 使用rman duplicate复制数据库,创建辅助实例
一,创建所需目录 1)创建审计文件目录 PROD1@dbrac1 /dsg/oracle11$ cd $ORACLE_BASE/admin PROD1@dbrac1 /u01/app/oracle/a ...
随机推荐
- JAVA并发(6)-并发队列ArrayBlockingQueue
本文讲ArrayBlockingQueue 1. 介绍 一个基于数组的有界阻塞队列,FIFO顺序.支持等待消费者和生产者线程的可选公平策略(默认是非公平的).公平的话通常会降低吞吐量,但是可以减少可变 ...
- 操作系统-gcc编译器驱动程序
gcc编译器驱动程序,读取x.c文件,翻译成可执行目标文件x 1.预处理阶段 预处理器(cpp)将x.c(源程序,文本文件)中的#等直接插入程序文本中,成为另一个c程序x.i(文本文件) 2.编译阶段 ...
- centos 7 查看磁盘使用情况
1.查询系统整体磁盘使用情况 df -h [root@hadoop100 aubunt]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 17 ...
- 详解Apache Dubbo的SPI实现机制
一.SPI SPI全称为Service Provider Interface,对应中文为服务发现机制.SPI类似一种可插拔机制,首先需要定义一个接口或一个约定,然后不同的场景可以对其进行实现,调用方在 ...
- JVM 内存溢出 实战 (史上最全)
文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...
- div和img垂直居中的方法
div垂直居中可以使用height和line-height,多个div的话就不适用了. 可以使用下面的方式垂直居中 <div class="parent"> <d ...
- ES6学习笔记之函数(二)
5.作用域 使用默认参数时,参数会形成一个独立的作用域,此作用域与函数体中的作用域是平行关系,互不影响. var x = 1; function show(x, y= function () { x= ...
- 根据所处位置提取单元格内容的函数(left、right、mid)和查找字符串位于单元格内容第几位的函数(find)
1.从左到右提取:left(value,num_chars) 注释:value为操纵单元格,num_chars表示截取的字符的数量 2.从右往左提取:right(value,num_chars) 注释 ...
- python画图库及函数,绘制图片从文件提取出来的数据集转化为int,不然作为坐标轴的时候因为是字符串而无法排序
转化int:
- Win10 安装msi文件报错2503/2502解决方案
我在网上查了很多资料,试了很多次都不行 唯独这种方式管用,请往下看 最后这一种方法我用了是有效的,在电脑左下角的"Win图标"上右击,选择"命令提示符(管理员)" ...