Oracle 19c新特性:DBCA静默模式克隆远端PDB
源库为ORCL中的orclpdb1,目标库为ORCL2。版本均为19c。
我们将利用19c中dbca新支持的-createFromRemotePDB
选项来从远端克隆PDB。
确认源库中有业务数据:
SQL> connect hr@orclpdb1
Enter password:
Connected.
SQL> select count(*) from hr.employees;COUNT(*)
----------107
在源库中创建common user。后续dbca会用这个用户来连接源库。
SQL> connect system
Enter password:
Connected.
SQL> show con_nameCON_NAME
------------------------------
CDB$ROOT
SQL> CREATE USER c##remote_user IDENTIFIED BY Welcome1 CONTAINER=ALL;User created.SQL> GRANT create session, create pluggable database TO c##remote_user CONTAINER=ALL;Grant succeeded.SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.20.0.0.0
在目标库所在数据库服务器上,静默方式执行dbca命令,克隆远端pdb:
dbca -silent -createPluggableDatabase -createFromRemotePDB \
-remotePDBName orclpdb1 \
-remoteDBConnString ORCL \
-remoteDBSYSDBAUserName sys -remoteDBSYSDBAUserPassword Welcome1 \
-sysDBAUserName sys -sysDBAPassword Welcome1 \
-dbLinkUsername c##remote_user -dbLinkUserPassword Welcome1 -sourceDB ORCL2 -pdbName pdbclone
输出如下:
Prepare for db operation
50% complete
Create pluggable database using remote clone operation
100% complete
Pluggable database "pdbclone" plugged successfully.
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/ORCLCDB2/pdbclone/ORCLCDB2.log" for further details.
日志如下:
$cat /u01/app/oracle/cfgtoollogs/dbca/ORCLCDB2/pdbclone/ORCLCDB2.log
[ 2023-10-20 07:47:55.920 GMT ] Prepare for db operation
DBCA_PROGRESS : 50%
[ 2023-10-20 07:47:55.982 GMT ] Create pluggable database using remote clone operation
DBCA_PROGRESS : 100%
[ 2023-10-20 07:48:23.910 GMT ] Pluggable database "pdbclone" plugged successfully.
验证,注意PDBCLONE被自动open了:
SQL> show pdbsCON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED READ ONLY NO3 PDBCLONE READ WRITE NO
SQL> alter session set container=pdbclone;Session altered.SQL> select count(*) from hr.employees;COUNT(*)
----------107
清理:
alter pluggable database pdbclone close;
drop pluggable database pdbclone including datafiles;
在clone的过程中,dbca会自动创建database link,名称固定为PDBCLONE_CLONE_LINK
,完成后会自动删除:
SQL> select * from all_db_links;
OWNER DB_LINK USERNAME HOST CREATED HID SHA VAL INT
---------- ------------------------------ ---------------- ---------------- --------- --- --- --- ---
SYS SYS_HUB SEEDDATA 17-APR-19 NO NO YES NO
SYS PDBCLONE_CLONE_LINK C##REMOTE_USER ORCL 20-OCT-23 NO NO YES NO
...
SQL> /OWNER DB_LINK USERNAME HOST CREATED HID SHA VAL INT
---------- ------------------------------ ---------------- ---------------- --------- --- --- --- ---
SYS SYS_HUB SEEDDATA 17-APR-19 NO NO YES NO
dbca创建database link的SQL类似于:
CREATE DATABASE LINK PDBCLONE_CLONE_LINK CONNECT TO c##remote_user IDENTIFIED BY Welcome1 USING 'ORCL';
drop database link PDBCLONE_CLONE_LINK;
当然,你不能主动创建,否则后续dbca克隆时会报错:
[FATAL] [DBT-19405] Database link (PDBCLONE_CLONE_LINK) is already exists.
错误
这里遇到一个非常奇怪的错误,就是当把-remoteDBConnString参数ORCL改为小写orcl时,居然会报错:
[FATAL] [DBT-08101] The selected PDB (orclpdb1) is not open.CAUSE: PDB has to be open in READ WRITE mode to perform the configuration.
这个错误和这个帖子类似。
也和我创建ORCL2的语句有关:
dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbname ORCLCDB2 -sid ORCL2 -responseFile NO_VALUE -characterSet AL32UTF8 -sysPassword Welcome1 -systemPassword Welcome1 -createAsContainerDatabase true -pdbName ORCLPDB1 -numberOfPDBs 1 -pdbAdminPassword Welcome1
估计全部用小写就没事了。
果然,删除时,如果指定数据库为orcl2,会报错:
[WARNING] [DBT-11503] The instance (orcl2) is not running on the local node. This may result in partial delete of Oracle database.CAUSE: A locally running instance is required for complete deletion of Oracle database instance and database files.ACTION: Specify a locally running database, or execute DBCA on a node where the database instance is running.
改成ORCL2就成功了:
dbca -silent -deleteDatabase -sourceDB ORCL2
Enter SYS user password:[WARNING] [DBT-19202] The Database Configuration Assistant will delete the Oracle instances and datafiles for your database. All information in the database will be destroyed.
Prepare for db operation
32% complete
Connecting to database
35% complete
39% complete
42% complete
45% complete
48% complete
52% complete
65% complete
Updating network configuration files
68% complete
Deleting instance and datafiles
84% complete
100% complete
Database deletion completed.
重建,这回全部用小写:
dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbname ORCL2 -sid ORCL2 -responseFile NO_VALUE -characterSet AL32UTF8 -sysPassword Welcome1 -systemPassword Welcome1 -createAsContainerDatabase true -pdbName orclpdb2 -numberOfPDBs 1 -pdbAdminPassword Welcome1
另外,-remoteDBConnString还是建议指向CDB。虽然在这篇博客中有成功的例证,但我没有成功。
以下是-remoteDBConnString分别指定为orclpdb1
和localhost:1521/ORCLPDB1
时的报错:
orcl2 $dbca -silent -createPluggableDatabase -createFromRemotePDB -remotePDBName ORCLPDB1 -remoteDBConnString orclpdb1 -remoteDBSYSDBAUserName sys -remoteDBSYSDBAUserPassword Welcome1 -sysDBAUserName sys -sysDBAPassword Welcome1 -dbLinkUsername c##remote_user -dbLinkUserPassword Welcome1 -sourceDB ORCL2 -pdbName pdbclone
[FATAL] [DBT-08101] The selected PDB (ORCLPDB1) is not open.CAUSE: PDB has to be open in READ WRITE mode to perform the configuration.orcl2 $dbca -silent -createPluggableDatabase -createFromRemotePDB -remotePDBName ORCLPDB1 -remoteDBConnString localhost:1521/ORCLPDB1 -remoteDBSYSDBAUserName sys -remoteDBSYSDBAUserPassword Welcome1 -sysDBAUserName sys -sysDBAPassword Welcome1 -dbLinkUsername c##remote_user -dbLinkUserPassword Welcome1 -sourceDB ORCL2 -pdbName pdbclone
[FATAL] [DBT-19407] Database option (SAMPLE_SCHEMA) is not installed in Local CDB (ORCL2).CAUSE: The database options installed on the Remote CDB(ORCLPDB1) must be the same as the database options installed on the Local CDB(ORCL2).
参考
- Oracle By Example: Clone PDBs using DBCA in Silent Mode
- Multitenant : DBCA PDB Remote Clone in Oracle Database 19c
- Cloning a Remote PDB Using DBCA: Example
- DBCA createPluggableDatabase命令行帮助
- DBCA 错误
相关文章:

