基于版本:19c (12.2.0.3) AskScuti

创建方法:克隆创建

对应路径:属于克隆。PDB类型为:Refreshable

相关系列请参考《Oracle创建PDB列表文章

注意创建可刷新的PDB,源库必须处于归档模式和本地UNDO模式

内容总览

1. 环境概述

2. 检查源库环境

3. 源库创建用户并授权

4. 目标库编辑TNS

5. 目标库创建DBLink

6. 目标库创建可刷新PDB

7. 目标库打开可刷新PDB

8. 可刷新PDB测试

1. 环境概述

为了概念理解统一,提前约定下:

远程CDB2中有个ERP1,我们称远程CDB2为“源CDB”,IP:192.168.1.14

本地CDB1中有个PDB1,我们称本地CDB1为“目标CDB”,IP:192.168.1.12

注意:源CDB和目标CDB是相对而言。就是被克隆的对象叫“”,准备克隆出来的对象叫“目标”。因此,下面就是要通过源CDB2中的ERP1,远程克隆出来一个可刷新的PDB,放在目标CDB1中,名称为PDB_REF。

2. 检查源库环境

检查是否为归档模式

[oracle@henry ~]$ rlwrap sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Sat Aug 31 07:27:48 2019
Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0 SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED
---------- --------- ---------- ----------
2 PDB$SEED READ ONLY NO
3 ERP1 READ WRITE NO
SQL> archive log list;
Database log mode   Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/arch1
Oldest online log sequence 5
Next log sequence to archive 7
Current log sequence 7

检查是否为本地UNDO

SQL> select property_name,property_value from database_properties where property_name='LOCAL_UNDO_ENABLED';

PROPERTY_NAME         PROPERTY_VALUE
-------------------- --------------------
LOCAL_UNDO_ENABLED TRUE

3. 源库创建用户并授权

SQL> create user c##u1 identified by oracle;

User created.

SQL> grant create session,create pluggable database,sysoper to c##u1 container=all;

Grant succeeded.

4. 目标库编辑TNS

CDB2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.14)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = CDB2)
)
)

目标库编辑tnsnames别名,指向源库。

5. 目标库创建DBLink

SQL> create database link cdb2_dblink connect to c##u1 identified by oracle using 'CDB2';

Database link created.

#测试DBLINK

SQL> select * from tab@cdb2_dblink;

no rows selected

6. 目标库创建可刷新PDB

注意:刷新模式子句只支持 CREATE PLUGGABLE DATABASE ... FROM 语句。

6.0 基于默认 REFRESH MODE NONE

默认缺省情况下,创建普通PDB(非刷新PDB)

6.1 基于手工刷新 REFRESH MODE MANUAL

SQL> !mkdir /u01/app/oracle/oradata/CDB1/pdbref

SQL> create pluggable database pdb_ref from erp1@cdb2_dblink create_file_dest='/u01/app/oracle/oradata/CDB1/pdbref' refresh mode manual;

6.2 基于自动刷新 REFRESH MODE EVERY number_of_minutes MINUTES

SQL> !mkdir /u01/app/oracle/oradata/CDB1/pdbrefauto

SQL> create pluggable database pdb_refauto from erp1@cdb2_dblink create_file_dest='/u01/app/oracle/oradata/CDB1/pdbrefauto' refresh mode every 60 minutes;

查看

SQL> show pdbs

    CON_ID CON_NAME  OPEN MODE  RESTRICTED
---------- --------- ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 MOUNTED
4 PDB_REF MOUNTED
5 PDB_REFAUTO MOUNTED

7. 目标库打开可刷新PDB

可刷新PDB为了保证和源库一致,必须只能以 READ ONLY 只读模式打开。

SQL> alter pluggable database pdb_ref open read only;

Pluggable database altered.

SQL> show pdbs

    CON_ID CON_NAME  OPEN MODE  RESTRICTED
---------- --------- ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 MOUNTED
4 PDB_REF READ ONLY NO
5 PDB_REFAUTO MOUNTED

无法以读写模式打开

