Oracle19c 如何用rman duplicate 克隆一个数据库。(Active方式)
Oracle19c 如何用rman duplicate 克隆一个数据库。
首先克隆有两种方法,一种是Backup-Based,一种是Active方式。官网文档链接
https://docs.oracle.com/database/121/BRADV/rcmdupdb.htm#BRADV010
在这里我用的是ACTIVE方式,这种方式无需创建备份,可以直接进行克隆。
(备份与ACTIVE的主要不同就是备份需要先生成备份,再把它COPY到目标机器上。--关于这个,有空再试试看)
步骤如下:
我用的机器oracle19c源库(IP:192.168.56.110),oracle19c-toclone目标库(192.168.56.111)
1)在目标库用DBCA创建一个空的database,实例名为newdb(非容器)。
因为我的源库是有HR DATABASE的,你的空库可以不安装HR,这样克隆后也好比较。
2) 配置host和监听,记得目标库一定需要配置静态监听,如此就可以在数据库没有打开的时候RMAN也能够连接了。
2.1)目标库hosts文件
[oracle@oracle19c-toclone dbs]$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.111 oracle19c-toclone
192.168.56.110 oracle19c
2.2)目标库listner文件
[oracle@oracle19c-toclone admin]$ pwd
/u01/app/oracle/product/19c/db_1/network/admin
[oracle@oracle19c-toclone admin]$ cat listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/19c/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle19c-toclone)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = newdb)
(ORACLE_HOME = /u01/app/oracle/product/19c/db_1)
(SID_NAME = newdb)
)
)
2.3)源库hosts文件
[oracle@oracle19c dbs]$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.110 oracle19c
192.168.56.111 oracle19c-toclone
2.4)源库listner文件(可以不用变)
因为RMAN是在源库执行,通过源库连接目标库,所以可以不配置静态监听。
更重要的是,因为源库在archive log打开的情况下,是可以在数据库open状态下进行克隆的。
2.5)源库tnsname.ora文件,加上如下两个实例。
源库别名为PROD(当然,这个你也可以不需要,直接用ORCL也可以), 目标库别名TOCLONE
TOCLONE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle19c-toclone)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = newdb)
)
)
PROD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle19c)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
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
4)用pfile启动目标库
(目标库需要在NOMOUNT方式下进行克隆。注:这也是为何前面需要静态注册的原因。不然,实例未打开,客户端是无法连接的。)
startup nomount pfile='/u01/app/oracle/product/19c/db_1/dbs/initnewdb.ora';
5)连接RMAN进行复制
4.1)连接target(源库)和anxiliary(目标库)
rman target sys/Yang1u2u@prod auxiliary sys/Yang1u2u@toclone
4.2)执行复制命令。nofilenamecheck参数表示复制过去,文件是用同样的名字。如果不加,会报错。
RMAN> duplicate target database to newdb from active database 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 克隆一个数据库。(Active方式)的更多相关文章
- Oracle19c 如何用rman duplicate 克隆一个数据库。(Backup-Based, achive log)
Oracle19c 如何用rman duplicate 克隆一个数据库.(Backup-Based, achive log) 首先克隆有两种方法,一种是Backup-Based,一种是Active方式 ...
- Oracle19c 如何用rman duplicate 克隆一个数据库。(Backup-Based, no achive log)
Oracle19c 如何用rman duplicate 克隆一个数据库. 首先克隆有两种方法,一种是Backup-Based,一种是Active方式.官网文档链接https://docs.oracle ...
- 基于RMAN从活动数据库异机克隆(rman duplicate from active DB)
Oracle 11g RMAN能够实现基于活动数据库进行异机克隆,从而省去需要先备份再ftp到辅助服务器的过程.这一切可以全部交给Oracle来搞定.在克隆期间,Oracle会读取Target DB的 ...
- 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)
对于基于生产环境下的数据库的版本升级或者测试新的应用程序的性能及其影响,备份恢复等等,我们可以采取从生产环境以克隆的方式将其克隆到本地而不影响生产数据库的正常使用.实现这个功能我们可以借助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 ...
随机推荐
- JVM_ 动态链接
虚拟机栈: -> 栈帧---对应每个方法----> 包含: 局部变量表, 本地方法栈, 动态链接, 方法出口, 动态链接: 每个栈帧都保存了 一个 可以指向当前方法所在类的 运行时常量池, ...
- 性能工具之Jmeter小白入门系列之一
一.简单了解 Apache JMeter The Apache JMeter application is open source software, a 100% pure Java applica ...
- Integer 如何实现节约内存和提升性能的?
在Java5中,为Integer的操作引入了一个新的特性,用来节省内存和提高性能.整型对象在内部实现中通过使用相同的对象引用实现了缓存和重用. 上面的规则默认适用于整数区间 -128 到 +127(这 ...
- csps考前的一些总结(然而可能并没有用)
记录考前的一些复习和总结,如果没有特殊情况不再写新的题解了 图论: 一.最短路: 1.spfa算法中的vis数组记录的是有没有入队,防止多次入队,通过松弛操作来达到最优解 2.dijkstra算法的v ...
- leetcode5697. 检查二进制字符串字段
5697. 检查二进制字符串字段给你一个二进制字符串 s ,该字符串 不含前导零 . 如果 s 最多包含 一个由连续的 '1' 组成的字段 ,返回 true .否则,返回 false . 示例 ...
- 自动按需引入组件用不了(Vant)
按照官网的自动按需引入之后,这样写是报错的,直接在vue页面中这样引用也是报错的. 正确的使用方法是这样的
- excel VBA使用教程
1.选择文件--选项 2.选择自定义功能区--开发工具的√勾上
- 对volatile的理解--从JMM以及单例模式剖析
请谈谈你对volatile的理解 1.volitale是Java虚拟机提供的一种轻量级的同步机制 三大特性1.1保证可见性 1.2不保证原子性 1.3禁止指令重排 首先保证可见性 1.1 可见性 概念 ...
- 6.12、通过kvm可视化管理虚拟机
6.12.1.通过Xmanager - Passive管理kvm虚拟机(首先要安装xmanager): 1.安装虚拟化管理软件: [root@centos7 ~]# yum install -y vi ...
- CentOS-Docker安装phpMyAdmin(MySQL的web客户端)
注:phpMyAdmin是一款MySQL的web客户端,还是很直观且好用的,所以推荐给你~ 下载镜像 $ docker pull phpmyadmin/phpmyadmin 运行镜像 1.无指定固定数 ...