Oracle 19c新特性:DBCA静默模式克隆远端PDB
源库为ORCL中的orclpdb1,目标库为ORCL2。版本均为19c。 我们将利用19c中dbca新支持的-createFromRemotePDB选项来从远端克隆PDB。 确认源库中有业务数据: SQL> connect hrorclpdb1 Enter password: Connected. SQL> select count(*) from hr.em…...

css:如何通过不同的值,改变盒子的样式和字体颜色通过computed而不是v-if
在使用uni-app编写功能时,可以通过computed方法来实现根据num这个值也可以是后端传过来的值只要是number类型都可以。不同取值来修改盒子的背景颜色和字体颜色。首先,在data中定义一个num来存储当前的值,然后在computed中创建一个样式对象&am…...

做外贸真诚是最好的套路
在朋友圈发装柜的照片,之前合作的一些其他供应商看到了就问:最近生意怎样啊?看着好像挺多货出的,怎么最近都没跟我拿货啊? 空了我就回复:最近一般啊,有人做得很好,单很多࿰…...

RPA厂商大比拼,哪家才更适合您?
引言:随着数字化时代的到来,自动化已成为推动企业数字化发展的关键举措之一,RPA作为自动化中的重要技术之一,可为企业提供了实现业务流程自动化的强大工具。然而,如何选择适合自己的RPA厂商也是各大企业现在面临的难题…...

更换网络ip地址怎么设置
在互联网时代,网络已经成为我们生活中不可或缺的一部分。随着网络技术的不断发展,IP地址作为网络通信中的重要标识,其重要性日益凸显。在某些情况下,我们需要更换网络IP地址以保护自己的信息安全。那么,更换网络IP地址…...

开始学习Go编程
探索Go编程中的语法、数据类型和控制流 Go,又称为Golang,因其简单性、性能和效率而广受欢迎。在本文中,我们将深入研究构成Go编程语言基础的基本概念。从理解其语法和数据类型到掌握控制流和函数,我们将为您提供启动Go编程之旅所…...

《SpringBoot项目实战》第五篇—接口发生异常如何统一处理
系列文章导航 第一篇—接口参数的一些弯弯绕绕 第二篇—接口用户上下文的设计与实现 第三篇—留下用户调用接口的痕迹 第四篇—接口的权限控制 第五篇—接口发生异常如何统一处理 本文参考项目源码地址:summo-springboot-interface-demo 前言 大家好!…...

vue+golang上传微信头像
<button class"avatar" open-type"chooseAvatar" chooseavatar"onChooseAvatar"><image :src"avatarUrl" class"avatar-img"></image></button> // 微信头像修改onChooseAvatar(e) {this.uploadFil…...

JavaScript charCodeAt() 方法
charCodeAt() 方法是 JavaScript 字符串对象的一个方法,它用于返回给定位置的字符的 Unicode 编码值(整数)。Unicode 编码是一个标识字符的数字,它包含了世界上几乎所有字符的映射,包括常见字符、特殊字符和表情符号。…...

Talk | 纽约州立宾汉姆顿大学博士生丁琰:开放环境中机器人的任务与动作规划
本期为TechBeat人工智能社区第541期线上Talk。 北京时间10月26日(周四)20:00,纽约州立宾汉姆顿大学博士生—丁琰的Talk已准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “开放环境中机器人的任务与动作规划”࿰…...

2023年Q3企业邮箱安全性报告:境内钓鱼邮件超过境外攻击
10月25日,Coremail邮件安全联合北京中睿天下信息技术有限公司发布《2023年第三季度企业邮箱安全性研究报告》。2023年第三季度企业邮箱安全呈现出何种态势?作为邮箱管理员,我们又该如何做好防护? 以下为精华版阅读,如需…...

WebSocket 原理揭秘:让你彻底搞懂 Websocket 原理
WebSocket 的原理 WebSocket 是什么? WebSocket 是一种新型的协议,它可以在客户端和服务器之间建立长连接,实现双向通信。在传统的 HTTP 协议中,当客户端向服务器发送请求后,服务器会返回响应,然后连接就…...

react中的函数式组件和类式组件
一、函数组件 1. 定义函数组件 在React中,函数组件(Functional Component)是一种通过纯粹的JavaScript函数定义的UI组件。函数组件采用函数的方式接收一个输入参数 props,并返回一个React元素或者一组React元素作为输出。定义函…...

Visual Studio 2022 设置 PySide6 扩展工具
前言 本人不想电脑上装一堆的IDE,所以把 Python 开发也交给了 Visual Studio,如果你不是用 Visual Studio 做 Python 开发,下文就不用看了。 PySide简介 PySide跟PyQt类似,都是支持Python的Qt包,不同的是,PyQt是第三方的,PySide是Qt官方的。 PySide的推出比PyQt晚很…...

【高效开发工具系列】Postman
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…...

汇编语言王爽第四版17.3完程可运行可调试
汇编语言王爽第四版17.3节完整程序,可调试,可运行。 最基本的字符串输入程序,具备以下功能: 1、在输入的同时需要显示这个字符串; 2、输入回车符后,一个字符串的输入结束; 3、能够删除已经输入…...

CH9329芯片应用—简介
概述 CH9329是一款串口转USB HID设备功能芯片,根据不同的工作模式,HID设备可以识别为:USB键盘设备、USB鼠标设备或者自定义HID类设备。接收串口数据,并自动根据串口工作模式进行数据解析,解析完成后按照HID类设备规范…...

mysql查看插入记录与查看mysql实时查询和插入速度
我真正关心的数据 比如一秒钟到底能插入多少行数据?慢查询有多少? 慢是一个相对概念,慢的绝对值时间是可以设置的,例如我设置long_query_time为10秒,那么但凡超过10秒的查询都可以认为是慢查询查询操作的超时时间mysql中系统变量什么意思?怎么查看系统变量? show varia…...

如何在VScode中让printf输出中文
如何在VScode中让printf输出中文? 1、在“Visual Studio Code”图标上右击,弹出对话框。见下图: 2、点击“以管理员身份运行”,得到下图: 3、点击“UTF-8”按钮,得到下图: 4、点击“通过编码重…...

qt hiRedis封装使用
qt Redis使用...

整理指定文件夹下的所有文件,以类树状图显示并生成对应超链接
最近在整理家里学习资料的时候,由于年代久远,找不到我想要找的文件,windows文件搜索速度感觉太慢。于是想要生成一份类似文件索引的东西来显示所有资料,让我可以快速的找到需要的资料路径 直接上代码 import os import datetim…...

解密代理技术:保障隐私与网络安全
在当今信息时代,网络代理技术是维护隐私和增强网络安全的关键工具。本文将深入研究Socks5代理、IP代理的应用,以及它们在网络安全、爬虫开发和HTTP协议中的关键作用。 引言 随着互联网的不断扩张,我们的在线活动变得日益复杂,也…...

k8s中,“deployment”充当什么角色?有什么功能?
在Kubernetes中,"Deployment"是一种控制器(Controller),它充当了以下主要角色和功能: 应用程序部署和管理: Deployment用于定义和管理应用程序的部署。它允许您指定应用程序的副本数(…...

深度学习:激活函数曲线总结
深度学习:激活函数曲线总结 在深度学习中有很多时候需要利用激活函数进行非线性处理,在搭建网路的时候也是非常重要的,为了更好的理解不同的激活函数的区别和差异,在这里做一个简单的总结,在pytorch中常用的激活函数的…...

Elasticsearch-06-Elasticsearch Java API Client
前言 简介 在 Elasticsearch7.15版本之后,Elasticsearch官方将它的高级客户端 RestHighLevelClient标记为弃用状态。同时推出了全新的 Java API客户端 Elasticsearch Java API Client,该客户端也将在 Elasticsearch8.0及以后版本中成为官方推荐使用的客…...

计算机网络第3章-运输层(2)
可靠数据传输原理 可靠数据传输依靠数据在一条可靠信道上进行传输。 TCP也正是依靠可靠信道进行传数据,从而数据不会被丢失。 而实现这种可靠数据传输服务是可靠数据传输协议的责任 构造可靠数据传输协议 1.经完全可靠信道的可靠数据传输:rdt1.0 在…...

【微信小程序】实现投票功能(附源码)
一、Vant Weapp介绍 Vant Weapp 是一个基于微信小程序的组件库,它提供了丰富的 UI 组件和交互功能,能够帮助开发者快速构建出现代化的小程序应用。Vant Weapp 的设计理念注重简洁、易用和高效,同时提供灵活的定制化选项,以满足开发…...

Pytorch入门实例的分解写法
数据集是受教育年限和收入,如下图 代码如下 import torch import numpy as np import matplotlib.pyplot as plt import pandas as pddata pd.read_csv(./Income.csv)X torch.from_numpy(data.Education.values.reshape(-1,1).astype(np.float32)) Y torch.from_numpy(data…...

Google单元测试sample分析(一)
本文开始从googletest提供的sample案例分析如何使用单元测试, 代码路径在googletest/googletest/samples/sample1.unittest.cc 本文件主要介绍EXPECT*相关宏使用 EXPECT_EQ 判断是否相等 EXPECT_TRUE 是否为True EXPECT_FALSE 是否为False TEST(FactorialTest, N…...

requests 实践
Requests 常用参数 method: 请求方式 get,或者 post,put,delete 等 url : 请求的 url 地址 接口文档标注的接口请求地址 params:请求数据中的链接,常见的一个 get 请求,请求参数都是在 url 地址…...