SQL> alter pluggable database pdb_ref open;
alter pluggable database pdb_ref open
*
ERROR at line 1:
ORA-65341: cannot open pluggable database in read/write mode

8. 可刷新PDB测试

8.1 源库创建测试数据

SQL> show pdbs

    CON_ID CON_NAME  OPEN MODE  RESTRICTED
---------- --------- ---------- ----------
2 PDB$SEED READ ONLY NO
3 ERP1 READ WRITE NO
SQL> alter session set container=erp1; Session altered. SQL> create table test_ref(id number); Table created. SQL> insert into test_ref select object_id from dba_objects where rownum<501; 500 rows created. SQL> commit; Commit complete. SQL> select count(*) from test_ref; COUNT(*)
----------
500

8.2 目标库刷新

刷新前查看

SQL> show pdbs

    CON_ID CON_NAME  OPEN MODE  RESTRICTED
---------- --------- ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 MOUNTED
4 PDB_REF READ ONLY NO
5 PDB_REFAUTO MOUNTED
SQL> alter session set container=pdb_ref; Session altered. SQL> select count(*) from test_ref;
select count(*) from test_ref
*
ERROR at line 1:
ORA-00942: table or view does not exist

目标库关闭PDB_REF进行手工刷新

注意:执行刷新时,必须关闭可刷新的PDB。如果尝试自动刷新时未关闭可刷新的PDB,则将刷新延迟到下一次计划。如果执行手动刷新时未关闭可刷新的PDB,则会报告错误。自动刷新模式的PDB也可以执行手工刷新。

SQL> show pdbs

    CON_ID CON_NAME  OPEN MODE  RESTRICTED
---------- --------- ---------- ----------
4 PDB_REF READ ONLY NO

SQL> alter pluggable database pdb_ref close immediate; Pluggable database altered. SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED
---------- --------- ---------- ----------
4 PDB_REF MOUNTED

SQL> alter pluggable database pdb_ref refresh; Pluggable database altered.

8.3 目标库刷新后查看

SQL> alter pluggable database pdb_ref open read only;

Pluggable database altered.

SQL> show pdbs

    CON_ID CON_NAME  OPEN MODE  RESTRICTED
---------- --------- ---------- ----------
4 PDB_REF READ ONLY NO SQL> select count(*) from test_ref; COUNT(*)
----------
500

番外:如何克隆可刷新的PDB(Refreshable PDB)的更多相关文章

  1. 番外:克隆本地PDB中其他参数和子句的说明

    基于版本:19c (12.2.0.3) AskScuti 创建方法:克隆本地PDB(从本地其他PDB创建新的PDB) 对应路径:Creating a PDB --> Cloning --> ...

  2. 番外:可刷新PDB的管理操作(如何切换PDB Switching Over)

    基于版本:19c (12.2.0.3) AskScuti 主题:可刷新PDB如何进行切换操作 内容说明:本篇延续如何克隆可刷新的PDB(Refreshable PDB)一文,进行切换实验. 具体请参考 ...

  3. 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  4. 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV

    这次博客园的排版彻底残了..高清版请移步: https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程: 给深度学习入门者的Python快速教程 - 基础篇 给深度 ...

  5. Opengl_入门学习分享和记录_番外篇01(MacOS上如何在Xcode 开始编辑OpenGL)

    写在前面的废话: 哈哈 ,我可真是勤勉呢,今天又来更新了,这篇文章需要大家接着昨天的番外篇00一起食用! 正文开始: 话不多说,先看代码. 这里主要全是使用的glfwwindowhint 这个函数,他 ...

  6. iOS冰与火之歌(番外篇) - 基于PEGASUS(Trident三叉戟)的OS X 10.11.6本地提权

    iOS冰与火之歌(番外篇) 基于PEGASUS(Trident三叉戟)的OS X 10.11.6本地提权 蒸米@阿里移动安全 0x00 序 这段时间最火的漏洞当属阿联酋的人权活动人士被apt攻击所使用 ...

  7. React Native填坑之旅--Flow篇(番外)

    flow不是React Native必会的技能,但是作为正式的产品开发优势很有必要掌握的技能之一.所以,算是RN填坑之旅系列的番外篇. Flow是一个静态的检查类型检查工具,设计之初的目的就是为了可以 ...

  8. 可视化(番外篇)——在Eclipse RCP中玩转OpenGL

    最近在看有关Eclipse RCP方面的东西,鉴于Gephi是使用opengl作为绘图引擎,所以,萌生了在Eclipse RCP下添加画布,使用opengl绘图的想法,网上有博文详细介绍这方面的内容, ...

  9. 可视化(番外篇)——SWT总结

    本篇主要介绍如何在SWT下构建一个应用,如何安装SWT Designer并破解已进行SWT的可视化编程,Display以及Shell为何物.有何用,SWT中的常用组件.面板容器以及事件模型等. 1.可 ...

  10. 番外特别篇之 为什么我不建议你直接使用UIImage传值?--从一个诡异的相册九图连读崩溃bug谈起

    关于"番外特别篇" 所谓"番外特别篇",就是系列文章更新期间内,随机插入的一篇文章.目前我正在更新的系列文章是 实现iOS图片等资源文件的热更新化.但是,这两天 ...

随机推荐

  1. 剑指offer-面试题47-礼物的最大价值-动态规划

    /* 题目: 给定一个m*n的棋盘,每格放一个礼物(每个礼物的值大于0), 从左上角出发,向下或向右走到达右下角,得到的礼物和最大. */ /* 思路: f(i,j)=max[f(i-1,j),f(i ...

  2. PIE-SDK For C++矢量数据的投影转换

    1.功能简介 目前在地理信息领域中数据包括矢量和栅格两种数据组织形式,每一种数据都可以对投影进行转换,目前PIE SDK支持矢量和栅格数据的投影转换功能,下面对矢量数据的投影转换功能进行介绍. 2.功 ...

  3. 抛弃VMware吧,使用Win10自带的Hyper-V创建虚拟机

    个人博客 地址:https://www.wenhaofan.com/article/20190619221449 介绍 Hyper-V是微软提出的一种系统管理程序虚拟化技术,能够实现桌面虚拟化. 启动 ...

  4. 使用nginx代理gogs遇到推送代码错误的问题(RPC failed; HTTP 413 curl 22 The requested URL returned error: 413)

    前提 代码管理我是用Gogs.Git,前些阵子使用Nginx将git.balabiu.com反向代理到了Gogs的默认端口,其他二级域名准备做其他使用, 导致上报代码出现了错误. 问题 推送代码报错误 ...

  5. PAT (Basic Level) Practice (中文)1087 有多少不同的值 (20 分) (set)

    当自然数 n 依次取 1.2.3.…….N 时,算式 ⌊ 有多少个不同的值?(注:⌊ 为取整函数,表示不超过 x 的最大自然数,即 x 的整数部分.) 输入格式: 输入给出一个正整数 N(2). 输出 ...

  6. 04、extern引用全局变量

    这里强调一点就是关extern的声明: extern在声明中最主要的作用就是告诉编译器别的文件引用了全局变量XXXX. 举例: 有一个工程名字叫 Project1. Project1下面有两个.cpp ...

  7. 844. 走迷宫(bfs模板)

    给定一个n*m的二维整数数组,用来表示一个迷宫,数组中只包含0或1,其中0表示可以走的路,1表示不可通过的墙壁. 最初,有一个人位于左上角(1, 1)处,已知该人每次可以向上.下.左.右任意一个方向移 ...

  8. 洛谷 pP2708 硬币翻转

    题目描述 从前有很多个硬币摆在一行,有正面朝上的,也有背面朝上的.正面朝上的用1表示,背面朝上的用0表示.现在要求从这行的第一个硬币开始,将前若干个硬币一起翻面,问如果要将所有硬币翻到正面朝上,最少要 ...

  9. LaTeX技巧005:定制自己炫酷的章节样式实例

    示例一: 实现代码: \usepackage[Lenny]{fncychap} 示例二: 实现代码: \usepackage[avantgarde]{quotchap} \renewcommand\c ...

  10. 1.什么是 Docker

    官网地址:https://www.docker.com/ Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud ...